[Zx81:Type-Ins] "Your Computer" campaign...

Discussion about ZX80 / ZX81 Software
Post Reply
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

"Your computer" 02/84

"DataCalc"

/Basic tool/

Contributor : Antipontifex.

Code: Select all

1 REM DATACALC
3 REM *********
5 SLOW
6 LET CC=0
8 LET P=3
20 PRINT AT 5,9;"˜ EXISTING DATA";AT 7,9;"™ SET UP"
30 IF INKEY$="" THEN GOTO 30
40 IF INKEY$<>"2" THEN GOSUB 1000
50 IF INKEY$<>"2" THEN GOTO 2000
55 CLS
60 PRINT AT 5,3;"« NUMBER OF ROWS ?";AT 7,3;"  NUMBER OF COLUMNS ?"
70 INPUT N1
80 LET N=N1+1
85 LET L=N1+(N1<=19)+19*(N1>19)
87 LET J=L
90 PRINT AT 5,3;" ";AT 7,3;"«"
100 INPUT C1
105 FAST
110 DIM F$(N,10*C1+3)
120 DIM K$(1,10*C1+3)
125 DIM A$(C1,100)
127 LET C=1
130 LET K=1
132 LET HL=1
134 LET HC=1
140 LET M=1
150 REM LOAD COLUMN NUMBERS
151 REM ***********************
155 LET K$(1,1 TO 3)="®®®"
160 FOR X=4 TO (C1-1)*10+4 STEP 10
170 LET K$(1,X TO X+9)="®®K"+STR$ VAL "((X+6)/10)"+"®®®®®®"
180 NEXT X
189 REM LOAD MAIN STRINGS
190 REM ***********************
200 FOR R=1 TO N1
205 LET F$(R,1 TO 3)=STR$ VAL "R"+" "
210 FOR F=4 TO (C1-1)*10+4 STEP 10
220 LET F$(R,F TO F+9)="0        À"
230 NEXT F
240 NEXT R
330 CLS
340 GOSUB 1000
350 GOTO 2000
400 REM CURSOR LOCATION
401 REM ***********************
410 LET R=INT((PC-PS-3)/33)+M-1
420 LET P=INT(((PC-PS-3)/33-INT((PC-PS-3)/33)+.01)*33)+3
430 LET C=(P-7)/10+(K-1)
440 LET F=(K*10-6)+(P-3)
450 RETURN
1000 REM PRINT MAIN SHEET
1001 REM **********************
1002 FAST
1045 PRINT AT 0,0;K$(1,K*10-9 TO K*10+22)
1060 FOR R=M TO J
1070 PRINT F$(R,1 TO 3);F$(R,K*10-6 TO K*10+22)
1080 NEXT R
1085 PRINT AT J-M+2,0;"--------------------------------"
1090 PRINT AT J-M+3,3;F$(N,K*10-6 TO K*10+22)
1092 LET CC=0
1100 RETURN
2000 REM CURSOR
2001 REM ***********************
2002 SLOW
2010 LET PS=PEEK(16396)+PEEK(16397)*256+1
2020 LET PC=PS+(HL*33)+P
2030 GOTO 2070
2040 LET PP=PC
2050 LET PC=PC+(CODE INKEY$=36)*\
10*(INT ((PC-PS+10)/33)<>(PC-PS+\
10)/33)+(CODE INKEY$=34)*33*(PC-\
PS<(L*33))-(CODE INKEY$=33)*10*(\
INT ((PC-PS-3)/33)<>(PC-PS-3)/33\
)-(CODE INKEY$=35)*33*(PC-PS>66)
2060 POKE PP,PEEK(PP)-128
2062 IF PP=PC AND INKEY$="8" OR PP=PC AND INKEY$="5" THEN LET CC=CC+1
2065 GOSUB 3000
2067 SLOW
2070 POKE PC,PEEK(PC)+128
2080 GOTO 2040
3000 REM COMMANDS
3001 REM **********************
3005 IF CC=2 THEN GOTO 3550
3007 IF PC<>PP THEN LET CC=0
3010 IF INKEY$="M" THEN GOTO 3100
3012 IF INKEY$="L" THEN GOTO 3200
3015 IF INKEY$="F" THEN GOTO 4000
3016 IF INKEY$="H" THEN GOTO 3475
3017 IF INKEY$="T" THEN LET HC=2
3020 IF INKEY$="K" THEN GOTO 3300
3025 IF INKEY$="P" THEN COPY
3030 IF INKEY$="J" THEN GOTO 3500
3035 IF INKEY$="S" THEN GOTO 3800
3040 IF INKEY$="C" THEN GOTO 3700
3045 IF INKEY$="D" THEN GOTO 3600
3050 IF INKEY$="A" THEN GOTO 3900
3055 IF INKEY$="O" THEN GOTO 4800
3057 IF INKEY$="X" THEN GOTO 4785
3060 IF INKEY$="V" THEN GOTO 5001
3070 RETURN
3100 REM FORMAT
3101 REM ***********************
3102 FAST
3105 FOR C=HC TO C1
3106 LET F=C*10-6
3115 FOR R=HL TO N
3117 IF F$(R,F TO F+8)="         " THEN GOTO 3150
3120 LET XS=VAL F$(R,F TO F+8)
3125 LET XL=INT(ABS XS+.005)+SGN XS
3130 LET XP=INT((ABS(XS-XL)*100)+.5)
3135 LET Z$=STR$ XP
3140 LET Z$=STR$ XL+"."+("0"+Z$)(LEN Z$ TO)
3142 LET F$(R,F TO F+8)="         "
3145 LET F$(R,F+6-(LEN STR$ XL) TO F+8)=Z$
3150 NEXT R
3155 NEXT C
3160 GOSUB 1045
3165 RETURN
3200 REM OVERPRINT LABELS
3201 REM ***********************
3215 PRINT AT 0,0;K$(1,1 TO 9)
3225 FOR R=M TO J
3230 PRINT F$(R,1 TO 12)
3235 NEXT R
3240 RETURN
3300 REM ENTER A COLUMN
3301 REM ***********************
3305 FAST
3310 GOSUB 400
3312 LET PC=PS+(HL*33)+P
3315 LET M=1
3320 GOSUB 3630
3330 SLOW
3340 FOR Q=HL TO N1
3342 IF Q=20 OR Q=39 OR Q=58 OR Q=77 THEN GOSUB 3650
3345 LET PK=PS+((Q-M+1)*33)+P
3350 POKE PK,PEEK(PK)+128
3360 INPUT X$
3370 IF X$="" OR X$="R" THEN GOTO 3390
3372 IF X$(1)="=" THEN GOSUB 3475
3373 IF X$(1)="?" THEN GOSUB 3490
3375 IF X$(LEN X$)=":" THEN GOSUB 3420
3380 LET F$(Q,F TO F+8)=X$
3390 PRINT AT Q-M+1,P;F$(Q,F TO F-P+29)
3392 IF X$="R" THEN RETURN
3410 NEXT Q
3415 RETURN
3420 REM REPEAT ROUTINE
3421 REM ***********************
3430 LET X$=X$(1 TO LEN X$-1)
3440 FOR Y=F TO (C1*10) STEP 10
3450 LET F$(Q,Y TO Y+8)=X$
3455 NEXT Y
3470 RETURN
3475 REM COLUMN HEADING ROUTINE
3476 REM ***********************
3480 GOSUB 400
3485 LET HL=R+1
3487 RETURN
3500 REM JUMP
3501 REM ***********************
3510 INPUT J$
3515 IF J$="R" THEN RETURN
3520 LET K=VAL J$
3525 IF K>C1-2 THEN LET K=C1-2
3530 LET CC=0
3535 GOSUB 1045
3540 RETURN
3550 REM CURSOR JUMP
3551 REM ***********************
3555 LET KK=K+((INKEY$="8")*(K<(C1-2)))-((INKEY$="5")*(K>1))
3560 IF K=1 AND K=KK OR K=C1-2 AND K=KK THEN RETURN
3565 LET K=KK
3570 GOSUB 1045
3575 RETURN
3600 REM DROP OF RISE
3601 REM ***********************
3610 GOSUB 400
3615 INPUT X$
3625 LET M=VAL X$
3630 IF M>N1-L+1 THEN LET M=N1-L+1
3635 LET J=(M+18)*(N+18)<=N1)+N1*((M+18)>N1)
3640 GOSUB 1045
3645 RETURN
3650 REM DROP ONE PAGE
3651 REM ***********************
3652 FAST
3653 CLS
3655 LET M=M+19
3660 LET J=(M+18)*((M+18)<=N1)+N1*((M+18)>N1)
3670 GOSUB 1045
3675 SLOW
3680 RETURN
3700 REM CALCULATE
3701 REM ***********************
3705 FAST
3710 FOR C=HC TO C1
3720 LET F=C*10-6
3730 IF A$(C,1)=" " THEN GOTO 3790
3740 FOR R=HL TO N1
3760 LET F$(R,F TO F+8)=STR$ VAL A$(C)
3770 NEXT R
3780 IF F$(N,F)<>" " THEN GOSUB 3810
3790 NEXT C
3792 GOSUB 1045
3795 RETURN
3800 REM SUM OF A COLUMN
3801 REM ***********************
3805 GOSUB 400
3808 FAST
3810 LET S=0
3820 FOR R=HL TO N1
3830 LET S=S+VAL F$(R,F TO F+8)
3840 NEXT R
3850 LET F$(N,F TO F+8)=STR$ VAL "S"
3870 GOSUB 1090
3880 RETURN
3900 REM ADD OR AMEND
3901 REM ***********************
3910 POKE PC,PEEK(PC)+128
3920 GOSUB 400
3930 LET Q=R
3950 INPUT X$
3960 IF X$="R" OR X$="" THEN GOTO 3990
3965 IF X$(1)="=" THEN GOSUB 3475
3967 IF X$(1)="?" THEN GOSUB 3490
3970 IF X$(LEN X$)=":" THEN GOSUB 3420
3980 LET F$(R,F TO F+8)=X$
3990 PRINT AT R-M+1,P;F$(R,F TO F-P+31)
3992 IF F$(N,F)<>" " THEN GOSUB 3808
3995 RETURN
4000 REM FORMULA ENTRY
4001 REM ***********************
4005 FAST
4010 GOSUB 400
4020 INPUT A$(C)
4030 GOSUB 4500
4031 GOSUB 400
4040 FOR R=HL TO N1
4060 LET F$(R,F TO F+8)=STR$ VAL A$(C)
4070 NEXT R
4075 IF A$(C,1 TO 3)="R  " THEN LET A$(C)=""
4080 IF F$(N,F)<>" " THEN GOSUB 3810
4090 GOSUB 1045
4095 RETURN
4500 REM FORMULA ENCODE
4501 REM ***********************
4505 IF A$(C,1)="P" THEN GOTO 4730
4510 IF A$(C,1)="I" THEN GOTO 4755
4515 LET X=1
4520 LET A=1
4522 IF A$(C,A+1 TO A+3)="   " THEN GOTO 4530
4524 LET A=A+1
4526 GOTO 4522
4530 LET B$=A$(C)
4540 LET C$=""
4550 IF X>A+1 THEN GOTO 4710 
4560 REM
4570 IF B$(X)<>"K" AND B$(X)<>"S" THEN GOTO 4640
4580 LET X$="R"
4590 IF B$(X)<>"K" THEN LET X$="N"
4600 IF B$(X+2)=")" OR B$(X+2)="*" OR B$(X+2)="/" OR B$(X+2)="**" OR B$(X+2)="+" OR B$(X+2)="-" THEN GOTO 4670
4605 LET F=VAL(B$(X+1 TO X+2))*10-6
4610 LET C$=C$+"VAL F$("+X$+","+STR$ VAL "F"+" TO "+STR$ VAL "F+8"+")"
4620 LET X=X+3
4630 GOTO 4550
4640 LET C$=C$+B$(X)
4650 LET X=X+1
4660 GOTO 4550
4670 LET F=VAL B$(X+1)*10-6
4680 LET C$=C$+"VAL F$("+X$+","+STR$ VAL "F"+" TO "+STR$ VAL "F-8"+")"
4690 LET X=X+2
4700 GOTO 4550
4710 LET A$(C)=C$
4720 RETURN
4730 REM PROGRESSIVE SUM
4731 REM ***********************
4745 LET A$(C)="VAL F$(R,F-10 TO F-2)+(R<>HL)*VAL F$(R-1*(R<>HL),F TO F+8)"
4750 RETURN
4755 REM INVERT COLUMN
4756 REM ***********************
4770 LET A$(C)="VAL F$(N-(R-HL+1),F-10 TO F-2)"
4780 RETURN
4785 REM CANCEL SUM
4786 REM ***********************
4790 GOSUB 400
4792 LET F$(N,F TO F+8)="        "
4794 GOTO 1090
4800 REM SORT
4801 REM ***********************
4805 FAST
4810 GOSUB 400
4820 LET R=1
4830 IF 2**R>N1 THEN GOTO 4860
4840 LET R=R+1
4850 GOTO 4830
4860 LET F1=2**R-1
4870 LET F1=INT(F1/2)
4880 IF F1=0 THEN GOTO 1045
4890 LET D=N1-F1
4900 LET B=1
4910 LET R=B
4920 LET E=R+F1
4925 IF R<HL OR E<HL THEN GOTO 4940
4930 IF VAL F$(R,F TO F+8)>VAL F$(E,F TO F+8) THEN GOTO 4955
4940 LET B=B+1
4945 IF B>D THEN GOTO 4870
4950 GOTO 4910
4955 LET X$=F$(R,3 TO)
4960 LET F$(R,3 TO)=F$(E,3 TO)
4965 LET F$(E,3 TO)=X$
4970 LET R=R-F1
4975 IF R<1 THEN GOTO 4940
4980 GOTO 4920
5000 REM SAVE
5001 REM ***********************
5002 SAVE "DATACALC"
5003 CLS
5004 GOTO 1
DATACALC.P
(8.15 KiB) Downloaded 141 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

Your computer" 05/83


"SOUND ANALYSEIS"

/ASM tool/

Contributor : XavSnap.

Code: Select all

1 REM [HEX:\
01,00,ff,db,fe,3c,20,01,0c,10,f8,c9,\
16,00,cd,82,40,2a,25,40,2c,c0,41,\
4a,cb,38,cb,38,d5,cd,b2,0b,d1,14,\
d5,cb,72,c4,2a,0a,d1,cb,b2,18,e1 ]
2 PRINT AT 0,0;USR 16514;"       "
3 GOTO 2
10 POKE 16551,192
20 POKE 16552,0
30 POKE 16553,0
40 RAND USR 16514
SOUNDANALYSEIS.P
(1.09 KiB) Downloaded 161 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

Your computer" 01/82


"Storage Technique"

/ASM tool/

Contributor : XavSnap.

Code: Select all

1 REM [DEC:\
175,103,111,57,237,75,28,64,237,\
66,229,193,253,33,0,64,62,30,237,\
71,201 ]
2 PRINT USR 16514
STORAGE.P
(956 Bytes) Downloaded 122 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

"Your computer" 09/83


"Death Worm"

/Basic-ASM game/

T,I and 0 to shoot.
1 to reach the next level. (3 levels)

Contributor : Antipontifex.

Code: Select all

1 REM [DEC: \
17,33,0,42,12,\
64,35,126,254,25,\
200,254,8,40,7,\
254,136,40,32,195,\
136,64,54,0,35,\
126,254,0,32,5,\
54,8,195,136,64,\
25,43,126,254,0,\
32,5,54,136,195,\
136,64,237,82,24,\
247,54,0,43,126,\
254,0,32,5,54,\
136,195,136,64,25,\
35,126,254,0,32,\
5,54,8,195,136,\
64,237,82,24,247,\
0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,\
17,66,0,42,123,\
64,58,37,64,254,\
255,200,254,239,32,\
9,237,82,126,254,\
14,200,54,14,201,\
254,223,32,18,54,\
0,35,126,254,0,\
32,7,54,38,237,\
99,123,64,201,43,\
24,246,254,251,32,\
248,54,0,43,126,\
254,0,32,7,54,\
38,237,99,123,64,\
201,35,24,246,\
0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,\
0,0,0,\
17,33,0,42,12,\
64,35,126,254,25,\
200,254,14,32,247,\
54,0,237,82,126,\
254,131,40,6,254,\
0,32,6,54,14,\
25,195,81,65,254,\
8,40,14,254,136,\
40,10,254,149,32,\
2,24,239,54,0,\
24,234,54,149,24,230,\
0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,\
6,10,205,130,64,\
205,229,64,205,75,\
65,16,245,201,61 ]
5 LET A$=CHR$ 8
7 FOR N=1 TO 3
8 PRINT AT RND*18,RND*25;"««««««««"(TO INT(RND*5)+1)
9 LET P=RND*30
10 PRINT AT RND*13,P;("«" AND LEN A$=1)+("–" AND LEN A$>1)
11 FOR M=1 TO RND*4
12 PRINT TAB P;"«"(INT(RND*LEN A$)+1)
13 NEXT M
14 NEXT N
  20 PRINT AT 21,0;"«««««death«worm«level«";CHR$(LEN A$+156);"«««««««««";
  21 PRINT AT 0,0;"®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®"
22 FOR N=1 TO 20
23 PRINT AT N,0;"««";TAB 30;"««"
24 NEXT N
30 IF LEN A$>1 THEN GOTO 115
90 LET A=PEEK 16396+256*PEEK 16397+673
95 POKE 16508,INT(A/256)
96 POKE 16507,A-256*PEEK 16508
110 POKE A,38
115 PRINT AT 1,10;A$
120 IF USR 16793 THEN IF INKEY$="1" THEN GOTO 130
125 GOTO 120
 130 PRINT AT 21,0;"ºººººººººººdeath«wormººººººººººº"
135 FOR N=PEEK 16396+256*PEEK 16397+660 TO PEEK 16396+256*PEEK 16397+693
140 IF PEEK N=8 OR PEEK N=136 THEN GOTO 200
145 NEXT N
150 LET A$=A$+CHR$ 8
160 GOTO 7
200 CLS
210 PRINT "YOU REACHED LEVEL ";CHR$(LEN A$+28)
215 PRINT ,,,,,,"PRESS NEWLINE FOR NEXT GAME"
220 INPUT I$
225 CLS
230 RUN
9000 SAVE"DEATHWORM"
9999 RUN
DEATHWORM.P
(2.22 KiB) Downloaded 137 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

"Your computer" 04/85


"Sid Worm"

/Basic-ASM game/

Cursor 5,6,7 & 8.
EO or a true Zx81.
(Use screen artefacts based on 200/253 characters)

ASM routines:
-Horizontal Scrolling
-Down Scrolling
-Characters change (A to B, chr$ 0 to chr$ 128...)
- POKE chr$ 200 : screen distortions
- POKE chr$ 253 : hide a charcode

Contributor : XavSnap.

(Don't (can't!) work in VB81...)

Code: Select all

1 REM [HEX: \
2A,0C,40,23,0E,16,06,20,\
7E,FE,00,20,02,36,80,23,\
10,F6,23,0D,20,F0,C9,2A,\
0C,40,23,0E,16,7E,23,06,\
1F,56,2B,72,23,23,10,F9,\
2B,77,23,23,0D,20,EE,C9,\
01,D6,02,2A,0C,40,09,54,\
5D,01,B5,02,2A,0C,40,09,\
ED,B8,2A,0C,40,01,22,00,\
09,06,20,36,00,23,10,FB,\
C9,2A,0C,40,23,0E,16,06,\
20,7E,FE,FD,20,02,36,17,\
23,10,F6,23,0D,20,F0,C9 ]
10 PRINT "SIMON COLLINSON PRESENTS......" 
20 LET SR=PEEK 16396+256*PEEK 16397+1
30 POKE SR+165,200
35 POKE SR+231,200
40 PRINT AT 5,1;"SID º º º ¼¸¸º ¼¸¸°¸¼¸º"
50 PRINT AT 6,5;"º º º º  º º  ° º º"
60 PRINT AT 7,5;"ª»¸®º ª®®º º  ° º º"
70 PRINT AT 16,4;"A FIGHT OF SURVIVAL."
72 FOR F=1 TO 50
75 NEXT F 
80 FOR I=1 TO 32
90 LET A=USR 16537
100 NEXT I
110 FOR I=1 TO 5
120 LET R=USR 16562
130 NEXT I
140 PRINT AT 0,0;"A GAME FOR THE 16K ZX81 COMPUTER"
150 POKE 16524,0
160 POKE 16528,128
170 LET A=USR 16514
180 POKE 16524,128
190 POKE 16528,0
200 LET A=USR 16514
202 FOR F=1 TO 50
203 NEXT F
210 FOR I=1 TO 20
220 LET A=USR 16562
230 NEXT I
240 POKE 16524,0
250 POKE 16528,128
251 CLS
260 LET A=USR 16514
270 PRINT AT 11,0;"do«you«want«instructionsŠ"
280 LET A$=INKEY$
290 IF A$="N" THEN GOTO 500
300 IF A$<>"Y" THEN GOTO 280
301 PRINT AT 0,10;"instructions"
310 FOR I=1 TO 22
320 LET A=USR 16562
330 NEXT I
340 PRINT AT 2,0;"USE THE ARROW KEYS TO MOVE SID  THE WORM ACROSS THE MINE FIELD."
350 PRINT,,"‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘"
 360 PRINT,,"THE mine‘sensor AT\
 THE TOP OF   THE SCREEN WILL TE\
LL YOU IF ANY MINES ARE NEAR (I.\
E. ONE MOVE   AWAY.I,SO USE THIS\
 WISELY." 
370 PRINT ,,"dont«get«out«of«time–––––––––––Š",,"YOU ONLY HAVE \
A LIMITED TIME TO REACH THE DOOR IN THE NINE-FIELDSO GET A MOVE ON"
371 PRINT ,,"«press«any«key«"
372 FOR I=1 TO 21
374 LET A=USR 16562
376 NEXT I 
380 PRINT AT 3,0;"–––––––––––––––––––––––––––––––Š",,"AFTER EACH LEVEL THE GAME WILL  GET HARDER,UNTIL EVENTUALLY YOU WILL REACH SAVETY."
390 PRINT ,,"–––––––––––––––––––––––––––––––Š",,"IF YOU GET ACROSS (OR DIE) YOUR ROUTE WILL BE SHOWN AGAIN,BUT   THIS TIME WITH THE MINES VISIBLE...TO SKIP THIS BIT,JUST        PRESS S"
400 PRINT ,,"–––––––––––––––––––––––––––––––Š",,"YOU CAN BE REINCARNED TWICE     I.E. YOU HAVE 3 LIVES."
410 PRINT ,"«a«key«to«start«"
420 PAUSE 40000
430 FOR I=1 TO 22
440 LET A=USR 16562
450 LET A=USR 16537
466 NEXT I
500 CLS 
501 LET LE=1
510 LET LI=3
520 PRINT "«ŽŽall«clear«      SCORE=0    "
530 LET NM=50
540 LET SC=0 
541 GOSUB 9000
550 LET AC=15 
551 DIM P(50,2)
552 LET CO=0
560 LET UP=21
561 PRINT AT UP,AC;"S"
570 LET A$=INKEY$ 
571 IF A$<"5" OR A$>"8" THEN GOTO 570
580 LET A1=AC
590 LET U1=UP
600 LET AC=AC+(A$="8")-(A$="5")
610 LET UP=UP+(A$="6")-(A$="7")
611 IF UP=1 AND (AC>14 AND AC<18) THEN GOTO 5000
620 IF UP<>22 THEN GOTO 650
630 FOR I=1 TO 10
640 PRINT AT 0,0;"   WRONG WAY   ";AT 0,0;"«««wrong«way«««"
645 NEXT I 
646 PRINT AT 0,0;"«ŽŽall«clear«" 
647 LET AC=A1
648 LET UP=U1
649 GOTO 570
650 LET SR=PEEK 16396+256*PEEK 16397 
651 IF AC<1 OR AC>30 OR (UP>20 AND AC<>15) OR (UP=1 AND (AC<15 OR AC>17)) THEN GOTO 6500
652 IF PEEK (SR+(UP*33)+AC+1)=253 THEN GOTO 8000
660 LET MN=0 
670 IF PEEK (SR+((UP+1)*33)+AC+1)=253 THEN LET MN=1
680 IF PEEK (SR+((UP-1)*33)+AC+1)=253 THEN LET MN=MN+1
690 IF PEEK (SR+(UP*33)+AC+2)=253 THEN LET MN=MN+1
700 IF PEEK (SR+(UP*33)+AC)=253 THEN LET MN=MN+1
710 IF MN<>0 THEN PRINT AT 0,0;"«";CHR$ (MN+156);"«mines«near«"
720 IF MN=0 THEN PRINT AT 0,0;"«ŽŽall«clear«"
730 LET CO=CO+1
740 LET P(CO,1)=UP
750 LET P(CO,2)=AC
760 IF CO=50 THEN GOTO 7000
770 PRINT AT U1,A1;" "
780 GOTO 561
3000 FOR I=1 TO 21
3010 LET A=USR 16562
3020 NEXT I
3030 CLS
3040 PRINT AT 8,11;"¼¸¸¸¸¸¸¸¯";AT 14,11;"ª®®®®®®®¬"
3050 FOR I=9 TO 13
3060 PRINT AT I,11;"º";AT I,19;"°"
3070 NEXT I
3080 PRINT AT 9,14;"»±";AT 10,15;"°";AT 11,14;"²¶";AT 12,14;"º";AT 13,14;"±®®»"
3085 PRINT AT 7,11;"SID WORM."
3090 FOR I=1 TO 10
3100 PRINT AT 12,17;"° "
3110 FOR F=1 TO 5
3120 NEXT F
3130 PRINT AT 12,17;"²¹"
3140 FOR F=1 TO 5
3150 NEXT F 
3160 NEXT I
3170 PRINT AT 21,0;"WELL DONE..WELL DONE..WELL DONE."
3180 FOR I=1 TO 32
3190 LET A=USR 16537
3200 NEXT I 
3210 PRINT AT 0,0;"not«so«bad–––"
3220 FOR I=1 TO 22
3230 LET A=USR 16562
3240 NEXT I
3250 LET SC=SC+100 
3255 LET NM=NM+200
3260 GOTO 5180
4000 CLS 
4010 POKE 16524,0
4020 POKE 16528,128
4030 LET A= USR 16514
4040 PRINT AT 0,11;"out«of«life"
4045 PRINT AT 1,12;"SCORE=";SC
4050 FOR I=1 TO 50
4060 NEXT I
4070 FOR I=1 TO 21
4080 LET A=USR 16562
4090 NEXT I
4100 CLS 
4110 RUN
5000 FOR I=1 TO 32
5010 LET A=USR 16537
5020 NEXT I
5030 PRINT AT UP,AC;"S";AT U1,A1;" " 
5040 LET A=USR 16595
5050 FOR I=1 TO CO
5060 PRINT AT P(I,1),P(I,2);"«"
5070 IF INKEY$="S" THEN FAST
5080 NEXT I
5090 SLOW
5100 LET SC=SC+(50-CO)
5110 PRINT AT 0,21;"SCORE=";SC
5120 LET NM=NM+100
5130 LET LE=LE+1
5140 IF LE=7 THEN GOTO 3000
5150 FOR I=1 TO 21 
5160 LET A=USR 16562
5170 NEXT I
5180 GOSUB 9000
5190 LET AC=15
5200 LET UP=21
5210 GOTO 552
6000 LET A$="WORM"
6010 SAVE A$
6020 RUN
6500 FOR I=1 TO 20
6510 PRINT AT 0,0;"cRaSh..HIT WALL";AT 0,0;"CrAsH––hit«wall"
6520 NEXT I
6530 LET AC=A1 
6540 LET UP=U1
6545 PRINT AT 0,0;"                      "
6550 GOTO 660
7000 PRINT AT 0,0;"OUT OF TIME"
7001 PRINT AT U1,A1;" "
7010 FOR I=1 TO 20
7020 PRINT AT UP,AC;"s";AT UP,AC;"S"
7030 NEXT I
7031 LET LI=LI-1
7032 IF LI=0 THEN GOTO 4000
7040 PRINT AT 0,0;"«go«again«    "
7050 FOR F=1 TO 50
7060 NEXT F
7070 GOSUB 9000
7080 LET UP=21
7090 LET AC=15
7100 GOTO 552
8000 PRINT AT U1,A1;" "
8010 FOR I=1 TO 10
8020 PRINT AT UP,AC;"s";AT UP,AC;"S"
8030 NEXT I 
8040 PRINT AT UP,AC;"‘"
8050 LET A=USR 16595
8060 FOR I=1 TO CO
8070 PRINT AT P(I,1),P(I,2);"«"
8080 NEXT I
8085 FOR I=1 TO 10
8090 POKE 16524,0 
8100 POKE 16528,128
8110 LET A=USR 16514
8120 POKE 16524,128
8130 POKE 16528,0
8140 LET A=USR 16514 
8150 NEXT I
8160 FOR I=1 TO 21
8170 LET A=USR 16562
8180 NEXT I
8190 LET LI=LI-1
8200 IF LI=0 THEN GOTO 4000
8210 GOTO 7040
9000 REM draw«screen
9010 FOR  I=1 TO 20
9020 PRINT AT I,31;"°º"
9030 NEXT I 
9040 PRINT AT 1,0;"¼¸¸¸¸¸¸¸¸¸¸¸¸¸¸o¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¯";AT 21,0;"ª®®®®®®®®®®®®®¬ ª®®®®®®®®®®®®®®¬"
9050 LET SR=PEEK 16396+256*PEEK 16397
9051 PRINT AT 0,0;"LAYING MINES sfast"
9060 FOR  I=1 TO NM
9061 IF INKEY$="S" THEN FAST
9070 LET P=SR+((INT (RND*17)+3)*33)+(INT (RND*29)+2)
9090 IF PEEK P=0 THEN POKE P,253
9100 NEXT I
9110 SLOW
9120 PRINT AT 2,14;"clear";AT 20,14;"clear"
9130 FOR I=0 TO 11
9140 PRINT AT 2,13-I;"«";AT 2,19+I;"«";AT 20,13-I;"«";AT 20,19+I;"«"
9150 NEXT I
9160 PRINT AT 2,1;"                              ";AT 20,1;"                              "
9165 PRINT AT 0,0;"«ŽŽall«clear«     "
9166 PRINT AT 0,21;"SCORE=";SC
9170 RETURN
SIDWORM.P
(7.38 KiB) Downloaded 130 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

"Your computer" 08/83


"Four, four, four"

/Basic-ASM game/

T,I and 0 to shoot.
1 to reach the next level. (3 levels)

Contributor : Antipontifex.


It's a 3D Tic-Tac-toe basic Game…
Something wrong in the display routine/ASM routine.
:oops:

Do my best !

Thanks to Antipontifex.

Code: Select all

     1  REM [HEX:\
00,00,01,00,00,2A,10,40,\
11,0F,00,19,7E,FE,1D,20,\
18,23,7E,B9,2B,38,12,20,\
0C,ED,5B,34,40,CB,43,28,\
08,CB,4B,28,04,4F,22,82,\
40,11,0A,00,19,E5,11,8F,\
02,A7,ED,52,ED,5B,10,40,\
ED,52,3E,7F,A4,B5,7C,E1,\
C8,18,C9 ]
10 FAST
15 GOTO 9500
18 FAST
19 CLS
20 PRINT "    ˜       ™       š       ›"
30 PRINT 
40 FOR N=1 TO 4
50 PRINT N;" : : :   : : :   : : :   : : :"
55 IF N=4 THEN GOTO 80
60 PRINT " -+-+-+- -+-+-+- -+-+-+- -+-+-+-"
70 NEXT N 
80 FOR N=1 TO 4
90 PRINT " 1 2 3 4";
100 NEXT N
101 GOTO 300
103 REM **UPLAY**
106 SLOW
107 LET G$="0"
110 PRINT AT 20,0;"YOUR MOVE?                      "
120 INPUT B$
121 IF LEN B$<3 THEN GOTO 120
122 LET K$="O"
123 GOSUB INSERT
130 FOR N=1 TO 3
140 IF B$(N)<"1" OR B$(N)>"4" THEN GOTO 120
150 NEXT N
155 LET C=VAL B$(1)
156 LET D=VAL B$(2)
157 LET E=VAL B$(3)
159 GOTO 400
160 LET K$="x"
165 GOSUB INSERT
170 PRINT AT 20,0;"IS THIS CORRECT?  (Y/N)" 
180 IF INKEY$="" THEN GOTO 180
185 LET C$=INKEY$
190 IF C$="Y" THEN GOTO 240
200 IF C$="N" THEN GOTO 212
210 GOTO 180
212 LET K$=" "
215 GOSUB INSERT
220 GOTO 350
240 FAST 
245 LET A$(C,D,E,4)="2"
247 LET A$(C,D,E,5)=" "
250 LET K$="X"
260 GOSUB INSERT
265 PRINT AT 20,0;"                                 "
280 GOTO SET
300 PRINT AT 20,0;"DO YOU WANT TO PLAY FIRST? (Y/N)"
305 SLOW
310 IF INKEY$="" THEN GOTO 310
315 LET C$=INKEY$
320 IF C$="Y" THEN GOTO 350
330 IF C$="N" THEN GOTO 343
340 GOTO 310
343 FAST
345 GOTO IPLAY
350 LET C=1
351 LET D=10
352 LET E=1
355 GOTO UPLAY
360 REM **INSERT** 
370 PRINT AT 2*D,(8*C)+(2*E)-9;K$
380 RETURN 
400 IF A$(C,D,E,4)="1" THEN GOTO 160
410 IF A$(C,D,E,4)="2" THEN LET K$="x"
420 IF A$(C,D,E,4)="3" THEN LET K$="o"
430 GOSUB INSERT
435 PRINT AT 20,0;"                           " 
440 PRINT AT 15,0;"SPACE ALREADY OCCUPIED"
450 PRINT AT 16,0;"«press«any«key« TO CONTINUE"
460 IF INKEY$="" THEN GOTO 460
470 PRINT AT 15,0;"                                                              "
480 IF A$(C,D,E,4)="2" THEN LET K$="X"
490 IF A$(C,D,E,4)="3" THEN LET K$="O"
500 GOSUB INSERT
510 GOTO UPLAY
2000 PRINT AT 15,0;"CONGRATULATIONS--YOU HAVE WON"
2010 PRINT AT 16,0;"DO YOU WANT TO PLAY AGAIN? (Y/N)"
2015 SLOW
2020 IF INKEY$="" THEN GOTO 2020
2025 LET C$=INKEY$
2030 IF C$="Y" THEN RUN 
2040 LET C$="N" THEN PRINT AT 15,0;"THANKS FOR THE GAME, BYE                                      "
2050 GOTO 2020
2060 REM **DRAW**
2070 PRINT AT 15,0;"AN HONOURABLE DRAW"
2080 GOTO 2010
2100 REM **FOUND3O**
2110 FOR X=1 TO 4
2120 FOR Y=1 TO 4
2130 FOR Z=1 TO 4 
2140 IF A$(X,Y,Z,6)<"1" OR A$(X,Y,Z,6)>"7" THEN GOTO 2200
2150 IF A$(X,Y,Z,4)<>"1" THEN GOTO 2200
2152 LET C=X
2154 LET D=Y
2156 LET E=Z
2158 LET P=VAL A$(X,Y,Z,6)*20
2160 LET K="o"
2170 GOSUB MARKWIN
2175 GOSUB PRINTWIN
2180 PRINT AT 15,0;"MY GAME THIS TIME"
2190 GOTO 2010
2200 NEXT Z
2210 NEXT Y
2220 NEXT X
2225 LET I=0
2240 GOTO 7015
2400 REM **FOUND3X**
2410 FOR X=1 TO 4
2420 FOR Y=1 TO 4
2430 FOR Z=1 TO 4
2440 IF A$(X,Y,Z,6)<>"8" THEN GOTO 2500
2450 IF A$(X,Y,Z,4)<>"1" THEN GOTO 2500
2460 LET C=X
2470 LET D=Y
2480 LET E=Z
2485 LET A$(X,Y,Z,6)="0"
2487 LET J=J-1
2490 GOTO 7270
2500 NEXT Z
2510 NEXT Y
2520 NEXT X
2530 LET J=0
2540 GOTO 7020
3000 REM **PRINTWIN**
3010 FOR C=1 TO 4
3020 FOR D=1 TO 4
3030 FOR E=1 TO 4
3040 IF A$(C,D,E,6)="9" THEN GOSUB INSERT
3050 NEXT E 
3060 NEXT D
3070 NEXT C
3080 RETURN 
6000 REM **SET** 
6005 LET COUNT=COUNT+1
6010 FOR P=20 TO 140 STEP 20
6020 LET L=0
6030 LET M=0
6040 FOR T=1 TO 4 
6050 GOSUB (SEARCH+P)
6060 IF Q$(T)="2" THEN LET L=L+1
6070 IF Q$(T)="3" THEN LET M=M+1
6080 NEXT T
6090 GOSUB UPDATE
6100 FOR T=1 TO 4
6110 IF Q$(T)="1" THEN GOSUB (WEIGHT+P)
6120 NEXT T
6130 NEXT P
6140 IF Q$="0" THEN GOTO IPLAY
6150 IF COUNT>63 THEN GOTO DRAW 
6170 GOTO UPLAY
6200 REM **SEARCH** 
6220 LET Q$(T)=A$(T,D,E,4)
6230 RETURN 
6240 LET Q$(T)=A$(C,T,E,4)
6250 RETURN
6260 LET Q$(T)=A$(C,D,T,4)
6270 RETURN
6280 IF A$(C,D,E,7)="1" THEN LET Q$(T)=A$(C,T,T,4)
6285 IF A$(C,D,E,7)="2" THEN LET Q$(T)=A$(C,T,5-T,4)
6290 RETURN
6300 IF A$(C,D,E,8)="1" THEN LET Q$(T)=A$(T,D,T,4)
6305 IF A$(C,D,E,8)="2" THEN LET Q$(T)=A$(T,D,5-T,4)
6310 RETURN
6320 IF A$(C,D,E,9)="1" THEN LET Q$(T)=A$(T,T,E,4)
6325 IF A$(C,D,E,9)="2" THEN LET Q$(T)=A$(T,5-T,E,4)
6330 RETURN
6340 LET R=VAL A$(C,D,E,10)
6341 LET Q$(T)="1"
6342 IF R=0 THEN RETURN
6345 GOTO (SEARCH+P+R*10)
6350 LET Q$(T)=A$(T,T,T,4) 
6355 RETURN
6360 LET Q$(T)=A$(T,T,5-T,4)
6365 RETURN
6370 LET Q$(T)=A$(T,5-T,T,4)
6375 RETURN
6380 LET Q$(T)=A$(T,5-T,5-T,4)
6385 RETURN
6400 REM **WEIGHT**
6420 LET A$(T,D,E,5)=CHR$(CODE A$(T,D,E,5)+WW)
6430 RETURN
6440 LET A$(C,T,E,5)=CHR$(CODE A$(C,T,E,5)+WW)
6450 RETURN
6460 LET A$(C,D,T,5)=CHR$(CODE A$(C,D,T,5)+WW)
6470 RETURN
6480 IF A$(C,D,E,7)="1" THEN LET A$(C,T,T,5)=CHR$ (CODE A$(C,T,T,5)+WW)
6485 IF Q$(T)="1" AND A$(C,D,E,7)="2" THEN LET A$(C,T,5-T,5)=CHR$ (CODE A$(C,T,5-T,5)+WW)
6490 RETURN
6500 IF A$(C,D,E,8)="1" THEN LET A$(T,D,T,5)=CHR$(CODE A$(T,D,T,5)+WW)
6505 IF A$(C,D,E,8)="2" THEN LET A$(T,D,5-T,5)=CHR$(CODE A$(T,D,5-T,5)+WW)
6510 RETURN
6520 IF A$(C,D,E,9)="1" THEN LET A$(T,T,E,5)=CHR$(CODE A$(T,T,E,5)-WW)
6525 IF A$(C,D,E,9)="2" THEN LET A$(T,5-T,E,5)=CHR$(CODE A$(T,5-T,E,5)+WW)
6530 RETURN 
6540 IF R<>0 THEN GOTO (WEIGHT+P+R*10)
6545 RETURN
6550 LET A$(T,T,T,5)=CHR$(CODE A$(T,T,T,5)+WW)
6555 RETURN
6560 LET A$(T,T,5-T,5)=CHR$(CODE A$(T,T,5-T,5)+WW)
6565 RETURN
6570 LET A$(T,5-T,T,5)=CHR$(CODE A$(T,5-T,T,5)+WW)
6575 RETURN
6580 LET A$(T,5-T,5-T,5)=CHR$(CODE A$(T,5-T,5-T,5)+WW)
6585 RETURN
6600 REM **UPDATE**
6610 IF G$="1" THEN GOTO UPDATEO
6620 REM **UPDATEX**
6625 LET WW=0
6630 IF L=4 THEN GOTO UWIN
6635 IF M<>0 THEN GOTO 6675 
6640 IF L=3 THEN LET WW=(W2-W4)
6650 IF L=3 THEN GOTO POINTX
6660 IF L=2 THEN LET WW=(W4-W7)
6670 IF L=1 THEN LET WW=(W7-W6)
6675 IF L<>1 THEN RETURN
6680 IF M=1 THEN LET WW=(W8-W5)
6690 IF M=2 THEN LET WW=(W8-W3)
6700 RETURN
6710 REM **UPDATEO**
6715 LET WW=0
6720 IF M=4 THEN GOTO 2160
6725 IF L<>0 THEN GOTO 6765
6730 IF M=3 THEN LET WW=(W1-W3)
6740 IF M=3 THEN GOTO POINTO
6750 IF M=2 THEN LET WW=(W3-W5)
6760 IF M=1 THEN LET WW=(W5-W6)
6765 IF M<>1 THEN RETURN
6770 IF L=1 THEN LET WW=(W8-W7)
6780 IF L=2 THEN LET WW=(W8-W3)
6800 RETURN
7000 REM **IPLAY**
7010 IF I>0 THEN GOTO FOUND3O
7015 IF J>0 THEN GOTO FOUND3X
7020 LET HIWT=USR 16516
7030 LET MW=PEEK 16514+256*PEEK 16515
7040 LET MW=(MW-(PEEK 16400+256*PEEK 16401+15))/10
7050 LET C=INT(MW/16)+1
7060 LET MW=MW-(C-1)*16
7070 LET D=INT(MW/4)+1
7080 LET E=MW-(D-1)*4+1
7270 LET A$(C,D,E,4)="3"
7280 LET A$(C,D,E,5)=" "
7290 LET G$="1"
7295 IF COUNT>63 THEN GOTO DRAW
7300 LET K$="o"
7310 GOSUB INSERT
7330 GOTO SET
7400 REM **UWIN**
7410 LET K$="x"
7420 GOSUB MARKWIN
7430 GOSUB PRINTWIN
7440 GOTO 2000
7480 REM **POINTX**
7500 LET H$="8"
7505 LET J=J+1
7510 GOTO MARK
7520 REM **POINTO**
7540 LET H$=STR$(P/20)
7545 LET I=1
7550 GOTO MARK
7560 REM **MARKWIN**
7565 FOR T=1 TO 4
7575 LET H$="9"
7580 GOSUB (WINLINE+P)
7590 NEXT T
7595 RETURN
7600 REM **HARK**
7610 FOR T=1 TO 4
7620 GOSUB (WINLINE+P)
7630 NEXT T
7640 RETURN
7700 REM **WINLINE**
7720 LET A$(T,D,E,6)=H$
7730 RETURN
7740 LET A$(C,T,E,6)=H$
7750 RETURN
7760 LET A$(C,D,T,6)=H$
7770 RETURN
7780 IF A$(C,D,E,7)="1" THEN LET A$(C,T,T,6)=H$
7785 IF A$(C,D,E,7)="2" THEN LET A$(C,T,5-T,6)=H$
7790 RETURN
7800 IF A$(C,D,E,8)="1" THEN LET A$(T,D,T,6)=H$
7805 IF A$(C,D,E,8)="2" THEN LET A$(T,D,5-T,6)=H$
7820 IF A$(C,D,E,9)="1" THEN LET A$(T,T,E,6)=H$
7825 IF A$(C,D,E,9)="2" THEN LET A$(T,5-T,E,6)=H$
7830 RETURN
7840 LET R=VAL A$(C,D,E,10)
7845 GOTO (WINLINE+P+R*10)
7850 LET A$(T,T,T,6)=H$
7855 RETURN
7860 LET A$(T,T,5-T,6)=H$
7865 RETURN
7870 LET A$(T,5-T,T,6)=H$
7875 RETURN
7880 LET A$(T,5-T,5-T,6)=H$
7885 RETURN
9000 REM **SETUP**
9010 FOR X=1 TO 4
9020 FOR Y=1 TO 4
9030 FOR Z=1 TO 4 
9040 LET F$(1)=CHR$(X+28)
9050 LET F$(2)=CHR$(Y+28)
9060 LET F$(3)=CHR$(Z+28)
9070 LET F$(4 TO 10)="1000000"
9080 IF Y=Z THEN LET F$(7)="1"
9090 IF Y+Z=5 THEN LET F$(7)="2"
9100 IF X=Z THEN LET F$(8)="1" 
9110 IF X+Z=5 THEN LET F$(8)="2"
9120 IF X=Y THEN LET F$(9)="1"
9130 IF X+Y=5 THEN LET F$(9)="2"
9140 IF F$(7)="1" AND F$(8)="1" THEN LET F$(10)="1"
9150 IF F$(9)="1" AND F$(8)="2" THEN LET F$(10)="2"
9155 IF F$(8)="1" AND F$(7)="2" THEN LET F$(10)="3"
9160 IF F$(8)="2" AND F$(9)="2" THEN LET F$(10)="4"
9170 LET V=3
9180 IF F$(7)<>"0" THEN LET V=V+1 
9190 IF F$(8)<>"0" THEN LET V=V+1
9200 IF F$(9)<>"0" THEN LET V=V+1
9210 IF F$(10)<>"0" THEN LET V=V+1
9215 IF V>=5 THEN LET V=5
9220 LET F$(5)=CHR$(V*W6)
9230 LET A$(X,Y,Z)=F$
9240 NEXT Z
9250 NEXT Y 
9260 NEXT X
9270 GOTO 16
9500 DIM A$(4,4,4,10) 
9503 LET COUNT=0
9506 LET H$="0"
9507 LET J=0
9508 LET I=0
9510 DIM F$(10)
9515 DIM Q$(4)
9520 LET W1=35
9530 LET W2=35
9540 LET W3=25
9550 LET W4=30
9560 LET W5=15
9570 LET W6=8
9580 LET W7=15
9590 LET W8=2
9610 LET UPLAY=103 
9615 LET INSERT=360
9616 LET DRAW=2060
9617 LET FOUND3O=2100
9618 LET FOUND3X=2400
9619 LET PRINTWIN=3000
9620 LET SET=6000
9630 LET SEARCH=6200
9640 LET WEIGHT=6400
9650 LET UPDATE=6600
9660 LET UPDATEX=6620 
9670 LET UPDATEO=6710
9680 LET IPLAY=7000 
9690 LET UWIN=7400
9710 LET POINTX=7480
9720 LET POINTO=7520
9725 LET MARKWIN=7560
9730 LET MARK=7600
9740 LET WINLINE=7700
9750 LET SETUP=9000
9800 GOTO SETUP
9900 SAVE "3D4X"
9910 RUN 
3D4X.P
(9.38 KiB) Downloaded 134 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

Your computer" 01/84


"Zx-81 Read"

/ASM tool/

Restore, read datas from a REM liste.

Contributor : XavSnap.

Code: Select all

0 REM [HEX:\
00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,\
00,00,00,\
00,21,06,41,22,88,40,C9,\
ED,5B,10,40,13,13,13,13,\
13,13,ED,53,86,40,3E,00,\
32,8A,40,2A,88,40,56,3E,\
1A,BA,28,1D,3E,1B,BA,28,\
1D,ED,5B,86,40,3A,8A,40,\
3C,32,8A,40,7E,12,13,23,\
22,88,40,ED,53,86,40,18,\
DA,23,22,88,40,C9,2A,0C,\
40,23,36,34,23,36,3A,23,\
36,39,23,36,00,23,36,34,\
23,36,2B,23,36,00,23,36,\
29,23,36,26,23,36,39,23,\
36,26,C9]

2 REM HELLO,WORLD,YOUR,COMPUTER,,
3 DIM A$(8)
4 LET RESTORE=16534
5 LET READ=16541
6 LET A=USR RESTORE
7 LET WORD=16522
10 REM
20 FOR Z=1 TO 4
30 LET A=USR READ
40 PRINT A$(TO PEEK WORD);" ";
50 NEXT Z
55 PRINT
60 PRINT
65 PRINT
70 LIST 2
DATA.P
(1.25 KiB) Downloaded 124 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

Your computer" 05/82


"How to impress with your Zx81..."

/Basic/


Contributor : XavSnap.

Program 1:

Code: Select all

1 LET X=0 
2 LET Y=1 
5 INPUT A$
10 LET P=2 
15 LET N=2 
20 PRINT AT X,Y;A$
25 LET X=X+N-1 
30 LET Y=Y+P-1
40 IF X=21 THEN LET N=0
50 IF Y=31 THEN LET P=0 
60 IF X=0 THEN LET N=2 
70 IF Y=0 THEN LET P=2 
80 CLS 
90 GOTO 20
Program 2:

Code: Select all

1 LET X=1 
2 LET Y=1 
3 LET B$="12" 
4 LET T=0 
10 PRINT AT 11,14;X 
15 IF INKEY$>""THEN LET B$=INKEY$ 
20 IF X=VAL(B$) THEN LET Y=Y+1 
25 LET X=X+1 
30 PRINT AT 0,0;Y 
35 IF X=10 THEN LET X=1
40 LET T=T+1 
50 GOTO 10
Program 3:

Code: Select all

1 LET X=1 
2 LET Y=1 
9 FOR S=1 TO 12 
10 PRINT X;" X ";Y; " = ", X*Y
20 LET X=X+1 
30 NEXT S
40 LET Y=Y+1 
50 PAUSE 300 
60 CLS
70 GOTO 5
Program 4:

Code: Select all

1 LET C=0 
10 LET X=INT (RND*1000) 
20 INPUT Y 
30 IF Y=X THEN PRINT AT 11,15;"YES"
40 IF Y=X THEN STOP
50 IF Y>X THEN PRINT AT 11,15;CHR$ 18
60 IF Y<X THEN PRINT AT 11,15;CHR$ 19
70 LET C=C+1
80 PRINT AT 0,28;C 
90 GOTO 20
Program 5:

Code: Select all

1 LET X=1000
2 LET Y=0 
3 LET C=1 
10 LET Z=INT ((X-Y)/2) 
15 CLS 
18 PRINT AT 0,0;C 
20 PRINT AT 11,10;"NO IS ";Z 
30 INPUT R$ 
40 IF R$=CHR$ 19 THEN LET X=Z 
50 IF R$=CHR$ 18 THEN LET Y--Z
60 IF R$="YES" THEN PRINT AT 11,10;"I THOUGHT SO" 
70 IF R$="YES" THEN STOP 
80 LET C=C+1 
90 GOTO 10
Program 6:

Code: Select all

10 PRINT AT 11,15;"WAIT" 
20 PAUSE (RND*4)*100 
30 PRINT AT 11,14;"PRESS NEWLINE" 
40 POKE 16436,0 
50 POKE 16437,0
60 INPUT A$
70 PRINT (65792-(PEEK 16436+256*PEEK 16437))-5.14
P2.P
(1.11 KiB) Downloaded 135 times
P3.P
(1.04 KiB) Downloaded 140 times
P4.P
(1.11 KiB) Downloaded 123 times
P5.P
(1.17 KiB) Downloaded 132 times
P6.P
(1.11 KiB) Downloaded 130 times
>>>
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

P1.P
(1.13 KiB) Downloaded 131 times
:mrgreen:

[EDIT:
"YOU LETTERS"
Sorry, the smiley was to point the file upload limitation in a message…
It's naturally the first program describe in the previous message !!!
It wasn't a Wonderful mega-surprise uncharted working friendly program from "Your Computer"...
STOP to download it, I'm afraid you're going to be disappointed !
:lol:
]
Last edited by XavSnap on Mon Nov 30, 2020 2:29 am, edited 3 times in total.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Type-Ins] "Your Computer" campaign...

Post by XavSnap »

"Your computer" 10/82


"HRGraph"

ZxPrinter HRG program.

/Basic-ASM tool/

Contributor : Antipontifex.

Code: Select all

1 REM [HEX: 3A,8E,40,5F,3A,8F,40,B3,06,00,4F,C9,00,00]
2 POKE 16389,124 
3 FAST 
5 FOR I=0 TO 112 
6 POKE 31744+I,PEEK(2161+I) 
7 NEXT I 
8 POKE 31800,63 
9 POKE 31857,201 
10 POKE 16517,95 
11 POKE 16524,79 
12 DIM A$(32,256)
20 PRINT"ENTER NO. OF PTS TO BE PLOTTED"
25 INPUT L
30 PRINT L
35 PRINT"ENTER LARGEST X-COORDINATE"
45 INPUT BX
46 PRINT BX 
50 PRINT "ENTER SMALLEST X-COORDINATE"
55 INPUT SX
60 PRINT SX
65 PRINT "ENTER LARGEST Y-COORDINATE"
70 INPUT BY
75 PRINT BY
80 PRINT "ENTER SMALLEST Y-COORDINATE"
85 INPUT SY
90 PRINT SY
95 PRINT "press\::newline"
100 INPUT O$
105 IF BX<0 THEN LET BX=0
110 IF SX>0 THEN LET SX=0
115 IF BY<0 THEN LET BY=0
120 IF SY>0 THEN LET SY=0
125 LET D=0
130 LET E=0
135 LET F=0
140 LET G=0
150 FOR J=1 TO L
155 CLS
160 PRINT "ENTER X-COORDINATE NO. ";J 
165 INPUT S
170 PRINT S
175 PRINT "ENTER Y-COORDINATE NO. ";J
180 INPUT T 
185 PRINT T 
190 PRINT "press\::newline" 
195 INPUT O$
197 LPRINT J;". (";S;",";T;")",
200 LET D=D+S
205 LET E=E+T
210 LET F=F+S*T
215 LET G=G+S*S
220 LET X=INT((S-SX)*249/(BX-SX)+3)
225 LET Y=INT((T-SY)*242/(BY-SY)+11)
230 GOSUB 9980
232 LET X=X-1 
233 LET Y=Y-1
234 GOSUB 9980 
235 LET Y=Y+2
236 GOSUB 9980
237 LET X=X+2
238 GOSUB 9980
239 LET Y=Y-2 
240 GOSUB 9980
245 LPRINT
248 LPRINT
250 LET M=(F-D*E/L)/(G-D*D/L)
255 LET A=(M*D-E)/M/L
260 LET B=(E-M*D)/L
261 LPRINT "GRADIENT = ";M
262 LPRINT "WHEN X=0, Y=";B
263 LPRINT "WHEN Y=0, X=";A
264 LPRINT
265 LPRINT
266 LPRINT 
270 IF(BY-B)/M>=SX AND (BY-B)/M<=BX THEN GOTO 286
272 IF M>0 THEN GOTO 280 
274 LET U=SX
276 LET V=M*SX+B
278 GOTO 290
280 LET U=BX
282 LET V=M*BX+B
284 GOTO 290
286 LET U=(BY-B)/M
288 LET V=BY
290 IF (SY-B)/M=SX AND (SY-B)/M<=BX THEN GOTO 306
292 IF M>0 THEN GOTO 300
294 LET W=BX
296 LET Z=M*BX+B
298 GOTO 310
300 LET W=SX 
302 LET Z=M*SX+B
304 GOTO 310
306 LET W=(SY-B)/M
308 LET Z=SY
325 LET D=W-U
330 LET E=Z-V
335 LET F=ABS D
340 IF ABS E>F THEN LET F=ABS E
345 FOR G=0 TO F STEP (F/256)
350 LET X=INT((U+G*D/F-SX)*249/(BX-SX)+3) 
355 LET Y=INT((V+G*E/F-SY)*242/(BY-SY)+11) 
360 GOSUB 9980
365 NEXT G
450 FOR Y=0 TO 255
455 LET X=INT(-SX*249/BX-SX)+3)
460 GOSUB 9960
465 NEXT Y
470 FOR X=0 TO 255 
475 LET Y=INT(-SY*242/(BY-SY)+11)
480 GOSUB 9980
485 NEXT X
500 GOTO 9988 
600 STOP
9981 IF X<0 OR X>255 OR Y<0 OR Y>255 THEN RETURN
9982 LET C=1+INT(X/8)
9983 LET R=256-INT Y
9984 POKE 16526,CODE A$(C,R)
9985 POKE 16527,2**(8*C-INT X-1)
9986 LET A$(C,R)=CHR$(USR 16514)
9987 RETURN 
9989 FOR I=0 TO 246 STEP 8
9990 FOR J=1 TO 32
9991 FOR K=1 TO 8 
9992 POKE 32255+K+8*(J-1),CODE A$(J,K+I)
9993 NEXT K
9994 NEXT J
9995 FOR H=0 TO 31
9996 POKE 16444+H,H
9997 NEXT H 
9998 LET HPRINT=USR 31744
9999 NEXT I 
HRGRAPH.P
(3.34 KiB) Downloaded 121 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Post Reply