www.Twisp.org

Post Reply
User avatar
tristanbgilb
Posts: 916
Joined: Tue Sep 01, 2020 9:20 pm
Contact:

www.Twisp.org

Post by tristanbgilb »

tristanbgilb wrote: Tue Sep 01, 2020 9:25 pm
tristanbgilb wrote: Mon Jan 23, 2023 9:53 am Image

Tristan B Gilbert

Image <=NUCLEAR BUTTON

NUCLEAR OPERATOR=>Image
tristanbgilb wrote: Fri Jan 27, 2023 3:29 pm Terry and I produced this album of him and our friends. Click Album Cover to be sent to youtube to hear songs.

Image

tristanbgilb wrote: Mon Jan 23, 2023 7:08 pm
tristanbgilb wrote: Sun Jan 22, 2023 9:51 am Avenger is my favorite video game for the Timex Sinclair 1000 ZX81


Image



SILVERSOFT ZX Compiler

Instruction Manual for Silversoft ZX Compiler

Page 1

SILVERSOFT
Introducing the ZX Compiler
Instructions on loading.
Place the cassette on side A, into the recorder. Follow loading instructions, as found in chapter 16 of the ZX81 manual. If at first the program does not load, try different tone and volume levels. If after this it still does not load, try a different tape recorder. There are two copies of ZX COMPILER on the tape. (Use File name "COMPILER")

About the ZX Compiler
The ZX COMPILER is a program, written in basic and machine code that will change a program in "BASIC" into machine code. This can be used to create programs or sub routines that can run up to twenty or thirty times faster than normal 'BASIC'. Because the ZX81 only has a capacity of 16K ram the compiler works in an integer-only, sub-set of BASIC. To save even more space commands have been left out that are not needed, for example REM:- which is not needed in compiled programs anyway and INPUT:- which can be made by a routine using gets and if....then statements. Once your program to be compiled is written, you run the compiler. After a period of fast mode, the program "NEWS" itself and leaves you with a single rem statement containing the machine code (it looks like random junk).
Once written you may either call the code from within a program or directly from the keyboard using LET X=USR 16595.

INSTRUCTIONS ON USE
The program to be compiled is written in 'REM' statements before line 1000 beyond line 1000 is the compiler. The reason for REM's is so you can have extra commands that can't be keyed-in, in normal BASIC. This does mean though that you will have to key in whole commands for example PRINT is P-R-I-N-T. eg:
1 REM PRINT"HELLO"
In the program there are to be no spaces, except in print statements. Also goto statements must be followed by a 'true' line, for example the following will not work.
1 REM PRINT"HELLO"
2 REM GOTO28
When you type run and newline, the screen will blank for a few seconds and then print up:
ERROR IN LINE 28
Which means it can't find any line 28
The compiler program may only have variables A-Z, no strings or arrays. (These maybe be implemented using other commands such as peek and poke).
-Variables in the compiler are not the same ZX81 Variables.

Page 2

Numbers may be 0-65535. To get a negative number use 65535-x
eg: -2=65536-2
There may seem a lot you can't do but it is enough to write most programs, (such as space invaders, breakout, etc.) The only way to really find out what the compiler can do is use it, read through the examples and work them out.
COMPILER COMMANDS
In this section I will go through all the commands available on the compiler.
In this section (variable) can mean a number of things:
1) A number 0-65535
2) A letter A-Z
3) RND followed by a variable
4)USR Followed by a variable
5) TOP
6) Deek followed by a variable
7) Peek followed by a variable
eg: RNDA RND200 RNDUSRDEEK16514!!
Top and DEEK need explaining, the others should be clear enough. Top will return the first position on the display that can be poked. It's basic equivalent is : PEEK 16396 + 256 *PEEK 16397 + 1
Deek is the opposite of doke and peeks two locations at the same time. (To return a number 0-65535) Top is the equivalent of DEEK 16396+1. The nascom and other computer use these commands. eg: It can be used for poking a Lazer base with one command.
1 REM DOKE TOP 1153
PRINT
This can either be followed by text enclosed in speech marks or a variable, (A-Z) it will print the chrs of the variable. The semi colon at the end of the print is automatic. To print at the start of a new line use the following:
1 REM PRINT 118
(Which is the same as the BASIC PRINT CHRS 118) So print can be used in two forms which are:
1. PRINT "--TEXT--"
2. PRINT (VARIABLE)
GET
This is the same as the BASIC INKEY, except only it returns the code (0-128) of the key pressed. It may only be used in one form, if no key is pressed it returns 128.
1. GET (VARIABLE)
eg: 1 REM GET A 2 REM PRINT A 3 REM GOTO 1
END
It is important that you end a compiler program with either an END if you want execution to stop, or RETURN (see later) if you want to continue the calling BASIC program.
Page 3

PAUSE
This may only be used in one form:
1) PAUSE (VARIABLE)
It is a delay, the length of which is determined by the (VARIABLE). The longest delay possible would be 65535, it lasts for 2 seconds!!
CLS
This is the same as BASIC CLS except it clears all 24 lines of the display, not just 22. It has only one form:
1. CLS
MOVE
This is the same as the BASIC PRINT AT, except you may "PRINT AT" all 24 lines down. It takes only one form:
1. MOVE (VARIABLE),(VARIABLE)
eg: 1 REM MOVE 23, 10 2 REM PRINT "HELLO" 3 REM END
LET
This is like the BASIC LET statement except you may not have long equations or brackets. It may take only two forms:
1. LET (VARIABLE) = (VARIABLE)
2. LET (VARIABLE) = (OPERATOR) (VARIABLE)
(OPERATOR) can be either +,-,* or /
SCROLL
This is the same as the BASIC SCROLL except that it is a lot quicker and scrolls all 24 lines of the screen.
GOTO
This is like the BASIC goto except the line number must exist. It may only take one form:
1. GOTO NUMBER (1-999)
GOSUB
This is the same as BASIC GOSUB, except for destination line number which must exist. It can only take one form:
1. GOSUB NUMBER (1-999)
RETURN
Used in conjunction with GOSUB, this is identical t its BASIC equivalent. Used when not in a GOSUB sub-routine, it will return you to BASIC and continue with the calling program. It may only take one form:
1. RETURN
PLOT
This is the same as BASIC PLOT. It may take only one form:
1. PLOT (VARIABLE), (VARIABLE)
UNPLOT
This is the same as BASIC UNPLOT. It may take only one form:
1. UNPLOT (VARIABLE),(VARIABLE)
POKE
This is the same as its BASIC equivalent. It may only take one form:
1. POKE (VARIABLE),(VARIABLE)

Page 4

DOKE
Is used on the nascom and other computer, it pokes two locations at the same time with a number of up to 65535. The low byte of the number at the address and the high byte at address +1. For more information see example programs. It can only take one form:
1. DOKE (VARIABLE),(VARIABLE)
IF is used in only one way:
1. IF (VARIABLE) (SIGN)(VARIABLE)______
(SIGN) can mean either =,<>,<>. There is no need to use the then statement. For more information see example programs.
eg: IF A>2 GOTO 10
SCROLL
These are all the commands allowed in the compiler. But as you can see from the example programs, these are enough.
EXAMPLE 1
This program will invert the screen, then Return to basic not stop. It will invert all 24 lines of the display.
1 REM LETB=24
2 REM LETA=TOP
3 REM IFPEEKA=118GOTO10
4 REM LETZ=PEEKA+128 : NUMBER OF LINES
5 REM POKEA,Z : TOP OF SCREEN
6 REM LETA=A+1 : END OF LINE ?
7 REM GOTO3 : INVERT IT
10 REM LET B=B-1
11 REM IFB=0RETURN : "RETURN" TO BASIC, USE END
12 REM GOTO6 STOP WITH AN ERROR CODE:
Try this program out, then try it in BASIC to see how slow it is.
EXAMPLE 2
This program demonstrates the DEEK and DOKE commands, DOKE is used to 'save' the variable while it is used for something else, DEEK reads it back again.
1 REM LETA=45192
2 REM DOKE30000,A
3 REM LETA=0
4 REM LETA=DEEK30000
5 REM IFA<>45192PRINT"THIS WILL NEVER BE PRINTED"
6 REM END
In this program location 30000 was chosen because it is high up in the memory and will not interfere with anything.
WHEN YOU HAVE WRITTEN A PROGRAM
When you have written your program in REM statements, SAVE a copy on cassette (in case you have to de-bug it) Then RUN, this will run the compiler as it will go past REMS. After a delay (10mins for 4k program0 the screen will return. If it says error, correct error and re-run it. If it comes up with one rem followed by junk then it has finished compiling, BEFORE YOU DO ANYTHING ELSE type in: 2 RAND USR 16595

Page 5

Then SAVE another copy of the program and run it. If the program does something odd, try and see what is happening, re-load the first copy and correct the program.
MORE FACTS
Don't forget in machine code there is no 'break' key to test for one use.
1. REM GETA
2. REM IFA=0END
Even a one line compiler program when compiled may seem to take up a lot of room, this is quite normal because about 1K is taken up with variables and routines. The compiler was really developed for small fast routines to be used in a BASIC program or entire games in machine code.
If you want to interchange basic variables and compiler variables, the compiler variables are held at 16514 low byte first, high byte next. A(low) is at 16514, B(low) is at 16515 and so on.
In the program you will see two sets of inverse AJGs this is so the author can identify any compiled program. (No program may be used personal gain which in any way connected with the compiler without the permission of the author.
Try to use POKE and PEEK, (deeks and dokes) more as they are very fast in the compiler. Things like PRINT, PRINT AT, PLOT, UNPLOT use basic routines to space so they will only be executed at about twice the speed as normal.
The RND function is not very random when displaying the results, but it is good enough for normal random decisions. (This is again due to the lack of space available). Compilers available for other computers may need 4K of code for one line of compiled program!!
MORE EXAMPLES
1) Add all the numbers 1-1000 together.
(returns the answer in s 165114+16515)
1 REM LETA=0
2 REM LETC=0
3 REM LETA=A+C
4 REM LETC=C+1
5 REM IFC 101 GOTO3
6 REM END
Type this in, then RUN it, to see the answer
PRINT PEEK 16514+256*PEEK 16515
try out he program in BASIC as well and see the difference in speed

Page 6

2)
1 REM LET P=0
2 REM MOVE23,P
3 REM PRINT34
4 REM GET A
5 REM IFA=33LETp=p-1 key 5
6 REM IFA=36LETp=P+1 key 8
7 REM IFP=65535LETP=0
8 REM IFP=31LETp=30
9 REM SCROLL
10 REM GOTO2


Image


VB81 Project - ZX81 Emulator Download

http://zx81.vb81.free.fr/

Image

Code: Select all

   
          
    10 LET H=34
    20 LET K=22
    30 PLOT (H),(K)
    40 LET R=20
    50 LET T=R
    60 LET U=R
    70 LET L=0
    80 LET L=L+1
    90 IF L=R THEN GOTO 150
   100 LET E=K+L
   110 LET F=K-L
   120 PLOT (H),(E)
   130 PLOT (H),(F)
   140 GOTO 80
   150 LET L=0
   160 LET L=L+1
   170 IF L=R THEN GOTO 230
   180 LET E=(H+L)
   190 LET F=(H-L)
   200 PLOT (E),(K)
   210 PLOT (F),(K)
   220 GOTO 160
   230 LET T=R
   240 LET X=T
   250 LET Y=0
   260 LET Y=Y+1
   270 IF Y=R THEN GOTO 420
   280 LET G=R*R
   290 LET J=Y*Y
   300 LET W=(G-J)
   310 LET T=X
   320 LET X=(W/T)
   330 LET A=(X+H)
   340 LET B=(H-X)
   350 LET C=(Y+K)
   360 LET D=(K-Y)
   370 PLOT (A),(C)
   380 PLOT (B),(C)
   390 PLOT (A),(D)
   400 PLOT (B),(D)
   410 GOTO 260
   420 LET Y=R
   430 LET X=0
   440 LET X=X+1
   450 IF X=R THEN GOTO 600
   460 LET M=R*R
   470 LET N=X*X
   480 LET Q=(M-N)
   490 LET U=Y
   500 LET Y=(Q/U)
   510 LET A=(X+H)
   520 LET B=(H-X)
   530 LET C=(K-Y)
   540 LET D=(Y+K)
   550 PLOT (B),(C)
   560 PLOT (A),(C)
   570 PLOT (B),(D)
   580 PLOT (A),(D)
   590 GOTO 440
   600 STOP 

Code: Select all

    10 REM LETH=34
    20 REM LETK=22
    30 REM PLOTH,K
    40 REM LETR=20
    50 REM LETT=R
    60 REM LETU=R
    70 REM LETL=0
    80 REM LETL=L+1
    90 REM IFL=RGOTO150
   100 REM LETE=K+L
   110 REM LETF=K-L
   120 REM PLOTH,E
   130 REM PLOTH,F
   140 REM GOTO80
   150 REM LETL=0
   160 REM LETL=L+1
   170 REM IFL=RGOTO230
   180 REM LETE=H+L
   190 REM LETF=H-L
   200 REM PLOTE,K
   210 REM PLOTF,K
   220 REM GOTO160
   230 REM LETT=R
   240 REM LETX=T
   250 REM LETY=0
   260 REM LETY=Y+1
   270 REM IFY=RGOTO420
   280 REM LETG=R*R
   290 REM LETJ=Y*Y
   300 REM LETW=G-J
   310 REM LETT=X
   320 REM LETX=W/T
   330 REM LETA=X+H
   340 REM LETB=H-X
   350 REM LETC=Y+K
   360 REM LETD=K-Y
   370 REM PLOTA,C
   380 REM PLOTB,C
   390 REM PLOTA,D
   400 REM PLOTB,D
   410 REM GOTO260
   420 REM LETY=R
   430 REM LETX=0
   440 REM LETX=X+1
   450 REM IFX=RGOTO600
   460 REM LETM=R*R
   470 REM LETN=X*X
   480 REM LETQ=M-N
   490 REM LETU=Y
   500 REM LETY=Q/U
   510 REM LETA=X+H
   520 REM LETB=H-X
   530 REM LETC=K-Y
   540 REM LETD=Y+K
   550 REM PLOTB,C
   560 REM PLOTA,C
   570 REM PLOTB,D
   580 REM PLOTA,D
   590 REM GOTO440
   600 REM RETURN

Code: Select all

# REM **COMPILER**
  1000  REM [HEX:\
17,17,28,34,32,35,2E,31,\
2A,37,17,17,76 ]

  1010 FAST 
  1011 LET Q=3950
  1012 LET Q1=2830
  1013 LET Q2=3320
  1014 LET Q3=3630
  1015 LET Q4=3970
  1016 LET Q5=1320
  1017 LET Q6=4
  1020 LET P=28858
  1030 LET P1=16514
  1040 GOSUB 2920
  1050 IF PEEK (P1-1)<>234 THEN GOTO Q1
  1060 IF PEEK P1=118 THEN GOTO Q1
  1070 GOSUB 2880
  1080 LET A$=""
  1090 LET A$=A$+CHR$ PEEK P1
  1100 LET P1=P1+1
  1110 IF PEEK (P1-1)<>118 THEN GOTO 1090
  1120 IF PEEK (P1+1)*256+PEEK (P1+2)=1010 THEN GOTO 3690
  1130 LET P1=P1-3
  1140 LET T$=A$( TO 2)
  1150 LET B$=A$+"      "
  1160 LET J=0
  1170 LET J=J+(T$="RE")*2170+(T$="SC")*1200+(T$="PR")*1360+(T$="GE")*1530+(T$="EN")*1620+(T$="PA")*1670+(T$="CL")*1720+(T$="MO")*1770+(T$="LE")*1890+(A$( TO 3)="GOT")*2060+(A$( TO 3)="GOS")*2130+(T$="IF")*2200+(T$="PO")*2430+(T$="UN")*2550+(T$="PL")*2580+(T$="DO")*2720
  1180 IF NOT J THEN LET J=Q1
  1190 GOTO J
  1201 IF B$(7)<>CHR$ 118 THEN GOTO Q1
  1202 LET U$="2A0C40112100EB1901F702EDB00620AF131210FC"
  1203 GOSUB Q3
  1204 GOTO Q5
  1320 LET P1=P1+8
  1330 GOTO 1050
  1360 LET B$=B$(6 TO )
  1370 IF B$(1)=CHR$ 11 THEN GOTO 1420
  1380 GOSUB Q2
  1390 LET U$="7DD7"
  1400 GOSUB Q3
  1410 GOTO Q5
  1420 GOSUB Q
  1430 LET U$="CDBA40"
  1440 GOSUB Q3
  1450 POKE P,CODE (B$(1))
  1460 GOSUB Q
  1470 IF B$(1)=CHR$ 11 THEN POKE P+1,255
  1480 LET P=P+1
  1490 IF B$(1)=CHR$ 11 THEN GOTO 1510
  1500 GOTO 1450
  1510 LET P=P+1
  1520 GOTO Q5
  1530 LET B$=B$(Q6 TO )
  1540 LET U$="CDBB02444D51142808CDBD077ECB7728023E8021004077233600"
  1550 GOSUB Q3
  1560 LET V=CODE B$(1)
  1570 IF CODE B$(2)<>118 THEN GOTO Q1
  1580 IF V<38 OR V>63 THEN GOTO Q1
  1590 LET V=(V-38)*2+130
  1600 POKE P-6,V
  1610 GOTO Q5
  1620 LET B$=B$(Q6 TO )
  1630 IF B$(1)<>CHR$ 118 THEN GOTO Q1
  1640 LET U$="CFFF"
  1650 GOSUB Q3
  1660 GOTO Q5
  1670 LET B$=B$(6 TO )
  1680 GOSUB Q2
  1690 LET U$="2B7CB520FB"
  1700 GOSUB Q3
  1710 GOTO Q5
  1720 LET B$=B$(Q6 TO )
  1730 IF B$(1)<>CHR$ 118 THEN GOTO Q1
  1740 LET U$="2A0C40161823062036002310FB1520F5010000CDF508"
  1750 GOSUB Q3
  1760 GOTO Q5
  1770 LET B$=B$(5 TO )
  1780 GOSUB Q2
  1790 GOSUB Q4
  1830 LET U$="45"
  1840 GOSUB Q3
  1850 GOSUB Q2
  1860 LET U$="4DCDF508"
  1870 GOSUB Q3
  1880 GOTO Q5
  1890 LET B$=B$(Q6 TO )
  1900 LET L=(CODE B$-38)*2+130
  1910 LET B$=B$(3 TO )
  1920 GOSUB Q2
  1930 GOSUB 3570
  1940 IF CODE B$=118 THEN GOTO 2020
  1950 LET U$="EB"
  1960 GOSUB Q3
  1970 LET S$=B$(1)
  1980 GOSUB Q
  1990 GOSUB Q2
  1991 LET N$="CD0913"
  1992 IF PEEK 4869=197 THEN LET N$="CD0513"
  2000 LET U$=(N$ AND S$="*")+("EBCDC440" AND S$="/")+("19" AND S$="+")+("EBA7ED52" AND S$="-")
  2010 GOSUB Q3
  2020 LET U$="220040"
  2030 GOSUB Q3
  2040 POKE P-2,L
  2050 GOTO Q5
  2060 LET B$=B$(5 TO )
  2070 GOSUB Q2
  2080 POKE P-3,195
  2090 LET G(N1,1)=PEEK (P-2)+PEEK (P-1)*256
  2100 LET G(N1,2)=P-2
  2110 LET N1=N1+1
  2120 GOTO Q5
  2130 LET B$=B$(6 TO )
  2140 GOSUB Q2
  2150 POKE P-3,205
  2160 GOTO 2090
  2170 LET U$="C9"
  2180 GOSUB Q3
  2190 GOTO Q5
  2200 LET B$=B$(3 TO )
  2210 GOSUB Q2
  2220 GOSUB 3570
  2230 LET U$="EB"
  2240 GOSUB Q3
  2250 LET S$=B$(1)
  2260 GOSUB Q
  2270 GOSUB Q2
  2280 IF CODE B$>37 THEN GOSUB Q
  2290 IF CODE B$<38 THEN GOSUB 3600
  2300 LET U$="A7ED52"
  2310 IF S$="<>" THEN LET U$=U$+"CA"
  2320 IF S$="=" THEN LET U$=U$+"C2"
  2330 IF S$="<" THEN LET U$=U$+"DA"
  2340 IF S$=">" THEN LET U$=U$+"D2"
  2350 LET U$=U$+"0000"
  2360 IF S$<>">" AND S$<>"=" AND S$<>"<" AND S$<>"<>" THEN GOTO Q1
  2370 GOSUB Q3
  2380 LET G(N1,2)=P-2
  2390 LET G(N1,1)=1000
  2400 LET N1=N1+1
  2410 LET A$=B$
  2420 GOTO 1140
  2430 LET B$=B$(5 TO )
  2440 GOSUB Q2
  2450 GOSUB Q4
  2490 LET U$="EB"
  2500 GOSUB Q3
  2510 GOSUB Q2
  2520 LET U$="EB73"
  2530 GOSUB Q3
  2540 GOTO Q5
  2550 LET B$=B$(3 TO )
  2560 LET U$="3EA0323040"
  2570 GOTO 2590
  2580 LET U$="3E9B323040"
  2590 GOSUB Q3
  2600 LET B$=B$(5 TO )
  2610 GOSUB Q2
  2620 LET U$="4D"
  2630 GOSUB Q3
  2640 GOSUB Q4
  2680 GOSUB Q2
  2690 LET U$="45CDB20B"
  2700 GOSUB Q3
  2710 GOTO Q5
  2720 LET B$=B$(5 TO )
  2730 GOSUB Q2
  2740 GOSUB Q4
  2771 LET U$="EB"
  2780 GOSUB Q3
  2790 GOSUB Q2
  2800 LET U$="EB732372"
  2810 GOSUB Q3
  2820 GOTO Q5
  2830 IF PEEK (P1-1)=118 THEN GOTO 3180
  2840 IF P1=16509 THEN GOTO 3180
  2850 LET P1=P1-1
  2860 GOTO 2830
  2870 SLOW 
  2880 LET L(N,1)=PEEK (P1-5)*256+PEEK (P1-4)
  2890 LET L(N,2)=P-12288
  2900 LET N=N+1
  2910 RETURN 
  2920 DIM L(100,2)
  2930 DIM G(70,2)
  2940 LET N=1
  2950 LET N1=N
  2960 LET U$="E17E23E5FEFFC8D718F601FFFFA7ED520330FAC5E1C9A6AFAC"
  2965 LET U$=U$+"FD3622002182403600237DFEBA20F8"
  2970 GOSUB Q3
  2980 RETURN 
  2990 IF N1=1 THEN RETURN 
  3000 FOR X=1 TO N1-1
  3010 LET PO=G(X,2)
  3020 LET L=G(X,1)
  3030 LET G=1
  3040 GOTO 3120
  3050 LET G=G+1
  3060 IF G=N THEN GOTO 3150
  3070 GOTO 3040
  3080 POKE PO,L(G,2)-256*INT (L(G,2)/256)
  3090 POKE PO+1,INT (L(G,2)/256)
  3100 NEXT X
  3110 RETURN 
  3120 IF L=1000 THEN IF PO-12288<=L(G,2) THEN GOTO 3080
  3130 IF L=L(G,1) THEN GOTO 3080
  3140 GOTO 3050
  3160 GOTO 3200
  3170 RETURN 
  3190 LET L=PEEK P1*256+PEEK (P1+1)
  3200 SLOW 
  3201 POKE 16418,0
  3202 PRINT AT 22,0;"*******ERROR IN ";L;"******";AT 0,0;
  3203 POKE 16418,2
  3204 LIST L
  3205 GOTO 3200
  3230 LET V=CODE B$
  3240 IF V<38 OR V>63 THEN GOTO Q1
  3250 LET V=(V-38)*2+16514
  3260 LET U$="2A"
  3270 GOSUB Q3
  3280 POKE P,V-16384
  3290 POKE P+1,64
  3300 LET P=P+2
  3310 RETURN 
  3320 LET V=1
  3330 IF CODE B$(V)>37 OR CODE B$(V)<28 THEN GOTO 3360
  3340 LET V=V+1
  3350 GOTO 3330
  3360 IF V=1 THEN GOTO 3420
  3370 LET V=VAL (B$( TO V-1))
  3380 IF V<>INT V OR V>65536 THEN GOTO Q1
  3390 GOSUB 3530
  3400 POKE P+1,INT (V/256)
  3405 LET P=P+2
  3410 RETURN 
  3420 LET U$=""
  3430 IF B$( TO 3)="TOP" THEN LET U$="2A0C4023"
  3440 GOSUB 3780
  3450 IF B$( TO 3)<>"USR" THEN GOTO 3850
  3460 LET B$=B$(Q6 TO )
  3470 GOSUB Q2
  3480 POKE P-3,205
  3490 RETURN 
  3500 IF U$="" THEN GOTO 3220
  3510 GOSUB Q3
  3520 RETURN 
  3530 LET U$="21"
  3540 GOSUB Q3
  3550 POKE P,V-256*INT (V/256)
  3560 RETURN 
  3570 IF CODE B$<28 OR CODE B$>63 THEN RETURN 
  3580 GOSUB Q
  3590 GOTO 3570
  3600 IF CODE B$<28 OR CODE B$>37 THEN RETURN 
  3610 GOSUB Q
  3620 GOTO 3600
  3630 POKE P,CODE U$*16+CODE U$(2)-476
  3640 LET U$=U$(3 TO )
  3650 LET P=P+1
  3660 IF P>=32700 THEN STOP 
  3670 IF U$="" THEN RETURN 
  3680 GOTO Q3
  3690 GOSUB 2990
  3700 LET J=P-12287
  3710 LET P=28672
  3720 LET U$="210000E5C103E52182401182701A7723137DB920F87CB820F4E136A62336AF2336AC233676E5118040A7ED52227F40E123C30304"
  3730 GOSUB Q3
  3740 LET P=J
  3750 POKE 28673,P-256*INT (P/256)
  3760 POKE 28674,INT (P/256)
  3770 RAND USR 28672
  3780 IF B$( TO 3)<>"RND" THEN RETURN 
  3790 LET U$="D92A3240545D29291929292919223240EB"
  3800 GOSUB Q3
  3810 LET B$=B$(Q6 TO )
  3820 GOSUB Q2
  3830 LET U$="EBA7ED5230FB19E5D9E1"
  3840 RETURN 
  3850 IF B$( TO Q6)<>"PEEK" THEN GOTO 3900
  3860 LET B$=B$(5 TO )
  3870 GOSUB Q2
  3880 LET U$="6E2600"
  3890 GOTO 3500
  3900 IF B$( TO Q6)<>"DEEK" THEN GOTO 3500
  3910 LET B$=B$(5 TO )
  3920 GOSUB Q2
  3930 LET U$="D55E2356EBD1"
  3940 GOTO 3500
  3950 LET B$=B$(2 TO )
  3960 RETURN 
  3970 IF B$(1)="," THEN GOTO 4000
  3980 GOSUB Q
  3990 GOTO Q4
  4000 GOSUB Q
  4010 RETURN 
www.TristanGilbert.com

Image <=NUCLEAR BUTTONImage

Image

RADIO
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest