Previous File   Multiple Pages   Next File

* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 1

0001 * NAME BASIC-PTLB DOC. ??????????? REV. ? 0002 * 0003 * 0004 * DESCRIPTION ASR AND PAPER TAPE I/O LIBRARY FOR STAND-ALONE 0005 * VERSION OF BASIC-16 0006 * 0007 * 0008 * REVISION HISTORY 0009 * REV. DATE ECO NO. 0010 * A RELEASED 0011 * 0012 * 0013 * 0014 * 0015 * 0016 * DOCUMENTATION REFERENCES 0017 * TITLE DOC. NO. 0018 * BASIC-16 USER'S MANUAL 70130072543 0019 * 0020 * 0021 * 0022 * 0023 * 0024 * THE SOURCE LISTING FOR THE I/O LIBRARY SUPPORTING BASIC-16 IS 0025 * NOT AVAILABLE. THE CODE HERE WAS OBTAINED BY DISASSEMBLING THE 0026 * SLST. AS A RESULT INTERNAL SYMBOL NAMES AND COMMENTS ARE NOT 0027 * ORIGINAL. EXTERNAL SYMBOLS ARE CORRECT SINCE, WHEN ASSEMBLED, 0028 * THIS CODE LINKS WITH THE OTHER MODULES OF BASIC-16 RESULTING IN 0029 * A BINARY MATCH WITH THE SLST TAPE. 0030 ************************************************************************ 0031 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 2

0032 * 0033 * 0034 SUBR IPUT INPUT LINE 0035 SUBR INA1 INPUT ONE CHARACTER 0036 SUBR OTA1 OUTPUT ONE CHARACTER 0037 SUBR BRKC PROGRAM BREAK CHECK 0038 SUBR LFCR ASR LINE ADVANCE 0039 SUBR ITAPE,ITP INITIALIZE PAPER TAPE PUNCHING 0040 SUBR ETAPE,ETP TERMINATE PAPER TAPE PUNCHING 0041 * 0042 * 0043 EXT SBP PRIMARY BYTE FETCH POINTER 0044 EXT DBP PRIMARY BYTE STORE POINTER 0045 EXT BRKF PROGRAM BREAK FLAG 0046 EXT LODF LOAD MODE FLAG 0047 EXT LSTF LIST MODE FLAG 0048 EXT CPOS CURRENT CARRIAGE POSITION COUNTER 0049 EXT C1 0050 EXT C215 0051 EXT C240 0052 EXT C300 0053 EXT C337 0054 EXT M100 0055 EXT SCHR CHARACTER STORE ROUTINE 0056 EXT TYPE MESSAGE TYPER 0057 * 0058 * 0059 REL 0060 * 0061 * 0062 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 3

0063 * 0064 * 0065 * INPUT ROUTINE 0066 * 0067 * CALLING SEQUENCE: 0068 * 0069 * JST IPUT PREFIX CHARACTER IN A REGISTER 0070 * DAC BUF ADDRESS OF THE INPUT BUFFER 0071 * ......RETURN INPUT LINE PLACED IN BUFFER WITH SBP 0072 * SET TO START OF BUFFER 0073 * 0074 * 0075 * THE PREFIX CHARACTER IS SAVED, AND THE LOAD MODE FLAG IS 0076 * TESTED TO DETERMINE IF INPUT IS BEING TAKEN FROM THE ASR OR THE 0077 * HIGH SPEED PAPER TAPE READER. IF INPUT IS FROM THE ASR, THE PRE- 0078 * FIX CHARACTER IS RETRIEVED AND PRINTED, OTHERWISE (INPUT IS FROM 0079 * THE READER) THE PAPER TAPE READER IS STARTED. THE BUFFER ADDRESS 0080 * ARGUMENT IS LOADED AND THE BYTE POINTERS DBP, USED TO PLACE CHAR- 0081 * ACTERS INTO THE BUFFER (VIA 'SCHR'), AND SBP, USED TO READ CHAR- 0082 * ACTERS FROM THE BUFFER, ARE INITIALIZED. CHARACTERS ARE READ USING 0083 * THE 'INA1' ROUTINE AND ARE TESTED: IF THE CHARACTER IS AN 'AT' 0084 * SYMBOL, THEN THE WHOLE LINE READ SO FAR IS DISCARDED AND THE 0085 * ROUTINE CALLS 'LFCR' TO MOVE TO A NEW LINE, AND LOOPS TO READ A NEW 0086 * INPUT LINE. IF THE CHARACTER IS A 'LEFT-ARROW' CHARACTER, THEN THE 0087 * PREVIOUS CHARACTER IS DISCARDED. IF THE CHARACTER IS 'CARRIAGE- 0088 * RETURN' IT IS PLACED IN THE BUFFER, THE TAPE READER IS STOPPED, AND 0089 * 'LFCR' CALLED TO MOVE TO A NEW LINE BEFORE THE ROUTINE RETURNS. 0090 * OTHERWISE, THE CHARACTER IS PLACED IN THE BUFFER, AND THE ROUTINE 0091 * LOOPS FOR THE NEXT CHARACTER. 0092 * 0093 * 0094 00000 0 000000 IPUT DAC ** 0095 00001 000201 IAB SAVE PREFIX CHARACTER 0096 00002 0 02 00000 IP01 LDA LODF TEST LOAD MODE FLAG - PAPERTAPE? 0097 00003 101040 SNZ NO - SKIP TO INPUT FROM ASR 0098 00004 0 01 00047 JMP IP09 JUMP TO START TAPE READER 0099 00005 000201 IAB RECOVER PREFIX CHARACTER 0100 00006 0 10 00051 JST OTA1 PRINT IT 0101 00007 100000 SKP AVOID NEWLINE ON FIRST ATTEMPT 0102 00010 0 10 00124 IP02 JST LFCR 0103 00011 -0 02 00000 IP03 LDA* IPUT GET BUFFER ADDRESS 0104 00012 0414 77 LGL 1 CONVERT TO BYTE ADDRESS 0105 00013 0 04 00000 STA SBP INITIALIZE FETCH POINTER 0106 00014 0 04 00000 IP04 STA DBP SAVE STORE POINTER 0107 00015 0 10 00074 IP05 JST INA1 0108 00016 0 03 00167 ANA C177 IGNORE PARITY BIT 0109 00017 0 05 00166 ERA C200 FORCE PARITY TO ONE 0110 00020 0 11 00000 CAS C215 CARRIAGE-RETURN? 0111 00021 0 01 00024 JMP IP06 NO - GO TO NEXT TEST 0112 00022 0 01 00042 JMP IP08 YES - FINISH UP AND RETURN
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 4

0113 00023 0 01 00015 JMP IP05 0114 00024 0 11 00000 IP06 CAS C300 IS IT THE 'AT' SYMBOL? 0115 00025 100000 SKP NO 0116 00026 0 01 00010 JMP IP02 YES - DISCARD INPUT SO FAR AND START AGAIN 0117 00027 0 11 00000 CAS C337 IS IT LEFT-ARROW? 0118 00030 0 01 00015 JMP IP05 NO, IT'S GREATER - IGNORE CHARACTER 0119 00031 0 01 00036 JMP IP07 YES - DELETE LAST CHARACTER 0120 00032 0 11 00000 CAS C240 IS IT GREATER THAN OR EQUAL TO SPACE? 0121 00033 101000 NOP YES (GREATER) 0122 00034 0 10 00000 JST SCHR YES - STORE THE CHARACTER 0123 00035 0 01 00015 JMP IP05 LOOP FOR NEXT CHARACTER 0124 00036 0 02 00000 IP07 LDA DBP LOAD CURRENT POINTER 0125 00037 0 11 00000 CAS SBP IS BEYOND START OF BUFFER? 0126 00040 0 07 00000 SUB C1 YES - DECREMENT 0127 00041 0 01 00014 JMP IP04 LOOP FOR NEXT CHARACTER 0128 * 0129 00042 0 10 00000 IP08 JST SCHR SAVE FINAL CARRIAGE-RETURN 0130 00043 14 0101 OCP '0101 STOP TAPE READER 0131 00044 0 10 00124 JST LFCR PRINT NEWLINE 0132 00045 0 12 00000 IRS IPUT SET-UP RETURN ADDRESS 0133 00046 -0 01 00000 JMP* IPUT RETURN 0134 * 0135 00047 14 0001 IP09 OCP '0001 START TAPE READER 0136 00050 0 01 00011 JMP IP03 JUMP TO INITIALIZE BUFFER 0137 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 5

0138 * 0139 * 0140 * OUTPUT ONE CHARACTER ROUTINE 0141 * 0142 * CALLING SEQUENCE: 0143 * 0144 * JST OTA1 CHARACTER IN A REGISTER 0145 * ......RETURN 0146 * 0147 * 0148 * THE CHARACTER IS SAVED, AND THE LIST MODE FLAG IS TESTED TO 0149 * DETERMINE IF OUTPUT IS BEING SENT TO THE ASR OR THE HIGH SPEED 0150 * PAPER TAPE PUNCH. THE CHARACTER IS RETRIEVED AND SENT TO THE 0151 * SELECTED OUTPUT DEVICE. 'CPOS', WHICH RECORDS THE CURRENT 0152 * CARRIAGE POSITION, IS INCREMENTED AND 'BRKC' CALLED TO CHECK 0153 * WHETHER THE BREAK FLAG HAS BEEN SET, BEFORe THE ROUTINE 0154 * RETURNS. 0155 * 0156 * 0157 00051 0 000000 OTA1 DAC ** 0158 00052 0 04 00073 STA OT03 SAVE CHARACTER 0159 00053 0 02 00000 LDA LSTF LIST MODE FLAG. ASR? 0160 00054 100040 SZE YES - SKIP TO OUTPUT ON ASR 0161 00055 0 01 00067 JMP OT02 JUMP TO PUNCH OUTPUT 0162 00056 0 02 00073 LDA OT03 RECOVER CHARACTER 0163 00057 34 0104 SKS '0104 WAIT UNTIL ASR NOT BUSY 0164 00060 0 01 00057 JMP *-1 0165 00061 14 0104 OCP '0104 ENABLE ASR IN OUTPUT MODE 0166 00062 74 0004 OTA '0004 OUTPUT CHARACTER 0167 00063 0 01 00062 JMP *-1 0168 00064 0 12 00000 OT01 IRS CPOS INCREMENT CARRIAGE POSITION COUNTER 0169 00065 0 10 00117 JST BRKC CHECK BREAK FLAG 0170 00066 -0 01 00051 JMP* OTA1 0171 * 0172 00067 0 02 00073 OT02 LDA OT03 RECOVER CHARACTER 0173 00070 74 0002 OTA '0002 OUTPUT TO PUNCH 0174 00071 0 01 00070 JMP *-1 0175 00072 0 01 00064 JMP OT01 0176 * 0177 00073 000000 OT03 BSZ 1 0178 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 6

0179 * 0180 * 0181 * INPUT ONE CHARACTER ROUTINE 0182 * 0183 * CALLING SEQUENCE: 0184 * 0185 * JST INA1 0186 * ......RETURN CHARACTER IN A REGISTER 0187 * 0188 * 0189 * THE LOAD MODE FLAG IS TESTED TO DETERMINE IF INPUT IS BEING 0190 * TAKEN FROM THE ASR OR THE HIGH SPEED PAPER TAPE READER. IF INPUT 0191 * IS FROM THE ASR, THE ASR IS ENABLED IN INPUT MODE AND THE CHARACTER 0192 * IS READ. EACH TIME THAT THE CHARACTER IS NOT AVAILABLE FROM THE 0193 * ASR, THE 'BRKC' ROUTINE IS CALLED TO CHECK THE BREAK FLAG. IF INPUT 0194 * IS FROM THE PAPER TAPE READER, SENSE SWITCH 2 IS TESTED, IF IT IS 0195 * SET THEN INPUT FROM THE TAPE READER IS ABANDONED, THE LOAD MODE 0196 * FLAG IS SET SO THAT SUBSEQUENT INPUT IS FROM THE ASR, AND THE 0197 * READER IS STOPPED, AND THE ROUTINE JUMPS BACK INTO THE 'IPUT' 0198 * ROUTINE. IN THE NORMAL CASE (WHEN NEITHER THE BREAK FLAG OR SS2 0199 * ARE SET) THE ROUTINE EXITS WITH THE CHARACTER THAT HAS BEEN READ IN 0200 * THE A REGISTER. 0201 * 0202 * 0203 00074 0 000000 INA1 DAC ** 0204 00075 0 02 00000 LDA LODF TEST LOAD MODE FLAG - PAPERTAPE? 0205 00076 101040 SNZ NO - SKIP TO INPUT FROM ASR 0206 00077 0 01 00107 JMP IN01 JUMP TO INPUT FROM READER 0207 00100 34 0104 SKS '0104 WAIT UNTIL ASR NOT BUSY 0208 00101 0 01 00100 JMP *-1 0209 00102 14 0004 OCP '0004 ENABLE ASR IN INPUT MODE 0210 00103 0 10 00117 JST BRKC 0211 00104 54 1004 INA '1004 CLEAR A AND INPUT FROM ASR 0212 00105 0 01 00103 JMP *-2 0213 00106 -0 01 00074 JMP* INA1 0214 00107 100010 IN01 SR2 SENSE SWITCH 2 SET? 0215 00110 0 01 00114 JMP IN02 YES - JUMP TO STOP READER 0216 00111 54 1001 INA '1001 CLEAR A AND INPUT FROM READER 0217 00112 0 01 00107 JMP *-3 0218 00113 -0 01 00074 JMP* INA1 0219 * 0220 00114 0 12 00000 IN02 IRS LODF 0221 00115 14 0101 OCP '0101 STOP READER 0222 00116 0 01 00002 JMP IP01 JUMP BACK INTO IPUT ROUTINE 0223 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 7

0224 * 0225 * 0226 * PROGRAM BREAK CHECK ROUTINE 0227 * 0228 * CALLING SEQUENCE: 0229 * 0230 * JST BRKC 0231 * ......RETURN 0232 * 0233 * 0234 * SENSE SWITCH ONE IS TESTED. IF IT IS NOT SET, THEN THE 0235 * ROUTINE RETURNS IMMEDIATELY, OTHERWISE THE BREAK FLAG, BRKF, IS 0236 * SET NON-ZERO. 0237 * 0238 * 0239 00117 0 000000 BRKC DAC ** 0240 00120 100020 SR1 SENSE SWITCH 1 SET? 0241 00121 0 12 00000 IRS BRKF YES - SET BREAK FLAG 0242 00122 -0 01 00117 JMP* BRKC NO - RETURN 0243 00123 0 01 00121 JMP *-2 IF BRKF REACHES ZERO, SET AGAIN 0244 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 8

0245 * 0246 * 0247 * ASR LINE ADVANCE ROUTINE 0248 * 0249 * CALLING SEQUENCE: 0250 * 0251 * JST LFCR 0252 * ......RETURN 0253 * 0254 * 0255 * THE LOAD MODE FLAG IS TESTED TO DETERMINE IF INPUT IS BEING 0256 * TAKEN FROM THE ASR OR THE HIGH SPEED PAPER TAPE READER. IF INPUT 0257 * IS FROM THE PAPER TAPE READER, THE ROUTINE'S ONLY ACTION IS TO 0258 * RESET THE CARRIAGE POSITION COUNTER, CPOS. OF INPUT IS FROM THE 0259 * ASR, THE ROUTINE TESTS THE LIST MODE FLAG TO DETERMINE IF OUTPUT IS 0260 * BEING SENT TO THE ASR OR THE HIGH SPEED PAPER TAPE PUNCH, SELECTING 0261 * THE APPROPRIATE END-OF-LINE SEQUENCE. FOR ASR: SIMPLY CR-LF, FOR 0262 * PAPER TAPE PUNCH: CR-STOP-DEL-LF. THE SELECTED SEQUENCE IS TYPED, 0263 * THE CARRIAGE POSITION COUNTER, CPOS, IS RESET AND THE ROUTINE 0264 * RETURNS. 0265 * 0266 * 0267 00124 0 000000 LFCR DAC ** 0268 00125 0 02 00000 LDA LODF TEST LOAD MODE FLAG - PAPERTAPE? 0269 00126 101040 SNZ NO - SKIP (INPUT FROM ASR) 0270 00127 0 01 00135 JMP LF01 IF INPUT FROM READER, DO NOTHING 0271 00130 0 35 00000 LDX LSTF LIST MODE FLAG 0272 00131 1 02 00137 LDA LF02,1 0273 00132 0 04 00134 STA *+2 0274 00133 0 10 00000 JST TYPE 0275 00134 0 00 00000 *** ** 0276 00135 0 04 00000 LF01 STA CPOS CURRENT CARRIAGE POSITION COUNTER 0277 00136 -0 01 00124 JMP* LFCR 0278 * 0279 00137 0 000144 LF02 DAC EOLA 0280 00140 0 000141 DAC EOLP 0281 * 0282 00141 106623 EOLP OCT 106623 CR-STOP 0283 00142 177612 OCT 177612 DEL-LF 0284 00143 000000 OCT 0 0285 * 0286 00144 106612 EOLA OCT 106612 CR-LF 0287 00145 000000 OCT 0 0288 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 9

0289 * 0290 * 0291 * INITIALIZE PAPER TAPE PUNCHING ROUTINE 0292 * 0293 * CALLING SEQUENCE: 0294 * 0295 * JST ITAPE 0296 * ......RETURN 0297 * 0298 * 0299 * THE PAPER TAPE PUNCH IS STARTED AND LEADER IS PUNCHED. 0300 * 0301 * 0302 00146 0 000000 ITP DAC ** ITAPE ENTRY 0303 00147 14 0002 OCP '0002 START PUNCH 0304 00150 0 10 00156 JST PLDR PUNCH LEADER 0305 00151 -0 01 00146 JMP* ITP 0306 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 10

0307 * 0308 * 0309 * TERMINATE PAPER TAPE PUNCHING ROUTINE 0310 * 0311 * CALLING SEQUENCE: 0312 * 0313 * JST ETAPE 0314 * ......RETURN 0315 * 0316 * 0317 * LEADER IS PUNCHED AND THE PAPER TAPE PUNCH IS STOPPED. 0318 * 0319 * 0320 00152 0 000000 ETP DAC ** 0321 00153 0 10 00156 JST PLDR PUNCH LEADER 0322 00154 14 0102 OCP '0102 STOP PUNCH 0323 00155 -0 01 00152 JMP* ETP 0324 EJCT
* NAME BASIC-PTLB DOC. ??????????? REV. ? PAGE 11

0325 * 0326 * 0327 * PUNCH LEADER 0328 * 0329 * CALLING SEQUENCE: 0330 * 0331 * JST PLDR 0332 * ......RETURN 0333 * 0334 * 0335 * '100 ZERO FRAMES ARE PUNCHED (6.4 INCHES). 0336 * 0337 * 0338 00156 0 000000 PLDR DAC ** PUNCH LEADER 0339 00157 0 35 00000 LDX M100 INITIALIZE COUNTER 0340 00160 140040 CRA OUTPUT ZERO FRAME 0341 00161 74 0002 OTA '0002 OUTPUT TO PUNCH 0342 00162 0 01 00161 JMP *-1 0343 00163 0 12 00000 IRS 0 INCREMENT COUNTER 0344 00164 0 01 00161 JMP *-3 LOOP IF NON-ZERO 0345 00165 -0 01 00156 JMP* PLDR RETURN WHEN COUNTER HAS REACHED ZERO 0346 * 0347 * 0348 00166 000200 C200 OCT 200 0349 00167 000177 C177 OCT 177 0350 * 0351 * 0352 END BRKC 000117 BRKF 000000E C1 000000E C177 000167 C200 000166 C215 000000E C240 000000E C300 000000E C337 000000E CPOS 000000E DBP 000000E EOLA 000144 EOLP 000141 ETP 000152 IN01 000107 IN02 000114 INA1 000074 IP01 000002 IP02 000010 IP03 000011 IP04 000014 IP05 000015 IP06 000024 IP07 000036 IP08 000042 IP09 000047 IPUT 000000 ITP 000146 LF01 000135 LF02 000137 LFCR 000124 LODF 000000E LSTF 000000E M100 000000E OT01 000064 OT02 000067 OT03 000073 OTA1 000051 PLDR 000156 SBP 000000E SCHR 000000E TYPE 000000E 0000 WARNING OR ERROR FLAGS DAP-16 MOD 2 REV. C 01-26-71
Previous File   Multiple Pages   Next File