The Past Master Club
ZX81

- SUPERTIC USIG THE MATH COPROCESSOR -
or
- ZX81 CALCULATOR -
&
- ZX81/TS1000 HOME COMPUTER BOOK -
&
- TONI BAKER & M/C -
 
For more data to POKE in first REM statement see:
http://www.geocities.com/klaus_vanv/GW/sprtc.htm
1   REM DATA FILLED I cannot remember the length
2  GOSUB 1050 init variables
3  REM 980 OLD U$ INPUT I can only copy my old notes; bare with me
4  REM GOTO 980 Check for errors
5  REM 900 NEW INPUT U$ REM statements are unREMed to activate
6  REM GOTO 700 Clear M/C area
10  PRINT AT F,F;
" INPUT M FOR M/C OR";
" R TO READ OR L TO LOAD M"
Options @ 10
12  INPUT I$  
18  IF I$="l" THEN INPUT M  
20  REM 20 Read or write data
22  IF I$="l" OR I$="R" OR I$="M"
THEN PRINT M;" ";
 
30  IF I$="l" OR I$="M"
THEN PRINT N;" ";
 
40  IF I$="l" OR I$="M"
THEN POKE M, N
 
50  IF I$="l" OR I$="R" OR I$="M"
THEN PRINT PEEK M;" ";CHR$ PEEK M
 
60  LET M = M + Q  
70  GOTO 20 loop til done
600  REM RESET REM STATEMENT
602  GOSUB 1050 init variables
604  FAST  
606  FOR I=M TO M+PEEK16511+256*PEEK 16512-P Length of 1sr REM statement
608  POKE I, F Fill with zeroes
610  NEXT I  
699  RETURN DONE
700  REM PRINT CHAR$ FOR ALL 1 TO 64 NUMBERS
702  LET U$ = ""  
704  REM GOTO 800  
706  LET U$=U$ + "6.64.62.65.144." Let B = 64, & let A = 65, & Sub B from A
708  LET U$=U$ + "217." EXX = EXCH ALL
710  LET U$=U$ + "205.145.64." Call 16,788 or HEX: call 4194 = Print CHR$ A;
712  LET U$=U$ + "217.16.250." EXX = EXCH ALL & Next B = JNC -6 = [708]
714  LET U$=U$ + "201." RETurn to DOS
800  REM PREPARE M/C FOR MATH COPROCESSOR
802  LET U$=U$ + "62.50.245." Let A = 50 & PUSH A&F
804  LET U$=U$ + "62.15." Let A = 15
806  FAST Speed up computer for Math coprocessor
808  LET U$=U$ + "205.29.21." CALL 5405[HL=151D]=PUSH_BYTE_A=15float
810  LET U$=U$ + "62.5." Let A = 5
812  LET U$=U$ + "205.29.21." CALL 5405[HL=151D]=PUSH_BYTE_A=5float
814  LET U$=U$ + "62.4." Let A = 4
816  LET U$=U$ + "205.29.21." CALL 5405[HL=151D]=PUSH_BYTE_A=4float
818  LET U$=U$ + "241." POP A&F
820  LET U$=U$ + "205.29.21." CALL 5405[HL=151D]=PUSH_BYTE_A=50float
822  LET U$=U$ + "239." RST28 = CALL CALCULATOR
830  REM CALCULATOR MODE
832  LET U$=U$ + "197." COPY Top INTO Cell 5
834  LET U$=U$ + "162." Top = 0.5
836  LET U$=U$ + "3." Top=Under-Top
838  LET U$=U$ + "1." EXCH Under WITH Top
840  LET U$=U$ + "196." COPY Top INTO Cell 4
842  LET U$=U$ + "5." Top=Under/Top
844  LET U$=U$ + "228." Top=PUSH Cell 4
846  LET U$=U$ + "5." Top=Under/Top
848  LET U$=U$ + "36." Top=INT (Top)
850  LET U$=U$ + "192." COPY Top INTO Cell 0
852  LET U$=U$ + "228." Top=PUSH Cell 4
854  LET U$=U$ + "4." Top=Under*Top
856  LET U$=U$ + "228." Top=PUSH Cell 4
858  LET U$=U$ + "4." Top=Under*Top
860  LET U$=U$ + "229." Top=PUSH Cell 5
862  LET U$=U$ + "1." EXCH Under WITH Top
864  LET U$=U$ + "3." Top=Under-Top
866  LET U$=U$ + "193." COPY Top IN Cell 1
868  LET U$=U$ + "162." Top=0.5
870  LET U$=U$ + "3." Top=Under-Top
872  LET U$=U$ + "228." Top=PUSH Cell 4
874  LET U$=U$ + "5." Top=Under/Top
876  LET U$=U$ + "36." Top=INT (Top)
878  LET U$=U$ + "194." COPY Top IN Cell 2
880  LET U$=U$ + "228." Top=PUSH CELL 4
882  LET U$=U$ + "4." Top=Under*Top
884  LET U$=U$ + "225." Top=PUSH CELL 1
886  LET U$=U$ + "1." EXCH Under WITH Top
888  LET U$=U$ + "3." Top=Under-Top
890  LET U$=U$ + "161." Top=1
892  LET U$=U$ + "3." Top=Under-Top
894  LET U$=U$ + "195." COPY Top INTO Cell 3
896  LET U$=U$ + "1." EXCH Under with T op
898  LET U$=U$ + "197." COPY Top INTO Cell 5
900  LET U$=U$ + "4." Top=Under*Top
902  LET U$=U$ + "224." Top=PUSH Cell 0
904  LET U$=U$ + "15." Top=Under+Top
906  LET U$=U$ + "52." DEFB34 EXIT CALC
908  REM EXIT CALCULATOR MODE
910  GOTO 950  
930  REM GET END OF MEMORY
932  LET U$=U$ + "42.12.64.35." Let HL=16,396[H12,L64] & INC HL
934  LET U$=U$ + "205.167.14." Call 3751[H14,L167]=POP_WORD==BC
936  LET U$=U$ + "197.209.25." PUSH BC & POP DE & ADD HL,DE
938  LET U$=U$ + "201." RETurn to DOS with end of memory
840  REM  
942  GOTO 998  
950  REM PRINT CHR$ A
952  LET U$=U$ + "62.16.215." Let A=16 & RST10==PRINT A
954  LET U$=U$ + "205.2.12." Call 3074[H12,L2]=POP_BYTE==A
956  LET U$=U$ + "215." RST10==PRINT A
958  LET U$=U$ + "62.26.215." Let A=26 & RST10==PRINT A
960  LET U$=U$ + "205.2.12." Call 3074[H12,L2]=POP_BYTE==A
962  LET U$=U$ + "215." RST10==PRINT A
964  LET U$=U$ + "62.17.215." Let A=17 & RST10==PRINT A
966  LET U$=U$ + "201." RETurn to DOS with end of memory
968  LET U$=U$ + "201." RETurn to DOS with end of memory
970  REM POKE 1 REM DATA U$ & CHECK DATA "."
980  FOR I=Q TO P REPEAT 3 TIMES
982  LET K$=U$(Q TO I) FIND K$=DATA STRING
984  IF U$=U$(I + Q)="." THEN GOTO 1000 K$=# FOUND
986  NEXT I LOOP
988  PRINT AT P,F;"ERROR" DATA ERROR
990  STOP END
1000  POKE M, VAL K$ ENTER DATA INTO "1 REM" AT M=16514
1002  LET U$=U$(I+R TO ) DROP K$ FROM STRING U$
1004  IF U$="" THEN GOTO 1050 DATA ENTRY DONE
1006  LET M=M+Q ADVANCE 1 BYTE INTO "1 REM"
1006  GOTO 980 LOOP TIL DONE
1008  REM RUN M/C PROGRAM IN "1 REM" AT 16514
1010  PRINT AT F,F;"YES OR NO (Y/N)?" LOOP TIL DONE
1012  INPUT I$ LOOP TIL DONE
1014  IF I$="N" THEN STOP CONTINUE?
1016  CLS  
1018  SLOW  
1020  RAND USR 16514 SHOW SUPERTIC BOARD DISPLAY
1020  FAST  
1020  STOP END
1030  REM SAVE ROUTINE
1032  GOSUB 600 INITIALIZE BOARD VARIABLES ETC.
1034  LET A=16507 MEMORY LENGTH
1036  SLOW  
1038  LET KVV=PEEK(A)+A/A  
1040  POKE A,KVV  
1040  LET U$=STR$ KVV + " CALC"  
1042  INPUT "SAVE PROGRAM ?", I$  
1044  SAVE U$  
1046  FAST  
1048  FAST  
1050  REM INIT VARIABLES
1052  LET H=CODE "="  
1054  LET Q=H/H  
1056  LET R=Q+Q  
1058  LET P=R+Q  
1060  LET F=Q-Q  
1062  LET N=F  
1064  LET N=F  
1066  LET M=16514  
1068  RETURN  
1070  STOP  
1072  REM END OF VARIABLES

A WORKING PROGRAM

sprtc.gif

1