100 GETARG, .-. /GET ARGUMENT EVALUATED ROUTINE 110 CDF PRGFLD /ENSURE MAIN FIELD 120 TAD I [CHAR] /GET PREVIOUS CHARACTER 130 TAD [-",] /COMPARE TO COMMA 140 SZA CLA /SKIP IF IT MATCHES 150 JMP I GETARG /TAKE IMMEDIATE RETURN IF NO ARGUMENT 160 TAD (EVALRETURN) /GET OUR ADDRESS 170 JMS FIXPUSH /PUT ON STACK 180 TAD (GTARGXIT) /GET OUR ADDRESS 190 DCA FIXPUSH /MAKE IT COME BACK TO US 200 CIF CDF PRGFLD /GOTO MAIN FIELD 210 JMP I (EVAL-1) /GO DO A PUSHJ;EVAL-1 220 230 / COMES BACK HERE FROM EVAL-1. 240 250 GTARGXI,JMS FIXPUSH /FIX THE ARGUMENT 260 JMS POPAC /GET IT BACK 270 ISZ GETARG /BUMP RETURN ADDRESS 280 JMP I GETARG /TAKE SKIP RETURN 290 300 PAGE 310 EJECT 320 SETADR, .-. /ADDRESS SETUP ROUTINE 330 CDF DFIELD /ENSURE OUR FIELD 340 SETZAP, JMP SET4010 /**** NOT /1 **** NOP 350 TAD Y /GET Y ADDRESS 360 RTL;RTL;RTL /%200 370 AND [37] /JUST HIGH FIVE BITS 380 TAD [40] /MAKE IT ASCII 390 DCA ADRBUFFER+0 /STORE AS HI-Y 400 TAD Y /GET Y AGAIN 410 AND [3] /JUST LOW TWO BITS 420 CLL RTL /MOVE UP 430 DCA ADRBUFFER+1 /SAVE FOR NOW 440 TAD Y /GET Y AGAIN 450 RTR /%4 460 AND [37] /JUST MIDDLE FIVE BITS 470 TAD [140] /MAKE IT ASCII 480 DCA ADRBUFFER+2 /STORE AS LO-Y 490 TAD X /GET X ADDRESS 500 RTL;RTL;RTL /%200 510 AND [37] /JUST HIGH FIVE BITS 520 TAD [40] /MAKE IT ASCII 530 DCA ADRBUFFER+3 /STORE AS HI-X 540 TAD X /GET X AGAIN 550 RTR /%4 560 AND [37] /JUST MIDDLE FIVE BITS 570 TAD [100] /MAKE IT ASCII 580 DCA ADRBUFFER+4 /STORE AS LO-X 590 TAD X /GET X AGAIN 600 AND [3] /JUST LOW TWO BITS 610 TAD ADRBUFFER+1 /ADD ON LOW Y BITS (SHIFTED) 620 TAD [140] /MAKE IT ASCII WITH MARGIN 1 630 DCA ADRBUFFER+1 /STORE COMPOSITE EXTRA BYTE 640 JMP I SETADR /RETURN 650 EJECT 660 / COMES HERE IF IN 4010 ADDRESS MODE. 670 680 SET4010,TAD Y /GET UNSIGNED Y VALUE 690 MQL /TO LOW-ORDER 700 JMS XMUY /MULTIPLY 710 1414 /BY 780 720 DCA Y /STORE BACK 730 TAD Y /GET Y VALUE 740 RTR;RTR;RAR /%40 750 AND [37] /JUST HIGH FIVE BITS 760 TAD [40] /MAKE IT ASCII 770 DCA ADRBUFFER+0 /STORE AS HI-Y 780 TAD Y /GET Y AGAIN 790 AND [37] /JUST FIVE LOW BITS 800 TAD [140] /MAKE IT ASCII 810 DCA ADRBUFFER+1 /STORE AS LO-Y 820 TAD X /GET X VALUE 830 RTL;RTL;RTL /%200 840 AND [37] /JUST HIGH FIVE BITS 850 TAD [40] /MAKE IT ASCII 860 DCA ADRBUFFER+2 /STORE AS HI-X 870 TAD X /GET X AGAIN 880 RTR /%4 890 AND [37] /JUST FIVE MIDDLE BITS 900 TAD [100] /MAKE IT ASCII 910 DCA ADRBUFFER+3 /STORE AS LO-X 920 JMP I SETADR /RETURN 930 940 / MULTIPLY ROUTINE. 950 960 XMUY, .-. /MULTIPLY ROUTINE 970 CLA CLL /CLEAN UP 980 TAD (-15) /SETUP THE 990 DCA XMUYCT /SHIFT COUNTER 1000 XMUYUP, RAR /SHIFT RIGHT 1010 SWP /INTO LOW-ORDER; GET LOW-ORDER 1020 RAR /SHIFT RIGHT 1030 SWP /RETURN TO LOW-ORDER; GET ORIGINAL HIGH-ORDER 1040 ISZ XMUYCT /SHIFTED ENOUGH? 1050 SKP /SKIP IF NOT 1060 JMP XMUYEXT /EXIT IF SO 1070 SNL /LATEST BIT ON 1080 JMP XMUYUP /NO, JUST KEEP GOING 1090 CLL /YES, CLEAR LINK FOR PROPER CARRY 1100 TAD I XMUY /ADD ON ARGUMENT VALUE 1110 JMP XMUYUP /KEEP GOING 1120 1130 XMUYEXT,ISZ XMUY /BUMP PAST THE ARGUMENT 1140 JMP I XMUY /RETURN 1150 1160 XMUYCT, .-. /SHIFT COUNTER 1170 EJECT