pruned and updated BASIC files

This commit is contained in:
Greg Gauthier 2023-07-07 13:42:09 +01:00
parent d34abe6bf8
commit cf0a8ebee0
17 changed files with 128 additions and 112 deletions

BIN
DOCS/atari_basic_2.pdf Normal file

Binary file not shown.

37
HDISK/BASIC/DIMEXAMP.BAS Normal file
View File

@ -0,0 +1,37 @@
1 REM DIMENSION DUMMY STRING
2 DIM DUMMY$(1)
3 REM DIMENSION THE APRAYS AND STRINGS
4 REM WHICH WILL NEED CLEARING
5 DIM A1(1),A2(1)
6 CLR :REM CLEAR THE VARIABLES
7 N=3:REM NUMBER OF VARIABLES JUST DIMENSIONED
8 REM INCLUDING DUMMY$
9 REM YOUR PROGRAM MAY BEGIN HERE
100 REM HERE IS AN EXAMPLE OF HOW TO
110 REM USE THE UNDIMENSION ROUTINE
120 DIM TEST$(20):TEST$="I'M STILL HERE? "
130 DIM DUMMY$(1),A1(50,10)
140 A1(50,10)=1:? A1(50,10),TEST$
150 REM EXECUTE UNDIMENSION ROUTINE
160 LINE=170:REM 1020
170 DIM DUMMY$(1),A2(500)
180 A2(500)=2:? A2(500),TEST$
190 END
200 REM
1000 REM UNDIMENSION ROUTINE
1010 REM SAVE CURRENT POINTER VALUES
1020 S136=PEEK(136):S137=PEEK(137)
1030 S140=PEEK(140):S141=PEEK(141)
1040 REM MOVE END OF VARIABLES
1050 T1=PEEK(134)+8*N:T2=PEEK(135)
1060 IF T1>255 THEN T2=T2+1:T1=T1-256
1070 POKE 136,T1:POKE 137,T2
1080 REM MOVE BEGINNING OF ARRAYS
1090 T2=INT(ADR(DUMMY$)/256)
1100 T1=ADR(DUMMY$)-T2*256
1110 POKE 140,T1:POKE 141,T2
1120 CLR :REM CLEAR THE ARRAYS
1130 REM RESTORE POINTERS AND RETURN
1140 POKE 136,S136:POKE 137,S137
1150 POKE 140,S140:POKE 141,S141
1160 REM LINE

View File

@ -3,4 +3,3 @@
30 PRINT "Hello, there. What is your name?"
40 INPUT NAME$
50 PRINT "How very nice to meet you, ";NAME$
60 PRINT "Goodbye, now!"

Binary file not shown.

49
HDISK/BASIC/KEYCODES.BAS Normal file
View File

@ -0,0 +1,49 @@
5 DIM IC(255),AC(255):SC=PEEK(88)+256*PEEK(89):SHIFT=64:VERS=0
10 GOSUB 500:REM THIS WILL CREATE ARRAYS FROM DATA STATEMENTS
15 GOSUB 600:REM USE THIS TO CREATE "D:KEYCODE.DAT"
20 GOSUB 700:REM USE THIS TO CREATE ARRAYS FROM DISKFILE "D:KEYCODE.DAT"
100 POKE 694,0:ON PEEK(753)<>3 GOTO 100:K=PEEK(764)
105 N=K:IF N>63 THEN N=N-64:IF N>63 THEN N=N-64:IF N>63 THEN N=N-64
110 IF N=60 THEN SHIFT=4+K-64
115 IF N=39 THEN VERS=128*(VERS<>128)
200 PRINT N,CHR$(AC(N+SHIFT)+VERS)
205 POKE SC+959,IC(N+SHIFT)+VERS
210 GOTO 100
500 RESTORE 1000
501 REM ------------------
502 FOR I=0 TO 191
503 READ N:IC(I)=N: REM *** THIS IS WHERE IT BREAKS ***
504 NEXT I
505 REM ------------------
506 FOR I=192 TO 255
507 IC(I)=0
508 NEXT I
509 REM ------------------
510 FOR I=0 TO 255:N=IC(I)
520 IF N<64 THEN AC(I)=N+32
530 IF N>63 AND N<96 THEN AC(I)=N-64
540 IF N>95 THEN AC(I)=N
550 NEXT I
560 RETURN
600 OPEN #4,8,0,"H6:BASIC:KEYCODES.DAT"
605 RESTORE 1000:FOR I=0 TO 191:READ N:PUT #4,N:NEXT I
610 FOR I=192 TO 255:PUT #4,0:NEXT I
615 CLOSE #4:RETURN
700 OPEN #4,4,0,"H6:BASIC:KEYCODES.DAT"
705 FOR I=0 TO 255:GET #4,N:IC(I)=N
710 IF N<64 THEN AC(I)=N+32
715 IF N>63 AND N<96 THEN AC(I)=N-64
720 IF N>95 THEN AC(I)=N
725 NEXT I:RETURN
1000 DATA 108,106,27,0,0,107,11,10,111,0,112,117,0,105,13,29
1016 DATA 118,0,99,0,0,98,120,122,20,0,19,22,91,21,18,17
1032 DATA 12,0,14,110,0,109,15,0,114,0,101,121,127,116,119,113
1048 DATA 25,0,16,23,126,24,28,30,102,104,100,0,0,103,115,97
1064 DATA 44,42,26,0,0,43,60,62,47,0,48,53,0,41,63,124
1080 DATA 54,0,35,0,0,34,56,58,4,0,3,6,0,5,2,1
1096 DATA 59,0,61,46,0,45,31,0,50,0,37,57,0,52,55,49
1112 DATA 8,0,9,7,0,32,125,0,38,40,36,0,0,39,51,33
1128 DATA 76,74,123,0,0,75,94,95,79,0,80,85,0,73,92,93
1144 DATA 86,0,67,0,0,66,88,90,0,0,0,0,0,0,0,0
1160 DATA 64,0,96,78,0,77,0,0,82,0,69,89,0,84,87,81
1176 DATA 0,0,0,0,0,0,0,0,70,72,68,0,0,71,83,65

View File

@ -1,52 +0,0 @@
51 REM ATARI RAM TEST PROGRAM
52 REM BY ED STEWART 03/82
53 REM 11025 SAGEBRUSH AVE
54 REM UNIONTOWN OHIO 44685
99 REM SETUP SOME REQUIRED CONSTANTS
100 N1 = 1 : N2 = N1 + N1 : N255 = 255 : N256 = N255 + N1
200 DIM S$(N2) : S$(N1, N1) = CHR$(157) : S$(N2, N2) = CHR$(159)
299 REM READ IN THE MACHINE LANGUAGE PROGRAM
300 GOSUB 2900
399 REM GET LOW AND HIGH MEMORY BOUNDS
400 L = PEEK(15) * N256 : H = PEEK(742) * N256 : IF PEEK(14)< >NO THEN L = L + N256
499 REM DISPLAY BOUNDS AND GET REPLY
500 ? CHR$(125); S$; "ATARI MEMORY TEST PROGRAM"; CHR$(155); S$; "MEMORY BOUNDS ARE"
600 ? S$; "LOW = "; L : ? S$; "HIGH = "; H
700 ? S$; "GIVE TEST BOUNDS"; CHR$(155)
800 TRAP 800 : ? S$; "LOW = "; : INPUT LOW : IF LOW < L OR LOW > H THEN 800
900 TRAP 900 : ? S$; "HIGH = "; : INPUT HIGH : IF HIGH > H OR HIGH < L OR HIGH-LOW < N256 THEN 900
999 REM SETUP BOUNDS FOR THE MLP
1000 POKE 205, NO : POKE 206, INT(HIGH/N256)
1100 TRAP 32767 : POKE 203, NO : POKE 204, INT(LOW/N256)
1200 POKE 764, N255
1299 REM INVOKE THE MLP TO DO THE TEST
1300 POKE 559, NO : POKE 764, N255 : X = USR(1536)
1399 REM CHECK RETURN FROM MLP
1400 IF PEEK(208) = NO THEN 2200
1499 REM SHOW MEMORY ERROR ON SCREEN
1500 ? " ERROR AT "; (PEEK(203) + PEEK(204) * N256); " EXP = "; PEEK(207); " ACT = "; PEEK(209)
1600 SOUND NO, PASS, 6, 8 : FOR I = N1 TO 5 : NEXT I : SOUND NO, NO, NO, NO
1699 REM SETUP NEXT BYTE TO TEST SO WE DONT STOP WITH FIRST ERROR
1700 IF PEEK(203) = N255 THEN POKE 204, (PEEK(204) + N1) : POKE 203, NO : GOTO 1900
1800 POKE 203, (PEEK(203) + N1)
1900 POKE 764, N255 : POKE 559, 34
1999 REM CONTINUE ONLY IF KEY PRESSED
2000 IF PEEK(764) = N255 THEN 2000
2099 REM CONTINUE TESTING BAD RANGE
2100 GOTO 1300
2199 REM GOOD TEST PASS SO SAY SO
2200 PASS = PASS + N1 : ? " GOOD PASS NUMBER "; PASS : SOUND NO, PASS, 10, 8
2300 FOR I = N1 TO 5 : NEXT I : SOUND NO, NO, NO, NO
2399 REM STOP AND DISPLAY STUFF IF KEY IS PRESSED
2400 IF PEEK(764)< >N255 THEN 2600
2499 REM CONTINUE WITH NEXT PASS
2500 GOTO 1100
2600 POKE 764, N255
2699 REM WAIT HERE UNTIL A KEY IS PRESSED
2700 POKE 559, 34 : IF PEEK(764) = N255 THEN 2700
2799 REM CONTINUE WITH NEXT PASS
2800 GOTO 1100
2899 REM READ IN MACHINE LANGUAGE PROGRAM
2900 FOR L = 1536 TO 1576 : READ H : POKE L, H : NEXT L : RETURN
3000 DATA 104, 169, 0, 160, 0, 24, 145, 203, 209, 203, 208, 18, 105, 1, 208, 246, 200, 208, 242, 230, 204, 166, 204, 228, 206
3100 DATA 208, 234, 133, 208, 96, 133, 207, 177, 203, 133, 209, 169, 1, 133, 208, 96

View File

@ -1,52 +0,0 @@
51 REM ATARI RAM TEST PROGRAM
52 REM BY ED STEWART 03/82
53 REM 11025 SAGEBRUSH AVE
54 REM UNIONTOWN OHIO 44685
99 REM SETUP SOME REQUIRED CONSTANTS
100 N1 = 1 : N2 = N1 + N1 : N255 = 255 : N256 = N255 + N1
200 DIM S$(N2) : S$(N1, N1) = CHR$(157) : S$(N2, N2) = CHR$(159)
299 REM READ IN THE MACHINE LANGUAGE PROGRAM
300 GOSUB 2900
399 REM GET LOW AND HIGH MEMORY BOUNDS
400 L = PEEK(15) * N256 : H = PEEK(742) * N256 : IF PEEK(14) <> NO THEN L = L + N256
499 REM DISPLAY BOUNDS AND GET REPLY
500 ? CHR$(125); S$; "ATARI MEMORY TEST PROGRAM"; CHR$(155); S$; "MEMORY BOUNDS ARE "
600 ? S$; "LOW = "; L : ? S$; "HIGH = "; H
700 ? S$; "GIVE TEST BOUNDS"; CHR$(155)
800 TRAP 800 : ? S$; "LOW = "; : INPUT LOW : IF LOW < L OR LOW > H THEN 800
900 TRAP 900 : ? S$; "HIGH = "; : INPUT HIGH : IF HIGH > H OR HIGH < L OR HIGH-LOW < N256 THEN 900
999 REM SETUP BOUNDS FOR THE MLP
1000 POKE 205, NO : POKE 206, INT(HIGH/N256)
1100 TRAP 32767 : POKE 203, NO : POKE 204, INT(LOW/N256)
1200 POKE 764, N255
1299 REM INVOKE THE MLP TO DO THE TEST
1300 POKE 559, NO : POKE 764, N255 : X = USR(1536)
1399 REM CHECK RETURN FROM MLP
1400 IF PEEK(208) = NO THEN 2200
1499 REM SHOW MEMORY ERROR ON SCREEN
1500 ? " ERROR AT "; (PEEK(203) + PEEK(204) * N256); " EXP = "; PEEK(207); " ACT = "; PEEK(209)
1600 SOUND NO, PASS, 6, 8 : FOR I = N1 TO 5 : NEXT I : SOUND NO, NO, NO, NO
1699 REM SETUP NEXT BYTE TO TEST SO WE DONT STOP WITH FIRST ERROR
1700 IF PEEK(203) = N255 THEN POKE 204, (PEEK(204) + N1) : POKE 203, NO : GOTO 1900
1800 POKE 203, (PEEK(203) + N1)
1900 POKE 764, N255 : POKE 559, 34
1999 REM CONTINUE ONLY IF KEY PRESSED
2000 IF PEEK(764) = N255 THEN 2000
2099 REM CONTINUE TESTING BAD RANGE
2100 GOTO 1300
2199 REM GOOD TEST PASS SO SAY SO
2200 PASS = PASS + N1 : ? " GOOD PASS NUMBER "; PASS : SOUND NO, PASS, 10, 8
2300 FOR I = N1 TO 5 : NEXT I : SOUND NO, NO, NO, NO
2399 REM STOP AND DISPLAY STUFF IF KEY IS PRESSED
2400 IF PEEK(764) <> N255 THEN 2600
2499 REM CONTINUE WITH NEXT PASS
2500 GOTO 1100
2600 POKE 764, N255
2699 REM WAIT HERE UNTIL A KEY IS PRESSED
2700 POKE 559, 34 : IF PEEK(764) = N255 THEN 2700
2799 REM CONTINUE WITH NEXT PASS
2800 GOTO 1100
2899 REM READ IN MACHINE LANGUAGE PROGRAM
2900 FOR L = 1536 TO 1576 : READ H : POKE L, H : NEXT L : RETURN
3000 DATA 104, 169, 0, 160, 0, 24, 145, 203, 209, 203, 208, 18, 105, 1, 208, 246, 200, 208, 242, 230, 204, 166, 204, 228, 206
3100 DATA 208, 234, 133, 208, 96, 133, 207, 177, 203, 133, 209, 169, 1, 133, 208, 96

View File

@ -1,5 +0,0 @@
10 REM *** A VERY SIMPLE PROGRAM ***
20 DIM A$(7)
20 DIM B$(7)
30 DIM C$(7)
40 A$=""

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

23
HDISK/BASIC/PRTOKENS.BAS Normal file
View File

@ -0,0 +1,23 @@
1 REM
100 REM PROGRAM TO PRINT THE TOKENS
110 REM WHICH BEGIN BASIC STATEMENTS
120 REM Get the beginning of program
130 BASE=PEEK(136)+PEEK(137)*256
140 REM Change statement terminator
150 POKE BASE+5,22
160 ? CHR$(125):REM CLEAR SCREEN
170 REM PRINT TOKENS
180 FOR I=0 TO 54
190 REM Change line number and token
200 POKE BASE,I:POKE BASE+4,I
210 LIST I:REM Print token
220 REM Undo line feed if needed
230 IF I>1 THEN ? CHR$(28);
240 REM Change left margin for columns
250 IF I=19 THEN POKE 82,12:POSITION 12,1
260 IF I=39 THEN POKE 82,24:POSITION 24,1
270 NEXT I
280 REM Put Program back to normal
290 POKE BASE,1:POKE BASE+4,0
300 POKE BASE+5,155
310 POKE 82,2:POSITION 2,22

17
HDISK/BASIC/PRVARS.BAS Normal file
View File

@ -0,0 +1,17 @@
100 REM PROGRAM TO PRINT THE VARIABLE NAME LIST
105 PRINT "Before line 110"
110 DIM ARRAYNAME(1),STRINGNAME$(1)
120 REM GET THE BEGINNING OF THE LIST
125 PRINT "Before line 130"
130 ADDRESS=PEEK(130)+PEEK(131)*256
135 PRINT "Before line 140: ";ADDRESS
140 ? CHR$(125);"VARIABLE NAME LIST"
150 REM GET CHARACTER AND TEST FOR END
155 PRINT "Before line 160"
160 A=PEEK(ADDRESS):IF A=0 THEN END
165 PRINT "Before line 180: ";A
170 REM PRINT CHARACTER
180 IF A<128 THEN ? CHR$(A);:REM 210
190 ? CHR$(A-128)
200 REM GET NEXT ADDRESS AND REPEAT
210 ADDRESS=ADDRESS+1:REM 160

Binary file not shown.

Binary file not shown.

View File

@ -1,7 +1,7 @@
/home/gmgauthier/Atari/FDISK/DOS/MyDos-4.55.atr
/home/gmgauthier/Atari/FDISK/DEV/32_BASIC_Programs_for_AtarI_side_A.atr
/home/gmgauthier/Atari/FDISK/DEV/32_BASIC_Programs_for_AtarI_side_B.atr
/home/gmgauthier/Atari/FDISK/BASICWEEK.atr
/home/gmgauthier/Atari/FDISK/DATA/MYCODE01.atr
/home/gmgauthier/Atari/FDISK/DATA/BASICS.atr
Off
Off
Off