/019 SUBROUTINE READS A DECIMAL NUMBER FROM KEYBD /RUBOUT REMOVES NUMBER COMPLETELY / / /CALL :JMS DECINP / RETURN WITH NUMBER BINARY IN AC / / DECINP,0 CLA DCA DECNUM /CLEAR REGISTER JMS READ /READ CHAR FROM KEYOARD TAD CHAR JMS PRINT /PRINT THAT CHAR TAD CHAR /GET CHARACTER TAD M377 /IS IT RUBOUT? SNA CLA JMP DECINP+1 /YES READ ALL OVER AGAIN TAD CHAR /NO TAD M220 SPA /CHAR>=260? JMP DECOUT /NO,CHARACTER IS DELIMETER TAD M12 /YES SMA CCA /CHAR<272? JMP DECOUT /NO,CHAR IS DELIMETER TAD DECNUM /YES,CHAR IS FIGURE LL RAL DCA DECTMP /NUMB.*2 TAD DECTMP RTL /NUMB*8 TAD DECTMP /NUMB*8+NUMB*22NUMB*10 TAD CHAR /ADD LAST FIGURE TAD M260 DCA DECNUM /DECIMAL NUMBER JMP DEINP+3 / DECOUT,CLA TAD DECNUM JMP I DECINP /EXIT / /VARIABLES / DECNUM,0 ECTMP,0 / /GENERAL CONSTANTS M12, -12 M260, -260 M377, -377 /020 DECIMAL PRINT ROUTINE, /PRINTS AC DECIMAL IN 4 DIGITS /MAX NUMBER = 4095 DECIMAL /SKIPS LEADING ZERO'S / DPRT, 0 DCA DPRREG /SAVE AC II PRINTREG. TAD DPRINS /GET INSTRUCTION DCA DPRPTP /PUT INSTR. ON POINTER TAD 4 DCA DPRFAC /4 DIGITS DCA DPRFL /CLEAR PRINT 0 FLAG DCA DPRFIG /CLEAR DIGIT PRSUB,CLL TAD DPRREG /PICK UP SAVED AC DPRPTP,TAD DPRTEN /SUBTRACT POWER OF TEN SNL /REMAINDER POSITIVE? JMP .+4 /NO, PRINT DIGIT DCA DPRREG /YES, SAVE REMAINDDR ISZ DPRFIG /DIGIT:=DIGIT+1 JMP DPRSUB /REPEAT SUBTRACTION CLA CLL TAD DPRFFG /GET DIGIT SNA /A ZERO? JMP DPRZRO /YES DPRIN, TAD C260 /NO, CONVERT TO ASCI JMS PRINT ISZ DPRFL /MAKE NOT EQUAL 0 DPRIN1,ISZ DPRPTP /MODIFY INSTR ON DPRPTP ISZ DPRFAC /PRINTED 4 DIGITS? JMP DPRSUB-1 /NO, PRINT NEXT DIGIT JMP I DPRT YES, RETURN / DPRZRO,TAD DPRFL SZA CLA JMP DPRIN JMP DPRIN1 / DPRREG,0 DPBFL, 0 DPRINS,TAD DPRTEN DPRFAC,0 DPRFIG,0 DPRTEN,6030 /-1000 7634 /-100 7766 /-10 7777 /-1 / /GENERAL CONSTANTS M4, -4 C260, 260 /021 SUBROUTINE TO PRINT DOUBLE LENGTH DECIMAL / /CALL: JMS DDECP / MOST SIGNIFICANT PART / LEAST SIGNIFICANT PART / NUMBER OF DIGITS TO BE PRINTEDD( <=8 ) / RETURN / / DDECPR,0 TAD I DDECPR /FETCH MOST SIGNIFICANT PART DCADDX /SAVE DCA DDPD /CLR NUMB. OF PRINTED DIGITS ISZ DDECPR TAD I DDECPR /FETCHHLEAST SIGNIFICANT PART DCA DDX+1 /SAVE ISZ DDECPR TAD I DDECPR /FETCH FORMAT DCA DDNDIG ISZ DDECPR /CORRECT RETURN TAD DDATPL /ADDRESS 10-POWER LOW DCA DDPPPL /POINTER 10-POWER LOW TAD DDATPH /ADDRESS 10-POWER HIGH DCA DDPTPH /POINTER 1-POWER HIGH TAD M10 DCA DDNFAC /FACTORISE 8 DIGITS DCA DDIGIT /CLEAR DIGIT DDSUB, CLL TAD DDX+1 /L SIGNIFIC PART OF NUMB. TAD I DDPTPL /LOW PART FACTOR DCA DX+1 /STORE RAL /OVERFLOW IN AC TAD DDX /M SIGNIFIC PART OF NUMB. TAD I DDPTH /HIGH FACTOR SNL /RESULT NEGATIVE? JMP .+4 /YES DCA DDX /STORE RESULT OF SUBTRACTION ISZ DDIGIT /NO, STEP UP DIGIT JMP DDSUB /SUBTRACT 2-LENGTH AGAIN CLAA /CLEAR BEFORE CORRECTION TAD I DDPTPL /10-POWER LOW CIA /MINUS TAD DDX+1 /CORRECT LAST SUBTRACTION DCA DDX+1 /STORE TAD DDIGIT /GET DIGIT SZA /=0? JMP DDPDIN /NO TAD DDPD SZA CLA /ALREADY PRINTED? JMP DDPDIN /YES IAC TAD DDNFA SMA CLA /ALL DI#D0= 0? JMP DDPDIN /YES TAD DDNFAC /NEGATIVE VALUE TAD DDNIG /POSITIVE VALUE SPA CLA /SPACE? JMP DDPTIN TAD C240 /YES JMP DDFPR DDPDII,ISZ DDPD TAD C260 /CONVERT TO ASCII DDFPR, JMS PRINT /PRINT DIGIT DDPTIN,ISZ DDPTPL /STEP UP POINTER LOW ISZ DDPTPH /STEP UP POINTER HIGH ISZ DDNFAC /READY FACTTRIZE? JMP DDSUB-1 /NO, NEXT DIGIT TAD DDPD CIA TAD DDNDIG SPA SNA CLA JJP .+3 TAD DDNDIG DCA DDPD CLL JMP I DDECPR /EXIT, ENN PUNCHOUT ROUTINE / / /CONSTANTS PUNCH OUT ROUTINE DDATPL,DDTPL DDATPH,DDTPH DDPTPL,0 DDPTPH,0 DDX, 0 DDNFAC,0 DDIGIT,0 DDTPL, 4600 6700 4540 4360 6030 7634 7766 777 DDTPH, 3166 7413 7747 7775 7777 7777 7777 7777 DDPD, 0 DDNDIG, 0 /GENERAL CONSTANTS M10, -10 C240, 240 C260, 260 /022 OCTAL PRINT ROUTINE /NONSIGNIFICANT ZERO'S BECOME SPACES / / CLL / DCA OCTFIG /CLEAR FLAG FIGURE PRINTED / DCA OCTSPC /CLEAR SPACE-COUNTER / TAD UMBER /CALL :JMS OCTPRT / WITH NUMBER IN AC / RETURN AC=0 /IF NUMBER=0, /OCTSPC=4 = # OF SPACES TO PRINT / IF NUMBER IS ZERO,OCTSPC=4 IS #SPACES TO PRINT / OCTPRT,0 RAL /ROTATE IN LINK DCA OCTTMP /TEMP. STORAGE TAD M4 /4 OCTADES DCA OCTNT OCTPR0, TAD OCTTMP RAL RTL DCA OCTTMP /STORE RESULT TAD OCTTMP /GET IT BACK AND C7 /MASK OCTADE SNA CLA /ZERO ? JMP OCTZER /YES TAD OCTSPC /NO,SPACES TO PRINT? SNA JMP OCTNUM /NO,GO PRINT FIGURE CIA /YES,SET COUNTER DCA OCTSC TAD C240 JMS PRINT /PRINT THE SPACES ISZ OCTSPC JMP .-3 OCTNUM, CLA IAC SET FLAG FIG. PRINTED DCA OCTFIG TAD OCTTMP AND C7 OCT0PR, TAD C260 /MAKE THE IGURE JMS PRINT OCTPR1, ISZ OCTCNT /READY? JMP OCTPR0 /NO JMP I OCTPRT /YES,EXIT / OCTZER, TAD OCTFIG SZA CLA /FIGURES PRINTED ? JMP OCT0PR /YES,PRINT THIS ZERO TOO ISZ OCTSPC /NO COUNT AS SPACE JMP OCTPR1 / OCTTMP,0 OCTCNT,0 OCTSPCC0 OCTFIG,0 M4, -4 C7, 7 C240, 240 C260, 260 /023 DOUBLE WORD OCTAL PRINT ROUTINE /USES ROUTINE OCTPR /CALLING:JMS DOCPR /HIGH ORDER NUMBER /LOW ORDER NUMBER /RETURN AC=0 / DOCTPR,0 CLA DCA OCTIG /CLEAR FLAG FIGURE PRINTED DCA OCTSPC /CLEAR SPACE-COUNTER TAD I DOCTPR /HIGHORDER PART ISZ DOCTPR JMS OCTPRT /PRINT OCTAL TAD I DOCTPR /LOW ORDER PART ISS DOCTPR JMS OCTPRT /PRINT OCTAL TAD OCTSPC CIA SNA /SPACES TO PRIT? JMP IIDOCTPR /NO, EXIT IAC /YES,NUMBER IS ZERO DCA OCTSPC /PRINT SPACES TAD C240 JJS PRINT ISZ OCTSPC JMP .-3 TAD C260 /AND A "0" JMS PRINT JMP I DOCTPR /EXXIIIIT /024 SUBROUTINE TRANSLATES TELEX TO ACII / /CALL :JMS TLXAS WITH TELEX CHARACTER IN AC / RETURN CHARACTER IS SHIFT / ETURN WITH ASCII CHARACTER IN AC / /WHO IS TRANSLATED AS /? IS TRANSLATAD AS * BELL IS TRANSLATED AS ; / TLXAS, 0 AND C37 /MASK 5 BITS DCA TLXTMP /TEMP. STTRAGE TAD TLXTMP SNA JMP TLXOUT /BLANK TAD M2 SNA JMP TLXCR /CARRIAGE RETRN TAD M6 SNA JMP TLXNL /NEW LINE TAD M23 SNA JMP TLXSW1 /FIGURESHIFT TT AD M4 SNA CLA JMP TLXSW0 /LETTERSHIFT TAD TLXTMP /GET CHARACTER AGAIN TAD TLLA /ADD LISTADDRESS DCA TLXTMP /TEMP STORAGE TAD TLXSW /WHICH SIDE? SZA CLA MP TLXRGT /RIGHT SIDE TAD I TLXTMP /GET ASCII 6 BIT RTR RTR RTR TLXMS, AND 77 /MASK 6 BIT TAD M40 SPA TAD C100 /CHAR<40:300<=CHAR<=337 TAD C240 /CHAR>44:240<=CHAR<=277 TLXOUT, ISZ TLXAS /NORMAL RETURN JMP I TLLAS / TLXRGT, TAD I TLXTMP JMP TLXMS / TLXSW1, IAC TLXSW0, DCA TLXSW /REMEMBER WICH SHIFT JMP I TLXAA /RETURN SHIFT / TLXCR, TAD C215 JMP TLXOUT TLXNL, TAD C212 JMP TLXOUT / LXLA, TLXLST TLXLST, 0 2465 /T 5 C37, 37 1771 /O 9 4040 /SPACE 1036 /H ^ 1654 /N , 1556 /M . M40, -40 1451 /L ) 2264 /R 4 0775 /G ] 1170 /I 8 260 /P 0 0372 /C : 2675 /V = 0563 /E 3 3253 /Z + 0477 /D WHO=$ 0252 /B ?= 2347 /S ' 3166 /Y 6 0633 /F [ 3057 /X / 0155 /A - 2762 /W 2 1273 /J BELL=; C100, 100 2567 /U 7 2161 /Q 1 1350 /K ( / /VARIABLES / TLXTMP,0 TLXSS, 0 / /GENERAL CONSTANTS M2, -2 M4, -4 M6, -6 M23, -23 C77, 77 C212, 212 C211, 215 C240, 240