/COMBINATION OCTAL-DECIMAL OUTPUT ROUTINE /ENTER: TAD VALUE / JMS NUMOUT / S D 3 / RETURN / / /S MEANS TO SUPPRESS LEADING ZEROS /D MEANS TO OUTPUT IN DECIMAL /3 DIGITS TO OUTPUT, 1 TO 4 DIGITS / / S= 4000 D= 2000 NUMOUT, 0 DCA NUM TAD I NUMOUT CLL RAL /OCTAL OR DECIMAL OUTPUT? SPA CLA TAD DECOCT /DECIMAL TAD OCTPNT /OCTAL DCA STKPNT /PUT IT IN STACK POINTER TAD NUM260 DCA DATA+1 TAD NUM260 DCA DATA+2 TAD NUM260 DCA DATA+3 TAD DATPNT DCA DATA /SET DATA POINTER CMA CLL RTL DCA COUNT /SET UP ISZ LOOP TAD NUM /GETETH OUT NUMBER NUMLOP, CLL TAD I STKPNT /TAKE AWAY VALUE SNL JMP .+3 /IF NEG, CHANGE TO POWER-1 ISZ I DATA /TAKEN AWAY VAL, INCRE VALUE JMP NUMLOP /TAKE AWAY MORE DCA NUM /WE TOOK TOO MUCH TAD I STKPNT /ADD THAT VALUE BACK CIA TAD NUM ISZ DATA /INCRE DATA TO NEXT CHAR ISZ STKPNT /INCRE STKPNT TO NEXT VALUE ISZ COUNT /ARE WE DONE? JMP NUMLOP /NOPE, GOWAN BACK! TAD P4260 /THIS IS A ZERO, BUT IT IS DCA DATA+4 /NEGATIVE, INDICATES END OF STACK TAD I NUMOUT /ARE WE TO SUPPRESS SMA CLA /LEADING ZEROS? JMP NUMPUT /NO, GO OUTPUT TAD DATPNT DCA DATA CMA CLL RTL DCA COUNT NUMSUP, TAD NUM260 CIA TAD I DATA /IF THIS IS A ZERO SZA CLA /PUT A SPACE HERE JMP NUMPUT /IF NOT, DON'T SUPPRESS ANYMORE TAD NUM240 DCA I DATA ISZ DATA ISZ COUNT /IF THIS IS ALL ZERO NUMBER JMP NUMSUP /DON'T SUPPRESS THE LAST ONE NUMPUT, TAD I NUMOUT /FIGURE NUMBER AND NUM7 /OF CHARS TO OUTPUT CIA TAD OUTPNT DCA 17 TAD I 17 TLS SMA CLA JMP .-3 ISZ NUMOUT JMP I NUMOUT /HERE IS ALL THE DATA NEEDED FOR THE ROUTINE NUM260, "0 NUM240, " P4260, 4260 NUM7, 7 COUNT, 0 STKPNT, 0 NUM, 0 DECOCT, DECSTK-OCTSTK OCTPNT, OCTSTK DECIMA DECSTK, -1000 /-1000 DECIMAL -100 /-100 DECIMAL -10 /-10 DECIMAL OCTAL OCTSTK, -1000 /-1000 OCTAL -100 /-100 OCTAL -10 /-10 OCTAL DATPNT, .+2 DATA, .+1 0 /THOUSANDS 0 /HUNDREDS 0 /TENS 0 /ONES+4000 OUTPNT, .-1