Card formats output by Autocoder and the "compress" SPS postprocessor. Van Snyder. 1 September 2005. Autocoder: The first two cards are a clear core routine. Different routines are emitted for different size machines. For 4k and below, they use the Add instruction to modify the area to be cleared. Above 4K, they use the Modify Add instruction. None of them use SBR. These cards can be stripped off if it is not desired to clear core before loading the program. Here's the one for 1.4K, 2K or 4K. The size has to be punched in 27-29 of the second card. The lines with 1's, 2's and 3's indicate where word marks are or will be. 1 indicates a word mark in the read area. 2 indicates a word mark in code that gets loaded elsewhere. 3 indicates a word mark that serves both purposes (it gets copied from the read area by an L instruction). 4 indicates a transient word mark (gets set and cleared). This is used to subtract 100 from the address. ....5...10...15...20...25...30...35...40...45...50...55...60...65...70. ,008015,019026,030,034041,045,053,0570571026 1 1 1 1 1 1 1 1 1 1 1 L068112,102106,113/101099/I99,027A070028)027B0010270B0261,001/001113I0 1 1 1 1 14 1 1 1 1 1 32 2 2 Here's the one for 8K, 12K or 16K. The size has to be punched in 27-29 of the second card. ....5...10...15...20...25...30...35...40...45...50...55...60...65...70.. ,008015,022026,030037,044,049,053053N000000N00001026 1 1 1 1 1 1 1 1 1 1 L068116,105106,110117B101/I9I#071029C029056B026/B001/0991,001/001117I0? 1 1 1 1 1 1 1 1 1 3 22 2 2 The third card is a bootstrap card. It sets word marks for loading the rest of the cards. ....5...10...15...20...25...30...35...40...45...50...55...60...65...70.. ,008015,022029,036040,047054,061068,072/061039 ,0010011040 1 1 1 1 1 1 1 1 1 1 1 1 "Load" cards have executable code in 40-71 that loads data in 1-39, and then sets word marks (or clears the one set by the load instruction for fields that ought not to have one). This code is always executed starting in column 40. 40-46 is always a load instruction, and 47-53 is either a two-address Set Word Mark instruction or Clear Word Mark instruction (in case the word mark copied by the load instruction shouldn t be set). 54-67 are always two two-address Set Word Mark instructions. If word marks aren't needed, ",040040" (set word marks at 40 and 40) are plugged in. Each load card has "1040" (Read and branch to 40) in 68-71. An "EX" card has "N000000" (NOP) in 40-46, ",040040" (set word marks in 40 and 40) repeated three times in 47-67, and "Bxxx" (branch to xxx) in 68-71, where "xxx" is the entry address mentioned on the EX card in the source deck. This is used to execute overlays. The standard Autocoder distribution includes an OVLAY macro (SW 40,47; R 40). The next two cards set word marks and prepared to load more load cards: ....5...10...15...20...25...30...35...40...45...50...55...60...65...70.. ,015022)024056,029036,040047,0540611001,001008B001 ,001008B001 1 1 1 1 1 1 1 1 x y x 1 1 ,068072)063067/061039 ,0010011040 1 1 1 1 1 1 1 1 1 1 1 1 The first of these works either with an Autocoder "load another overlay" routine (SW 40,47; R 40), or an SPS one (SW 56,63; SW 67; R 56). It sets word marks at "x" and clears the one at "y" after code in 40-66 has executed. The reason for both is that it is allowed to embed SPS source code, perhaps from legacy routines that load overlays, in Autocoder source decks. The "End" card has "/xxx080" (clear 0-80 and branch to xxx) in 40-46. "xxx" is the start address mentioned on the END card in the source deck. SPS: The first two cards are a clear core routine. Different routines are emitted for different size machines. For 4k and below, they use the Add instruction to modify the area to be cleared. Above 4K, they use the Modify Add instruction. None of them use SBR. These cards can be stripped off if it is not desired to clear core before loading the program. Here's the one for a 4K machine. I suspect it worked for 1.4K and 2K as well, by punching the size in 27-29 of the second card. ....5...10...15...20...25...30...35...40...45...50...55...60...65...70... ,008015,022026,030034,041,045,053,0570731026 1 1 1 1 1 1 1 1 1 1 1 1 L072116,110106,105117B101/I99,027A074028)027B0010270B026/0991,001/001117I0 1 1 1 1 1 1 1 1 1 1 1 1 The third card is a bootstrap card. It sets word marks for loading the rest of the cards. ....5...10...15...20...25...30...35...40...45...50...55...60...65...70... ,008015,022029,056063/056029 ,0240671056 2 2 2 2 4 2 1 1 1 "Load" cards have executable code in 39-74 that loads data in 1-38, and then sets word marks (or clears the one set by the load instruction for fields that ought not to have them). This code is always executed starting in column 56. 56-62 always contains a load instruction. 63-74 contains three four-character instructions that can be Set Word Mark, Clear Word Mark, Read and Branch (always branches to 56), or Branch instructions. If execution reaches 71, and more word marks are needed, 71-74 contains "B039" (Branch to 39). 39-54 contains four four-character instructions that can be Set Word Mark or Read and Branch (again always 1056). If the need to set word marks fills up every available four-character instruction space, column 55 contains "1" (read a card), which falls through to column 56 of the next card after it's read. I don't remember how EX cards in the source deck got represented, but I suspect they had "N000000" in 56-62 and "Bxxx" in 63-66. The "End" card has "/xxx080" (clear 0-80 and branch to xxx) in 56-62. "xxx" is the start address mentioned on the END card in the source deck.