; from part 1 of LLL BASIC interpreter article lREM" THIS ROUTINE WILL PLOT A SET OF AXIS AND A QUADRATIC FUNCTION 2REM" ON A DISPLAY AND THE~ LABEL IT. IT USES A 4 USER WRITTEN 3REK" SUB-ROUTlNE5: 4REM 5REM" CALL (I,X,Y,C) - PLACES C IN COLUMN X, ROW Y OF THE DISPLAY 6REM" WHERE C IS AN ASCII CODED CHARACTER 7REM 8REM" CALL(2,A(0)) - READS A CHARACTER STRING FROM THE TTY AND STORES 9REM" IT IN ARRAY A lOREM llREM" CALL(3,A(0)) - WRITES THE CHARACTER STRING STORED IN ARRAY A 12REM" TO THE DISPLAY 13REM 14REM" CALL(4) - CLEARS THE DISPLAY lSREM 16REM" START OF PROGRAM 17REM 18REM" RESERVE STORAGE AREA FOR TITLE 20DIMA(10) 30REM" CLEAR SCREEN 40CALL(4) S0REM" ASK FOR AND INPUT TITLE SSPRINT"WHAT SHOULD PLOT BE LABELED?"; 60CALL(2,A(0)) 70REM" DRAW AXIS 80GOSUB500 90REM" PLOT FUNCTION 100LETX=-29 110GOSUB1000 120CALL( I, 31+X,8-Y, 248) 130LETX-X+1 140IFX><31 THENll0 150REM" OUTPUT TITLE 160CALL(3,A(0) ) 165REM" WE'RE DONE 170STOP 500REM" THIS SUB. WILL DRAW A SET OF AXIS 505LETX-l 510LETY-7 520LETC-I73 530CALL(I,X. Y .C) 540LETX-X+1 550IFX><65THEN530 560LETX=31 570LETY-l 575LETC=252 580CALL(1,X, Y ,C) 590LETY=Y+1 600IFY><17THEN500 610RETURN 1000REM" GIVEN X nus SUB. CALCULATES (17/900)*X**2-8 1005REM" FIRST CHECK IF X=0 AS iT WILL "UPSET FLT. PHT. PACK. 1010IFX="THEN1045 1015REM" WE'RE OK - CALCULATE FUNCTION 1020LETY=X*X 1025LETK"17/900 1030LETY=Y*K 1035LETY=Y-R 1040RETURN 1045LETY=-8 1050RETURN '"'END READY ;ASSEMBLY LANGUAGE PROGRAM, DEFINE EXTERNALS FIX EQU 14912Q COPDH EQU 13212Q FREG1 EQU 16567Q ORG 16614Q DW SBEND ; ENTRIES IN SUB TABLE DB 1 DW SCOPE DB 2 DW SUB2 DB 3 DW SUB3 DB 4 DW SUB4 DB 377Q ;NO MORE ENTRYS ;THE CALL TO THIS ROUTINE IS OF THE FORM ; CALL(l X Y C) ;THE VALUE OF C IS PLACED IN COLUMN X LINE Y ;OF THE DISPLAY SCOPE: POP D LXI H,FREG1 CALL COPDH XCHG CALL FIX INX D INX D INX D LDAX D MOV B,A POP D LXI H,FREG1 CALL COPDH XCHG CALL FIX INX D INX D INX D LDAX D MOV C,A POP D LXI H,FREG1 CALL COPDH XCHG CALL FIX INX D INX D INX D LDAX D LXI H,135377Q LXI D,1000Q LUP: DCR C JZ ADINC DAD D JMP LUP ADINC: MOV E,A DAD D MOV M,B RET ;SUB2 READS A TITLE FROM TTY VIA ODT READ: EQU 333Q SUB2: POP H PUSH H MVI C,0 LUP2: INX H CALL REED CPI 215Q JZ DUN2 INR C MOV M,A JMP LUP2 DUN2: POP H MOV M,C MVI A, 212Q RST 6 RET ;SUB3 WRITES TITLE TO DISPLAY SUB3: POP H LXI D, 137741Q MOV C,M INX H LUP3: MOV A,M STAX D INX H INX D DCR C JNZ LUP3 ;SUB4 CLEARS SCREEN SUB4: LXI H, 136000Q MVI A,240Q MVI D,0 MVI C,4 LUP4: MOV M,A INX H DCR D JNZ LUP4 DCR C JNZ LUP4 RET SBEND EQU $ END