| 1 | * (O$PB) - COPY OF O$AB |
| 2 | * |
| 3 | * |
| 4 | * COMPUTER: H316 |
| 5 | * |
| 6 | * PROGRAM CATEGORY: I/O LIBRARY |
| 7 | * |
| 8 | * PROGRAM TITLE: O$PB (O$PS,O$PLDR) |
| 9 | * TO PUNCH BINARY TAPE ON THE HIGH SPEED PUNCH |
| 10 | * |
| 11 | * REVISIONS: |
| 12 | * 1.0 (2005-02.04) |
| 13 | * |
| 14 | * AUTHOR |
| 15 | * |
| 16 | * PHILIPP HACHTMANN |
| 17 | * |
| 18 | * |
| 19 | * |
| 20 | * STORAGE |
| 21 | * |
| 22 | * 150 (OCTAL) |
| 23 | * 104 (DECIMAL) |
| 24 | * |
| 25 | * |
| 26 | * USE |
| 27 | * |
| 28 | * CALL O$PB PTP BINARY PUNCH ROUTINE |
| 29 | * DAC DATA DATA ADDRESS |
| 30 | * NORMAL RETURN |
| 31 | * |
| 32 | * CALL O$PS END OF MESSAGE ROUTINE |
| 33 | * |
| 34 | * CALL O$PLDR PUNCH BLANK LEADER |
| 35 | * |
| 36 | * |
| 37 | * CALL O$AB - |
| 38 | * |
| 39 | * THIS ROUTINE IS USED TO PUNCH BINARY PAPER TAPE, THE ADDRESS |
| 40 | * OF THE BINARY WORD COUNT APPEARS IN THE VARIABLE FIELD (DATA) |
| 41 | * FOLLOWING THE CALL PSEUDO-OP. THE BINARY INFORMATION TO BE |
| 42 | * PUNCHED MUST START AT DATA+1. |
| 43 | * THE NORMAL RETURN IS TAKEN WHEN THE NUMBER OF WORDS SPECIFIED |
| 44 | * BY THE WORD COUNT HAS BEEN PUNCHED. |
| 45 | * |
| 46 | * CALL O$AS - |
| 47 | * |
| 48 | * EOM (203 OCT), X-OFF (223 OCT), AND RUBOUT (377 OCT) CHARACTERS |
| 49 | * ARE PUNCHED WHEN THIS ROUTINE IS USED. |
| 50 | * RETURN IS TO THE CALLING PROGRAMM |
| 51 | * |
| 52 | * CALL O$PLDR - |
| 53 | * |
| 54 | * PUNCH BLANK LEADER. NORMAL RETURN. |
| 55 | * |
| 56 | * |
| 57 | * METHOD |
| 58 | * |
| 59 | * BINARY INFORMATION IS PUNCHED AS IST APPEARS IN THE BUFFER (DATA+1). |
| 60 | * EACH RECORD ON PAPER TAP EWILL HAVE THE FOLLOWING FORMAT: |
| 61 | * START OF MESSAGE, BINARY INFORMATION, X-OFF, TWO LEADER CHARS. |
| 62 | * |
| 63 | * |
| 64 | * |
| 65 | ******************************************************************************** |
| 66 | * |
| 67 | * |
| 68 | SUBR O$PB |
| 69 | SUBR O$PS |
| 70 | SUBR O$PLDR,PLDR |
| 71 | REL |
| 72 | O$PB PZE ** PTP PUNCH ENTRY |
| 73 | STX XR SAVE INDEX REGISTER FROM CALLING PROGRAMM |
| 74 | OCP 2 ACTIVATE PAPER TAPE PUNCH |
| 75 | * |
| 76 | LDA* O$PB WORD COUNT ADDRESS |
| 77 | BIN5 STA TMP |
| 78 | LDA* TMP |
| 79 | TCA TWOS COMPLEMENT BINARY WORD COUNT |
| 80 | STA 0 |
| 81 | LDA* O$PB BINARY DATA ADDRESS |
| 82 | ADD* TMP DATA ADDRESS+WORD COUNT |
| 83 | ADD ='40001 |
| 84 | STA DATA DATA ADDRESS + WORD COUNT, 1 |
| 85 | JST STP |
| 86 | LDA ='201 BEGINNING OF MESSAGE |
| 87 | JST BCD8 |
| 88 | BIN6 LDA* DATA BINARY WORD TO BE PUNCHED |
| 89 | LRL 16 B-REG: BINARY WORD TO BE PUNCHED |
| 90 | JST PNCH GO PUNCH BINARY WORD |
| 91 | IRS 0 |
| 92 | JMP BIN6 CONTINUE PUNCHING BINARY CHARACTERS |
| 93 | JMP RETN LEAVE ROUTINE |
| 94 | PNCH PZE ** CONVERT AND PUNCH BINARY CHARACTERS |
| 95 | LLL 4 |
| 96 | JST CHAR PUNCH BINARY WORD (1-4) |
| 97 | JST CHAR PUNCH BINARY WORD (5-10) |
| 98 | JST CHAR PUNCH BINARY WORD (11-16) |
| 99 | JMP* PNCH RETURN FOR ADDITIONAL WORDS |
| 100 | CHAR PZE ** |
| 101 | LGL 11 |
| 102 | CAS WRU |
| 103 | JMP *+2 |
| 104 | LDA WRUX |
| 105 | CAS LF |
| 106 | JMP *+2 |
| 107 | LDA LFX |
| 108 | CAS XON |
| 109 | JMP *+2 |
| 110 | LDA XONX |
| 111 | CAS XOFF |
| 112 | JMP *+2 |
| 113 | LDA XOFX |
| 114 | SRC |
| 115 | ERA FOUR |
| 116 | ALR 5 |
| 117 | OUT JST BCD8 |
| 118 | LLL 6 |
| 119 | JMP* CHAR |
| 120 | WRU OCT 024000 |
| 121 | WRUX OCT 160003 |
| 122 | LF OCT 050000 |
| 123 | LFX OCT 164003 |
| 124 | XON OCT 104000 |
| 125 | XONX OCT 170003 |
| 126 | XOFF OCT 114000 |
| 127 | XOFX OCT 174003 |
| 128 | FOUR OCT 000004 |
| 129 | BCD8 PZE ** ASCII PUNCH ROUTINE |
| 130 | OTA 2 |
| 131 | JMP *-1 |
| 132 | JMP* BCD8 |
| 133 | RETN LDA ='223 X-OFF |
| 134 | JST BCD8 |
| 135 | LDA ='377 RUBOUT CHARACTER |
| 136 | JST BCD8 LEADER CHAR. |
| 137 | IRS O$PB INCREMENT FOR NORMAL RETURN |
| 138 | LDA XR RESTORE INDEX FOR CALLING PROGRAMM |
| 139 | STA 0 |
| 140 | JMP* O$PB |
| 141 | * |
| 142 | O$PS PZE ** PUNCH END OF MESSAGE ENTRY |
| 143 | JST STP |
| 144 | LDA ='203 PUNCH END OF MESSAGE |
| 145 | JST BCD8 |
| 146 | LDA ='223 PUNCH X-OFF |
| 147 | JST BCD8 |
| 148 | LDA ='377 RUBOUT CHARACTER |
| 149 | JST BCD8 LEADER CHAR. |
| 150 | JMP* O$PS RETURN TO CALLING PROGRAMM |
| 151 | * |
| 152 | STP DAC ** |
| 153 | LDA ='222 |
| 154 | JST BCD8 |
| 155 | LDA ='377 |
| 156 | JST BCD8 |
| 157 | JMP* STP |
| 158 | DATA PZE 0 |
| 159 | XR PZE 0 |
| 160 | TMP PZE 0 |
| 161 | FIN |
| 162 | * |
| 163 | LDRC DEC 150 LENGTH OF LEADER |
| 164 | PLDR DAC ** PUNCH LEADER ENTRY |
| 165 | STX XR SAVE X REGISTER |
| 166 | LDA LDRC LENGTH OF LEADER |
| 167 | TCA TWOS COMPLEMENT OF LEADER |
| 168 | STA 0 |
| 169 | OCP 2 |
| 170 | CRA |
| 171 | LD1 OTA 2 PUNCH! |
| 172 | JMP *-1 |
| 173 | IRS 0 |
| 174 | JMP LD1 |
| 175 | LDX XR RESTORE X REGISTER |
| 176 | JMP* PLDR RETURN |
| 177 | * |
| 178 | END O$PB |