/DISASSEMBLY PROGRAM; SA = 200 /ASR33 TELETYPE TAPE READER. /CONSTANTS & PROGRAM INTERTIES ON PAGE 0. BINDX=16 /BUFFER INDEX AINDX=17 /ADDRESS INDEX *20 OCT, 0 /OCTAL STORAGE ADRF, 0 /ADDR. FINDER CN4, 0-4 M7, 7 M777, 7000 M377, 377 ADC, 0 /ADDR. FINDER BEG, OUT CN2, 0-2 M77, 77 C240, 240 POCT, SOCT /TIE TO PRINT OCT SUBR. TEMP, 0 CNTR, 0 C2, 2 C4, 4 C10, 10 PROP, SROP /TIE WITH PRINT OPR. CODE SUBR. PRT, SRT /TIE WITH PRINT ON TELE SUBR. CN3, 0-3 STI, STEP NGRI, NGR NGR+6 FSWIT, 0 FPSWIT, 0 FPNTI, FPNT /FLOATING POINT OP. CODES M4407, -4407 /JMS I Z 7 READI, READ ENDTI, ENDT READ1I, READ1 BBBI, BBB SPCRI, SPCR SETI, SET OUT8I, OUT8 AAAI, AAA CRLFPI, CRLFP /OPERATION CODES OPC, 5641 /AND 0044 4164 /TAD 0044 6351 /ISZ 0072 4344 /DCA 0041 5552 /JMS 0063 5552 /JMP 0060 IZC, 0051 /I 0072 /Z /MICRO GROUP 1 MIC1, 5443 /CLA 0041 5443 /CLL 0054 5543 /CMA 0041 5543 /CML 0054 4151 /IAC 0043 4162 /RAL 0054 4162 /RAR 0062 6462 /RTL 0054 6462 /RTR 0062 NOC, 5756 /NOP 0060 /MICRO GROUP 2 MIC2, 5450 /HLT 0064 6357 /OSR 0062 5363 /SKP 0060 5663 /SNL 0054 7263 /SZA 0041 5563 /SMA 0041 7263 /SZL 0054 5663 /SNA 0041 6063 /SPA 0041 / I/O PRINT OCTAL ROUTINE OP6, TAD OCT JMS I POCT TAD ADC IAC DCA ADC JMP I BEG /GO TO STRT /STEP ADDR. FINDER ROUTINE STEP, 0 SNL JMP .+3 JMS I PROP JMP .+4 TAD ADRF TAD C2 DCA ADRF TAD TEMP RAR DCA TEMP ISZ CNTR JMP STEP+1 JMP I STEP END0, /LOC. END PAGE /SORT FIRST 3 BITS ROUTINE /DIFFERENTIATE BETWEEN REG. CODE & FLOATING POINT CODE *200 L00200, 6046 CLA CLL DCA SET DCA FPSWIT OSR SMA CLA JMP .+4 IAC DCA FSWIT /SET FLOAT PROG. INDIC. SKP DCA FSWIT JMS I Z CRLFPI /PRINT CR & LF STRT, JMP I Z READI /GO READ TAPE AAA, JMS SPCR /GO TO SPACE SUBR. TAD Z ADC JMS SOCT /PRINT OCTAL SUBR. JMP I Z BEG BBB, TAD Z ADC JMS SOCT /PRINT ADDR. TAD Z OCT JMS SOCT /PRINT OCTAL CONTENTS TAD FPSWIT SNA CLA JMP .+3 TAD Z OCT JMP .+4 TAD Z OCT SNA JMP OP6+2 CLL RTL RTL AND Z M7 DCA Z TEMP TAD Z TEMP TAD CN6 SPA JMP I OP5 /GO TO OPR. CODE DCA Z TEMP TAD Z FPSWIT SZA CLA JMP I Z FPNTI /GO TO F.P. CODE ROUTINE TAD Z TEMP SNA CLA JMP Z OP6 /GO TO I/O CODE TAD Z OCT IAC SNA CLA JMP OP6+2 TAD Z OCT AND OP5 /400 SNA JMP I OP71 /GO TO MICRO 1 JMP I OP72 / GO TO MICRO 2 /SUBROUTINES /READ TELE 1 SUBR. READ1, 0 6031 /SKIP IF FLAG = 1 JMP .-1 JMP I READ1 /CR & LF SUBR. CRLFP, 0 TAD CR JMS I Z PRT TAD LF JMS I Z PRT JMP PCRLF /SET MARGIN SUBROUTINE SPCR, 0 TAD CN13 DCA Z CNTR TAD C240 JMS I Z PRT ISZ Z CNTR JMP .-3 TAD AST JMS I Z PRT JMP I SPCR /PRINT OCTAL SUBROUTINE SOCT, 0 DCA Z TEMP TAD Z CN4 DCA Z CNTR TAD Z TEMP CLL RAL REP, RTL RAL DCA Z TEMP TAD Z TEMP AND Z M7 TAD C260 JMS I Z PRT TAD Z TEMP ISZ Z CNTR JMP REP CLA TAD Z CN2 DCA Z CNTR TAD C240 JMS I Z PRT ISZ Z CNTR JMP .-3 CLA JMP I SOCT /LOOK FOR END OF TAPE ROUTINE ENDT, CLA TAD SET SNA CLA /END OF TAPE? JMP STRT /NO JMP I Z OUT8I /YES /CONSTANTS & INTERTIES CR, 215 LF, 212 CN13, 0-13 C260, 260 AST, 252 CN6, 0-6 OP5, OPCR OP71, GRP1 OP72, GRP2 SET, 0 PCRLF, TAD LF JMS I Z PRT JMS I .+2 JMP I CRLFP S01400 END2, /LOC. END PAGE *400 OPCR, CLA TAD FSWIT SNA CLA JMP OPC2 TAD FPSWIT SZA CLA JMP OPC1 TAD Z OCT TAD M4407 /ENTRY TO INTERPRETER? SZA CLA JMP OPC2 /NO IAC /YES DCA FPSWIT SKP OPC1, JMP I Z FPNTI /GO TO FLOAT. CODE ROUTINE OPC2, TAD CON1 DCA Z ADRF CMA TAD Z TEMP SPA JMP ENDO /=0 SZA JMP .+5 /=MORE THAN 1 TAD Z ADRF /=1 TAD C2 DCA Z ADRF JMP ENDO CLA TAD Z ADRF TAD Z C4 DCA Z ADRF TAD Z TEMP TAD Z CN3 SPA JMP ENDO /=2 SZA JMP .+5 /=4 OR 5 TAD Z ADRF /=3 TAD Z C2 DCA Z ADRF JMP ENDO CLA TAD Z ADRF TAD Z C4 DCA Z ADRF TAD Z TEMP TAD Z CN4 SNA CLA JMP ENDO /=4 TAD Z ADRF /=5 TAD Z C2 DCA Z ADRF /PRINT OPR. CODE ROUTINE ENDO, JMS I Z PROP TAD CON2 DCA Z ADRF TAD Z OCT CLL RTL RTL DCA Z TEMP SNL JMP .+3 JMS I Z PROP /PRINT I JMP .+4 TAD Z ADRF IAC DCA Z ADRF TAD Z TEMP SPA CLA JMP .+5 JMS I Z PROP /PRINT Z TAD Z OCT AND M177 JMP .+7 TAD Z OCT AND M177 DCA Z TEMP TAD Z ADC AND M760 TAD Z TEMP JMS I Z POCT /PRINT ADDR. CLA TAD Z ADC IAC DCA Z ADC JMP I Z BEG /GO TO OUT /CONSTANTS AND INTERTIES CON1, OPC /ADDR. FINDER FOR OPR. CODES CON2, IZC /FIND I AND Z CON5, MIC2 /FIND MICRO GROUP 2 LIST CON6, MIC1 /FIND MICRO GROUP 1 LIST M177, 177 M760, 7600 /MICRO GROUP 2 ROUTINE GRP2, CLA CLL TAD CON5 DCA Z ADRF TAD Z CN2 DCA Z CNTR TAD Z OCT AND Z M377 RTR DCA Z TEMP JMS I Z STI /TEST BITS 10,9 SZL /TEST BIT 8 JMP .+5 TAD Z ADRF TAD Z C2 DCA Z ADRF JMP .+12 TAD Z TEMP SZA /BIT 8 ONLY? JMP .+3 JMS I Z PROP JMP I Z NGRI+1 CLA TAD Z ADRF TAD Z C10 DCA Z ADRF TAD Z TEMP RAR DCA Z TEMP TAD Z CN3 DCA Z CNTR JMS I Z STI /TEST BITS 7,6,5 SNL /TEST BIT 4 JMP I Z NGRI TAD CON6 DCA Z ADRF JMS I Z PROP JMP I Z NGRI+1 END4, /LOC. END PAGE /PAUSE /MICRO GROUP 1 ROUTINE *600 GRP1, CLA CLL TAD CON3 DCA Z ADRF TAD Z CN4 DCA Z CNTR TAD Z OCT AND Z M377 RTL RTL RAL DCA Z TEMP SNL /TEST BITS 4 TO 7 JMP .+3 JMS SROP /BIT=1 JMP .+4 TAD Z ADRF TAD Z C2 DCA Z ADRF TAD Z TEMP RAL ISZ Z CNTR JMP .-13 CLA CLL TAD Z OCT RAR DCA Z TEMP SNL /TEST BIT 11 JMP .+3 JMS SROP JMP .+4 TAD Z ADRF TAD C2 DCA Z ADRF TAD Z TEMP RAR DCA Z TEMP SNL /TEST BIT 10 JMP .+4 TAD Z ADRF TAD C4 DCA Z ADRF TAD Z TEMP RAR DCA Z TEMP SNL /TEST BIT 9 JMP .+3 JMS SROP JMP .+4 TAD Z ADRF TAD C2 DCA Z ADRF TAD Z TEMP RAR SNL /TEST BIT 8 JMP .+3 JMS SROP JMP .+11 CLA TAD Z OCT AND Z M377 SZA JMP .+4 TAD CON4 DCA Z ADRF JMS SROP CLA TAD Z ADC IAC DCA Z ADC JMP I Z BEG /GO TO STRT /INTERTIES CON3, MIC1 CON4, NOC /PRINT OPR CODES SUBROUTINE SROP, 0 CLA AA, TAD I Z ADRF AND Z M77 SNA JMP BB TAD Z C240 JMS SRT TAD I Z ADRF RTR RTR RTR AND Z M77 SNA JMP BB TAD Z C240 JMS SRT TAD Z ADRF IAC DCA Z ADRF JMP AA BB, TAD Z C240 JMS SRT TAD Z ADRF IAC DCA Z ADRF JMP I SROP /PRINT SUBROUTINE SRT, 0 6041 /SKIP IF FLAG=1 JMP .-1 6046 /PRINT CLA JMP I SRT /NO VALID MICRO-OP ROUTINE NGR, TAD Z OCT CLL RAR SNL CLA JMP .+3 TAD Z OCT JMS I Z POCT TAD Z ADC IAC DCA Z ADC JMP I Z BEG /GO TO STRT END6, /LOC. END PAGE /FLOATING POINT OP. CODES ROUTINE *1000 FPNT, TAD FCD1I DCA Z ADRF TAD Z OCT SZA CLA JMP .+4 JMS I Z PROP /PRINT FEXT DCA Z FPSWIT JMP FPEND JMS STEP3 TAD Z OCT AND M1000 DCA Z TEMP TAD Z TEMP SZA CLA JMP FPNT1 TAD Z OCT CMA IAC IAC SZA JMP .+3 JMS I Z PROP /PRINT AQ JMP FPEND DCA Z TEMP JMS STEP3 TAD Z TEMP IAC SZA CLA JMP .+3 JMS I Z PROP /PRINT SQRT JMP FPEND TAD Z OCT JMS I Z POCT /PRINT OCTAL FPEND, TAD Z ADC IAC DCA Z ADC JMP I Z BEG /GO TO STRT FPNT1, TAD N7 DCA Z CNTR TAD FCD2I DCA Z ADRF TAD Z TEMP TAD M1000 SZA SKP JMP I ENDOI /PRINT F.P. OP. CODE DCA Z TEMP JMS STEP3 ISZ Z CNTR JMP FPNT1+4 TAD Z OCT JMS I Z POCT /PRINT OCTAL JMP FPEND /CONSTANTS AND INTERTIES C3, 3 M1000, -1000 ENDOI, ENDO N7, -7 FCD1I, FCODE FCD2I, FCODE2 /STEP ADDR. FINDER SUBR. STEP3, 0 TAD Z ADRF TAD C3 DCA Z ADRF /STEP 3 ADDRESSES JMP I STEP3 /FLOATING POINT CODES FCODE, 4546 /FEXT 6470 0 6163 /SQ 0 0 6163 /SQRT 6462 0 FCODE2, 4146 /FADD 4444 0 6346 /FSUB 4265 0 5546 /FMPY 7160 0 4446 /FDIV 6651 0 4746 /FGET 6445 0 6046 /FPUT 6465 0 5646 /FNOR 6257 0 END10, /LOC. END PAGE /READ INTO BUFFER AREA AND OUTPUT FROM BUFFER AREA. *1200 READ, TAD BADD1 /SET INDEXES DCA Z BINDX TAD AADD1 DCA Z AINDX JMS I Z READ1I /READ TELE 1 6036 /READ TELE. CLL RTL /SHIFT 5 LEFT RTL RAL SZL /LOOK FOR CH. 8 JMP I Z ENDTI /YES CLL RAL /NO JMS I Z READ1I 6034 /NO CLEAR, READ TELE DCA I BINDX 6032 /CLEAR AC & FLAG TAD Z C2 DCA I Z SETI /SET END TAPE FLAG SNL /LOOK FOR CH. 7 JMP .+4 /NO TAD Z BINDX /YES CMA IAC DCA I Z AINDX TAD Z BINDX TAD ENDB SZA CLA /END OF BUFFER? JMP READ+4 /NO OUT8, TAD Z BINDX /YES CMA IAC DCA END TAD BADD1 /RESET INDEXES DCA Z BINDX TAD AADD1 DCA Z AINDX TAD I Z AINDX DCA ADDA OUT, JMS I Z CRLFPI /PRINT CR & LF TAD Z BINDX TAD END SNA CLA /END OF BUFFER? JMP READ /YES TAD I Z BINDX /NO DCA Z OCT TAD Z BINDX TAD ADDA SZA CLA /ADDRESS ASSIGNMENT? JMP I Z BBBI /NO TAD Z OCT /YES DCA Z ADC /STORE ADDRESS TAD Z AINDX DCA ADDA DCA I ADDA TAD I Z AINDX DCA ADDA JMP I Z AAAI /TAGS & CONSTANTS BADD1, 1277 AADD1, 1347 END, 0 ADDA, 0 ENDB, -1347 END12, /END PAGE *1400 S01400, 0000 / This seems to paginate the output. ISZ LINES / Page full? JMP I S01400 / Not yet JMS S01405 / Yes, fix it JMP I S01400 S01405, 0000 TAD N36D / 36 lines per page DCA LINES TAD N72D DCA D01436 L01412, TAD DASH / Print 72 dashes. JMS I Z PRT ISZ D01436 JMP L01412 TAD CR2 / New line JMS I Z PRT TAD LF2 JMS I Z PRT TAD LF2 / Blank line JMS I Z PRT JMP I S01405 / Return START, KCC / Fetch a character TLS / Start the printeer TAD CR2 / Beginning of line JMS I Z PRT JMS S01405 / Start new page JMP I P01442 / Start main program N36D, -36 / -30 decimal LINES, .-. N72D, -110 / -72 decimal D01436, .-. DASH, "- CR2, 215 LF2, 212 P01442, L00200 END14, /END PAGE /END OF PROGRAM $