EJECT PAGE/100-300 EV10=EV POP10=POP PUSH10=PUSH RET10, EVRET TEST10=TEST /HD ROUTINE /RETURNS THE DOWN POINTER OF THE CELL POINTED TO BY IT'S ARG AHD, JMS I AHEV /GET ARG RAR SNL CLA CLL RAL SNA JMP I AHRET DCA AHTMP TAD I AHTMP JMP I AHRET AHTMP,0 AHRET=RET10 AHEV=EV10 /MACH ROUTINE /TRANSFERS CONTROL TO SPECIFIED LOCATION AMACH, ISZ I MAEVAL TAD I MAEVAL DCA MATMP TAD I MATMP DCA MATMP JMS I MATMP JMP I MARET MATMP, 0 MAEVAL, LEVAL MARET=RET10 /PLUS, MINUS, TIMES ROUTINES APLUS, /COMPUTES THE SUM OF AN INDEFINATE NUMBER OF ARGS. TAD PLSUB DCA ARSUB DCA ARSUM JMP ARDO PLSUB, TAD ARSUM AMINUS, /NEGATES ITS ARGUMENT JMS I AREV /GET AN ARGUMENT JMS I ARTEST /REALLY JMP I ARRET /NO JMS DECBIN /CONVERT TO BINARY CIA /NEGATE IT JMP ARON ATIMES, /COMPUTES THE PRODUCT OF AN INDEFINATE NUMBER OF ARGS. IAC DCA ARSUM TAD TISUB DCA ARSUB JMP ARDO TISUB, JMP TIMTIM TIMTIM, MQL MUL ARSUM, 0 CLA MQA JMP ARSUB+1 /MAIN ARITMETIC ROUTINE ARDO, JMS I ARPUSH /RECURSIVE SELF PROTECTION ARSUM JMS I ARPUSH /RECURSIVE SELF PROTECTION ARSUB JMS I AREV /GET AN ARG JMS I ARPOP ARSUB JMS I ARPOP ARSUM CMA /-1? SNA JMP AREND /YES CMA /NO JMS DECBIN /CONVERT TO BINARY ARSUB, 0 /SUPPLIED BY ARITH SUBS DCA ARSUM JMP ARDO AREND, JMS I ARTEST /REALLY? JMP I ARRET /NO TAD ARSUM /CONVERT TO DECIMAL ARON, JMS I ARBIND JMP I ARRET ARBIND, BINDEC ARPUSH=PUSH10 ARPOP=POP10 ARRET=RET10 AREV=EV10 ARTEST=TEST10 /NUMBER ROUTINE /RETURNS 1 (T) IF ARG IS NUMBER; RETURNS 0 (F) OTHERWISE. ANUMBER, JMS I NUEV /GET ARG JMS DECBIN /CONVERT TO BINARY CLA TAD DERR /ERROR? SNA CLA IAC /NO: SET TO T JMP I NURET /YES: SET TO F & RETURN NUEV=EV10 NURET=RET10 /DECBIN ROUTINE /CONVERTS A CHARACTER CODED ATOM TO BINARY DECBIN, 0 CLL RAR/ATOM? SZL HLT /NO RAL /YES DCA DETMP DCA DERR DCA DETTL DEBAK, TAD DETMP SNA CLA /NULL? JMP DECEND /YES: EXIT TAD I DETMP LSR 5 JMS DECON TAD I DETMP AND DE77 JMS DECON ISZ DETMP TAD I DETMP DCA DETMP JMP DEBAK DECEND, TAD DETTL JMP I DECBIN DECON, 0 SNA /LAST? JMP DECEND /YES TAD DEM72 /-72 SMA ISZ DERR /NOT A NUMBER TAD DEDIF /72-60 SPA ISZ DERR /NOT A NUMBER DCA DELOC TAD DETTL /MULTIPLY BY 10 MQL MUL 12 CLA MQA TAD DELOC /ADD DIGIT DCA DETTL JMP I DECON DEM72, -72 DEDIF, 72-60 DELOC, 0 DE77, 77 DETMP, 0 DERR, 0 DETTL, 0 PAGE /Added by VRS