TITLE test.a by Douglas Jones ; test program for MP4 implementation of binary class S START USE "hawk.macs" USE "monitor.h" USE "number.h" ; number class USE "numbin.h" ; binary number subclass COMMON STACK,#1000 PSTACK: W STACK COMMON VARA,SNUMBIN ; two variables of type binary number COMMON VARB,SNUMBIN PVARA: W VARA PVARB: W VARB ; the program starts here! START: LOAD R2,PSTACK ; set up the stack LOAD R1,PDSPINI JSRS R1,R1 ; dspini() -- initialize display LOAD R3,PVARA LIS R4,0 LOAD R1,PNBIASBN JSRS R1,R1 ; nbiasbn(vara,0) -- a = 0 LOAD R3,PVARB LIS R4,0 LOAD R1,PNBIASBN JSRS R1,R1 ; nbiasbn(varb,0) -- b = 0 LOAD R3,PVARA ; -- get object handle LIS R4,1 ; -- get value to assign LOADS R1,R3 ; -- get handle on class descriptor LOAD R1,R1,NASSBIN ; -- get pointer to method JSRS R1,R1 ; vara.nassbin(1) -- a = 1 LOAD R3,PVARB LOAD R4,PVARA LOADS R1,R3 LOAD R1,R1,NASSNUM JSRS R1,R1 ; varb.nassnum(vara) -- b = a LOAD R3,PVARA LOAD R4,PVARB LOADS R1,R3 LOAD R1,R1,NADD JSRS R1,R1 ; vara.nadd(varb) -- a = a + b -- = 2 LOADS R1,R3 ; notice use of R3 from previous call LOAD R1,R1,NTODSP JSRS R1,R1 ; todsp(vara) -- outputs 2, we hope MOVE R4,R3 LOADS R1,R3 LOAD R1,R1,NMUL JSRS R1,R1 ; vara.nmul(vara) -- a = a * a -- = 4 LOADS R1,R3 LOAD R1,R1,NTOBIN JSRS R1,R1 LIS R4,8 LOAD R1,PDSPDEC JSRS R1,R1 ; dspdec( vara.ntobin(), 8 ) -- outputs 4 LOAD R3,PVARB LIL R4,1000 LOADS R1,R3 LOAD R1,R1,NASSBIN JSRS R1,R1 ; assbin(varb,1000) -- b = 1000 LOAD R4,PVARA LOADS R1,R3 LOAD R1,R1,NDIV JSRS R1,R1 ; varb.ndiv(vara) -- b = b / a -- = 250 LIS R3,' ' LOAD R1,PDSPCH JSRS R1,R1 ; dspch(' '); LOAD R3,PVARB LOADS R1,R3 LOAD R1,R1,NTODSP JSRS R1,R1 ; todsp(varb) -- outputs 250, we hope LOAD R1,PEXIT JSRS R1,R1 ; exit() END