PROG BRENTRAN CHAP SETUP BLOC K CONST SPECD P:*ININT*JRTRANS P:*OUTINT*JRTRANS P:*OUTSTRING*JRTRANS P:*OUTCHAR*JRTRANS P:RPT*OUTCHAR*JRTRANS P:*FINAL*JRTRANS JMES C:JRTR C:ANS VMES C:V'N C: 03B CODE LDR :L 5 MOVE LD :M SPECD ST :M 151 SUBR:L 1 JN :S STANDARD JB :S MOVE STANDARD JILX P:*STANDARD*JRTRANS LDR :L JMES ADDR V:B:23 JIL 206 LDR :L VMES ADDR V:B:23 JIL 206 JI 213 CHAP JRTRANS VERSION 03 FOR BATCH LABEL *STANDARD *ININT *OUTINT *OUTSTRING *OUTCHAR RPT*OUTCHAR *FINAL LOAD*OPEN DATA PRESR(2) PRESERVE M & R LINK VALUE NEG ERR SHSW (SHIFT SWITCH) WORD COUNT POINTER POSN LINKB(2) EMM CONST OPES +0 -1 WHEN DEVS OPEN BLOC STANDARD CODE CLS 174 CLS 173 ST 171 LD :L 2 ST 172 LD :L 7 EXC 171 JIRX 6 BLOC ININT CONST ERRMES C:READ C: ERR CODE STR PRESR CLS VALUE CLS NEG CLS ERR JOF :S SEEK ENSURE C20=0 SEEK JFL *READ LDR NEG JN :S NOMCH COMP:L 13 - JZ :S MINUS NOMCH JFL CHECK JB :S SEEK IF NON-NUMERICAL CH MINUS DECS NEG JB :S SEEK INFIGS EXC VALUE SET UP MULS:L 10 NUMBER ADDS VALUE RDIN JFL *READ JFL CHECK LD ERR JN :S ERROR IMPERMISSIBLE CH JOF :S OFLO TOO BIG LD NEG JZ :S POS NEGS VALUE POS LDR PRESR LD VALUE JIX 6 C-REG SET TO NEW VALUE CHECK COMP:L 31 (?) JZ :S EMARK SUB :L 13 (-) JZ :S EMARK SUB :L 1 (.) (TOT=14) JZ :S EMARK SUB :L 2 (TOT=16) JN :S IGN ICV<16 COMP:L 10 JNN :S IGN ICV>25 JB :S INFIGS EMARK DECS ERR JB :S RDIN IGN JIR 0 OFLO LD NEG ASSUME LARGEST NUMBER JN :S B24 OF CORRECT SIGN LD V:B:1:23 JA :S 2 B24 LD V:B:24 (-[2**23]) ST VALUE JA :S 2 ERROR CLS VALUE LDR :L ERRMES ADDR V:B:23 JIL 206 JB :S POS BLOC OUTINT CONST TENPWR 1 10 100 1000 10000 100000 1000000 ERRMES C:FMAT DIGITS>7 OR <1 C: ERR CODE ST VALUE WB PRESR LD 171 JN ERROR JZ ERROR COMP:L 8 JNN ERROR SUB :L 1 ST COUNT MOD TO TENPWR LD 172 JFL *PRINT LDZRO LDR COUNT JZ :S FLT SGN LD VALUE DIV :M TENPWR ADD :L 0 JNZ :S FLT SGN HAVING O/P LEADING ZEROS LD 174 JFL *PRINT DECS COUNT JB :S LDZRO FLT SGN LD VALUE JNN :S POS NEGS VALUE ENSURE VALUE NON-NEG LD :L 13 (- SIGN) JA :S 2 POS LD 173 JFL *PRINT OUTFIGS LDR COUNT LD VALUE DIV :M TNPWR LEAVING NEXT FIG IN M COMP:L 10 JN :S OKAY LDR PRESR+1 LD :L 24 O/P H OKAY STR VALUE ADD :L 16 CONVT TO INTERNAL CODE JFL *PRINT DECS COUNT JN :S DONE JB :S OUTFIGS ERROR LDR :L ERRMES FMAT ERR ADDR V:B:23 JIL 206 DONE BL PRESR JIRX 6 BLOC OUTSTRING CODE CLS SHSW WB PRESR R SET TO FIRST WORD MORE LD :L 4 ST COUNT LD :I PRESR ST WORD UNPAK DECS COUNT JN :S NEXT START NEW WORD LD :L 0 GET WORD UNPACK NEXT CH COMP:L 4 STOP IF $ JZ :S DONE COMP:L 62 JZ :S SHOUT SHIFT OUT JNN :S SHIN SHIFT IN ADD SHSW JFL *PRINT JB :S UNPAK SHOUT LD :L B:7 ST SHSW JB :S UNPAK SHIN CLS SHSW JB :S UNPAK NEXT INCS PRESR JB :S MORE DONE BL PRESR ADDR:L 1 JIRX 6 BLOC OUTCHAR CODE WB PRESR JFL *PRINT JF :S DONE RPT WB PRESR O/P CH FROM M,R TIMES STR COUNT LOOP DECS COUNT JN :S DONE LD PRESR+1 JFL *PRINT JB :S LOOP DONE BL PRESR JIRX 6 BLOC READ CONST CNT80 +0 CODE LD OPES JZ *OPEN LD :S 0 ST LINK DECS CNT80 JN :S NEWCARD BUFFER LD :I POINTER NEGS POSN JN :S ANDOFF LDK :S 2 SMLC JA :S 2 ANDOFF INCS POINTER AND :L B:1:7 JI LINK NEWCARD CTOM ST POINTER PRESERVE C20 LD :L 0 JIL 161 \CARDIN LD POINTER STR POINTER MTOC LD V:-1 ST POSN LD :L 79 ST CNT80 JB :S BUFFER BLOC PRINT CODE LDR OPES JZ *OPEN ADD :L 0 JN :S NOPRNT COMP:L 128 JNN :S NOPRNT LDR :L 0 JIL 162 NOPRNT JIR 0 BLOC FINAL CODE LDR :L 1 JIL 162 CLS OPES JI 213 BLOC OPEN CODE ST EMM LD :S 0 SUB :L 2 ST LINK BL 6 WB LINKB LD 161 JNN :S CDR IN LD V:C:CDR JILX P:LOAD*OPEN*JRTRANS CDR IN LD 162 JNN :S LP IN LD V:C:LP JILX P:LOAD*OPEN*JRTRANS LP IN LDR V:-1 JIL 162 DECS OPES BL LINKB WB 6 LD EMM JI LINK LOAD ST 208 CLS 209 JIL 181 JI 213 END