/ FOCAL PATCH ROUTINES FOR KV8/I / TO ERASE S G=FACC() / TO PLOT S G=FNEW(X,Y,Z,W) / X = X CO-ORD. Y = Y CO-ORD. / Z = 0, SHORT VECTOR / = -1, LONG VECTOR / W = 0, VISIBLE / = -1, INVISIBLE / PATCH FADC AS AN ERASE FN. *1343 XADC, CLA TAD SXIC / COMBINED ABS. MODE AND ERASE-RESET. LDF EXC / ERASE RESET STA / SET STATUS DONE FOR INT. HANDLER. IND, DCA I FNSWA JMP I EFUN3I SXIC, 0406 FNSWA, FNSW / INDIRECT TO STATUS. /************************************* / PATCH INTERUPT HANDLER *2652 JMP I .+1 INTPTR RMF / FOR 8K FOCAL. /************************************* / PATCH FNEW ENTRY POINT. *FNTABF+14 XFNEW / PLOT FUNCTION. / PATCH USER AREA POINTER. *35 BOTTOM / INTERRUPT HANDLER EXTENSION. *4511 INTPTR, SRF / SCREEN FLAG JMP I HANDLER / NOT IT. TAD FNSW / GET STATUS POINTER SPA SNA CLA JMP READY / FINISHED THIS ONE TAD P / EXECUTE MODE. EXC STA COMMN, DCA FNSW / SET STATUS TO DONE JMP I HANDLER / BACK TO INT. HANDLER READY, CRF JMP COMMN HANDLER, 2654 / RETURN TO INTERUPT HANDLER /**************************** XFNEW, TAD FNSW SZA CLA JMP .-2 / WAIT IF PREVIOUS NOT FINISHED IOF JMS I INTEGER LDX / SET X CLA JMS FIND DCA FNSW / TEMP STORAGE FOR Y JMS FIND / GET VECTOR TYPE SMA CLA TAD SIX / LONG TAD FRC / SHORT DCA P / SET SHORT OR LONG RETN, JMS FIND / GET VISIBLE OR INVISIBLE IAC TAD P / SET MODE DCA P TAD FNSW / GET Y SRF JMP .-1 LDY / LOAD Y CLA IAC DCA FNSW / SET LOADED ION JMP I EFUN3I FIND, 00 TAD CHAR TAD MCOMMA SZA CLA JMS I 166 / ERROR, NOT ENOUGH ARGUMENTS. GETC / MOVE PAST COMMA SPNOR / IGNOR BLANKS PUSHJ EVAL / GET ARG. JMS I INTEGER JMP I FIND FRC, 440 P, 00 MCOMMA, -254 FNSW, 00 / PLOT STATUS POINTER. SIX, 140 /****************************** / ASSIGN MNEMONICS / FOCAL NOTATION USED EXC=6066 SRF=6071 LDF=6063 CRF=6072 EFUN3I=136 FNTABF=374 LDX=6064 LDY=6065 CHAR=66 GETC=JMS I 145 SPNOR=JMS I 160 PUSHJ=JMS I 140 EVAL=1613 INTEGER=53 BOTTOM=4510 $