Random demo
Random game
Random demo
Alphabet Train Alphabet Train Alphabet Train Alphabet Train Alphabet Train Alphabet Train Alphabet Train Alphabet Train
Listing 1
100 REM *****************************
110 REM * ALPHABET TRAIN *
120 REM * Atari Computer Enthusiasts*
130 REM * by Stan Ockers *
140 REM *****************************
141 REM
142 REM ****  ****
144 OPEN #1,​4,​0,​"K:​"
148 GRAPHICS 18:​POSITION 4,​4:​PRINT #6;"AlPhAbEt tRaIn":​POSITION 4,​5:​? #6;"--------------"
149 POSITION 5,​8:​? #6;"INITIALISING"
159 DIM A$(1),​SCR$(1),​B$(12),​TRN1$(180),​TRN2$(180),​TRN3$(180),​TRK1$(28),​TRK2$(28),​TRK3$(28),​W$(6)
160 DIM L$(10):​L$(10)=CHR$(0):​L$(1,​1)=CHR$(0):​L$(2)=L$:​DIM BL$(10):​BL$=L$
170 DIM P$(8):​RESTORE 180:​FOR J=1 TO 8:​READ A:​P$(J,​J)=CHR$(A):​NEXT J
180 DATA 1,​3,​7,​255,​255,​7,​3,​1
190 DIM R$(8):​RESTORE 200:​FOR J=1 TO 8:​READ A:​R$(J,​J)=CHR$(A):​NEXT J
200 DATA 128,​192,​224,​255,​255,​224,​192,​128
210 RESTORE 220:​FOR J=1 TO 12:​READ A:​B$(J,​J)=CHR$(A):​NEXT J
220 DATA 24,​36,​66,​129,​129,​129,​129,​129,​129,​129,​66,​0
230 TRN1$(180)=" ":​RESTORE 232:​FOR J=1 TO 24:​READ A:​TRN1$(J,​J)=CHR$(A):​NEXT J:​TRN1$(25)=TRN1$
232 DATA 77,​84,​84,​0,​84,​84,​205,​212,​212,​128,​212,​212,​13,​20,​20,​0,​20,​20,​141,​148,​148,​128,​148,​148
240 TRN2$(180)=" ":​RESTORE 242:​FOR J=1 TO 24:​READ A:​TRN2$(J,​J)=CHR$(A):​NEXT J:​TRN2$(25)=TRN2$
242 DATA 0,​32,​32,​32,​32,​32,​0,​96,​96,​96,​96,​96,​0.160,​160,​160,​160,​160,​0,​224,​224,​224,​224,​224
250 TRN3$(180)=CHR$(0):​TRN3$(1,​1)=CHR$(0):​TRN3$(2)=TRN3$:​FOR J=10 TO 160 STEP 6:​TRN3$(J,​J)=CHR$(J/6+95):​NEXT J
260 RESTORE 262:​FOR J=1 TO 28:​READ A:​TRK1$(J,​J)=CHR$(A):​NEXT J
262 DATA 0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​84,​84,​0,​0,​0,​0,​84,​84,​0,​84,​0,​0
264 RESTORE 266:​FOR J=1 TO 28:​READ A:​TRK2$(J,​J)=CHR$(A):​NEXT J
266 DATA 0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​224,​224,​224,​224,​224,​224,​224,​21,​32,​32,​32,​32,​0
270 RESTORE 272:​FOR J=1 TO 28:​READ A:​TRK3$(J,​J)=CHR$(A):​NEXT J
272 DATA 0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​32,​13,​22,​0,​8,​
278 REM ** SET ASIDE PM AREA **
280 GRAPHICS 7:​POKE 106,​PEEK(106)-5:​PM=PEEK(106)+1:​POKE 54279,​PM:​GRAPHICS 18:​GOSUB 910
290 RESTORE 300:​FOR J=704 TO 712:​READ A:​POKE J,​A:​NEXT J
300 DATA 32,​255,​18,​82,​50,​255,​34,​52,​57
310 POSITION 5,​1:​PRINT #6;CHR$(142);CHR$(142);CHR$(142):​POSITION 6,​6:​PRINT #6;"--------------"
320 POSITION 0,​10:​FOR I=1 TO 20:​PRINT #6;CHR$(171);:​NEXT I
330 POKE 559,​46:​POKE 53277,​3
340 REM ** MAP A$ ONTO PM AREA **
350 VVTP=PEEK(134)+PEEK(135)*256:​STARP=ADR(A$)
380 OFFS=PM*256+512-STARP:​HI=INT(OFFS/256):​LO=OFFS-HI*256
390 POKE VVTP+2,​LO:​POKE VVTP+3,​HI:​POKE VVTP+5,​2:​POKE VVTP+6,​0:​POKE VVTP+7,​2
392 REM ** MAP SCR$ ONTO SCREEN AREA **
400 SCR=PEEK(88)+256*PEEK(89):​OFFS=SCR-STARP:​HI=INT(OFFS/256):​LO=OFFS-HI*256
420 POKE VVTP+10,​LO:​POKE VVTP+11,​HI
430 POKE VVTP+12,​5:​POKE VVTP+13,​1:​POKE VVTP+14,​5:​POKE VVTP+15,​1
440 Y=60:​Z=80:​X=50
450 A$(Y,​Y+11)=B$:​POKE 53248,​Z:​FOR J=1 TO 59:​A$(J,​J)=CHR$(24):​NEXT J
460 A$(280,​287)=P$:​XP=64:​POKE 53250,​XP
470 A$(408,​415)=R$:​XR=158:​POKE 53251,​XR
478 REM ** TRUCK COMES IN FROM RIGHT **
480 FOR J=1 TO 15:​XT=J:​GOSUB 1050:​SOUND 0,​100,​4,​XT/2:​FOR K=1 TO 20:​NEXT K:​NEXT J:​POKE 77,​0:​POKE 764,​255
485 REM
488 REM ** PRINT WORD **
490 GOSUB 1010:​POSITION 10-LEN(W$)/2,​11:​? #6;W$
491 REM ** LOOP TO MOVE TRAIN **
500 S=STICK(0):​K=PEEK(764):​IF S=7 OR K=7 AND X>6 THEN X=X-1:​DIR=-1:​POKE 764,​255
510 IF S=11 OR K=6 AND X<156 THEN X=X+1:​DIR=1:​POKE 764,​255
520 IF S<15 THEN 560
530 IF INT(X/6)=X/6 THEN 560
540 IF DIR=-1 THEN X=X-1
550 IF DIR=1 THEN X=X+1
558 REM ** MOVE TRAIN **
560 SCR$(181,​200)=TRN1$(X,​X+19)
570 SCR$(161,​180)=TRN2$(X,​X+19)
578 REM ** SOUND IF TRAIN COMING **
580 SCR$(141,​160)=TRN3$(X,​X+19)
590 IF X=SX THEN SOUND 0,​0,​0,​0
600 IF X<>SX THEN SOUND 0,​100,​4,​6:​SX=X
610 IF STRIG(0)=1 AND K<>33 THEN 500
618 REM ** PICK UP LETTER **
620 C=ASC(TRN3$(X+4)):​IF C=0 THEN 500
630 FOR J=1 TO 11:​Y=Y+1:​A$(Y,​Y+11)=B$:​SOUND 0,​(Y+100)*(Y/3=INT(Y/3)),​10,​6:​FOR K=1 TO 20:​NEXT K:​NEXT J
640 CS=57344+256+8*X/6:​FOR J=1 TO 8:​L$(J+1,​J+1)=CHR$(PEEK(CS+J-1)):​NEXT J
650 A$(129+Y,​139+Y)=L$:​POKE 53249,​Z
660 P=4+X:​TRN3$(P,​P)=CHR$(0):​SCR$(141,​160)=TRN3$(X,​X+19)
670 FOR J=1 TO 50:​Y=Y-1:​A$(Y,​Y+11)=B$:​A$(129+Y,​139+Y)=L$:​SOUND 0,​(Y+100)*(Y/3=INT(Y/3)),​10,​6:​FOR K=1 TO 10
680 NEXT K:​NEXT J:​SOUND 0,​0,​0,​0:​FOR J=1 TO 8:​XP=XP+1:​POKE 53250,​XP:​NEXT J
688 REM ** IF LETTER NOT CORRECT DROP IT **
690 IF C-32<>ASC(W$(LTR+1)) THEN GOSUB 820
700 FOR J=1 TO 32+8*LTR:​Z=Z+1:​XP=XP+1:​POKE 53250,​XP:​POKE 53249,​Z
710 SOUND 0,​Y+100*(XP/3=INT(XP/3)),​10,​6:​NEXT J:​LTR=LTR+1
720 FOR J=1 TO 15:​Y=Y+1:​A$(129+Y,​139+Y)=L$:​SOUND 0,​Y+100,​10,​6:​NEXT J:​A$(129+Y,​139+Y)=BL$
730 P=16+LTR:​TRK3$(P,​P)=CHR$(X/6+96):​SCR$(67,​80)=TRK3$(XT,​XT+13):​POSITION (Z-48)/8,​1:​PRINT #6;CHR$(142)
740 FOR J=1 TO 30:​SOUND 0,​100+100*RND(0),​8,​(30-J)/3:​NEXT J
750 XP=XP-1:​POKE 53250,​XP:​SOUND 0,​Y+100*(XP/3=INT(XP/3)),​10,​6:​IF XP>64 THEN 750
760 Z=80:​POKE 53249,​Z:​Y=Y-15
770 FOR J=1 TO 39:​Y=Y+1:​A$(Y,​Y+11)=B$:​SOUND 0,​Y+100,​10,​6:​NEXT J
780 SOUND 0,​0,​0,​0:​IF LTR<LEN(W$) THEN POKE 764,​255:​GOTO 500
788 REM ** WORD CORRECT - MOVE TRUCK OUT **
790 FOR J=15 TO 1 STEP -1:​XT=J:​GOSUB 1050:​SOUND 0,​100,​4,​XT/2:​FOR K=1 TO 20:​NEXT K:​NEXT J
795 GOSUB 2040
800 POSITION 7,​11:​PRINT #6;" ":​FOR J=10 TO 160 STEP 6:​TRN3$(J,​J)=CHR$(J/6+95):​NEXT J
810 LTR=0:​FOR J=17 TO 22:​TRK3$(J,​J)=CHR$(0):​NEXT J:​POSITION 8,​1:​PRINT #6;" ":​GOTO 480
818 REM ** ROUTINE FOR PUTTING INCORRECT LETTER BACK **
820 FOR J=1 TO 14:​SOUND 0,​50+50*(XP/3=INT(XP/3)),​10,​6
830 Z=Z+1:​XP=XP+1:​XR=XR-4:​POKE 53249,​Z:​POKE 53250,​XP:​POKE 53251,​XR:​NEXT J:​SOUND 0,​0,​0,​0
840 FOR J=1 TO 14:​Z=Z-1:​XP=XP-1:​XR=XR-1:​POKE 53249,​Z:​POKE 53250,​XP:​POKE 53251,​XR:​NEXT J
850 FOR J=1 TO 8:​XP=XP-1:​XR=XR+2:​POKE 53250,​XP:​POKE 53251,​XR:​Y=Y+1:​A$(129+Y,​139+Y)=L$:​A$(Y,​Y+11)=B$:​NEXT J
860 FOR J=1 TO 27:​XR=XR+2:​POKE 53251,​XR:​Y=Y+1:​A$(129+Y,​139+Y)=L$:​A$(Y,​Y+11)=B$:​SOUND 0,​Y+100,​10,​8:​NEXT J
870 FOR J=1 TO 15:​SOUND 0,​Y+100,​10,​8:​Y=Y+1:​A$(Y,​Y+11)=B$:​A$(129+Y,​139+Y)=L$:​NEXT J:​TRN3$(P,​P)=CHR$(C)
880 FOR J=1 TO 30:​SOUND 0,​100+100*RND(0),​8,​(30-J)/3:​NEXT J
890 SCR$(141,​160)=TRN3$(X,​X+19):​A$(129+Y,​139+Y)=BL$:​FOR J=1 TO 11:​Y=Y-1:​A$(Y,​Y+11)=B$:​NEXT J
900 SOUND 0,​0,​0,​0:​POKE 764,​255:​GOTO 500
908 REM ** MACHINE LEVEL - MOVE CHARACTER SET **
910 POKE 756,​PM
920 DIM MV$(23):​RESTORE 930:​FOR J=1 TO 23:​READ A:​MV$(J,​J)=CHR$(A):​NEXT J
930 DATA 104,​104,​133,​204,​104,​133,​203,​104,​133,​206,​104,​133,​205,​160,​0,​177,​203,​145,​205,​136,​208,​249,​96
940 CS=57344+512:​NCS=PM*256:​A=USR(ADR(MV$),​CS,​NCS)
950 FOR J=NCS TO NCS+7:​POKE J,​0:​NEXT J
960 CS=57344+256:​NCS=PM*256+256:​A=USR(ADR(MV$),​CS,​NCS)
970 FOR J=NCS TO NCS+7:​POKE J,​255:​NEXT J
980 NCS=PM*256:​RESTORE 990:​FOR J=160 TO 167:​READ A:​POKE NCS+J,​A:​NEXT J
990 DATA 0,​0,​60,​102,​219,​219,​102,​60
1000 POKE 756,​PM:​RETURN
1008 REM ** PICK A WORD SUBROUTINE **
1010 RESTORE 1020:​FOR J=1 TO INT(RND(0)*100)+1:​READ W$:​NEXT J:​RETURN
1020 DATA DOG,​CAT,​BIRD,​HAND,​COW,​HORSE,​PET,​FROG,​FLY,​ARM
1030 DATA HAIR,​TOE,​FINGER,​LEG,​FACE,​EAR,​MOUTH,​BAT,​WORK,​PLAY
1040 DATA WAGON,​BIKE,​CAR,​VAN,​TYRE,​CHAIN,​BRAKE,​GEAR,​HORN,​PEDAL
1041 DATA BAT,​WICKET,​PITCH,​BAIL,​NET,​CLUB,​SCORE,​WIN,​BOWL,​BOUNCE
1042 DATA TEA,​MILK,​SUGAR,​SAUCE,​GRAVY,​WATER,​SPICE,​HONEY,​FRUIT,​CAKE
1043 DATA SUN,​RAIN,​WIND,​CLOUD,​SHINE,​SNOW,​HAIL,​ICE,​FROST,​SHOWER
1044 DATA FLOWER,​ROSE,​ROCK,​THORN,​BUSH,​STONE,​LEAF,​PETAL,​BRANCH,​BARK
1045 DATA RAT,​MOUSE,​CAMEL,​LION,​DOG,​CAT,​HORSE,​PIG,​TIGER,​COW
1046 DATA ONE,​TWO,​FOUR,​FIVE,​SIX,​EIGHT,​TEN,​FORTY,​ZERO,​HALF
1047 DATA HAT,​COAT,​BELT,​SHIRT,​VEST,​BLOUSE,​SHOE,​SOCK,​JUMPER,​TIE
1048 REM ** PRINT TRUCK SUBROUTINE **
1050 SCR$(107,​120)=TRK1$(XT,​XT+13):​SCR$(87,​100)=TRK2$(XT,​XT+13):​SCR$(67,​80)=TRK3$(XT,​XT+13):​RETURN
2030 REM ** TUNE SUBROUTINE **
2032 DATA 91,​6,​121,​1,​91,​2,​121,​1,​91,​2,​81,​1,​72,​8,​91,​8,​68,​6,​68,​1,​91,​4,​81,​4,​72,​8,​0,​4
2034 DATA 91,​6,​121,​1,​91,​2,​121,​1,​91,​2,​81,​1,​72,​8,​91,​4,​72,​2,​72,​1,​72,​4,​81,​4,​81,​4,​72,​4,​81,​8
2040 RESTORE 2032:​FOR J=1 TO 29:​READ P,​T:​IF P=0 THEN FOR K=1 TO 20*T:​NEXT K:​GOTO 2070
2050 SOUND 0,​P,​10,​8:​SOUND 1,​2*P,​10,​6:​FOR L=1 TO 12*T
2060 NEXT L:​SOUND 0,​0,​0,​0:​SOUND 1,​0,​0,​0
2070 NEXT J:​RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!