Download AIM 65/40 .. . THE NEXT GENERATION!

Transcript
■VIFH\OIIVF
POKE 42002,84
%
*
Page 5
ACTIVE INPUT DEVICE SET TO
“TAPE”
USER INPUT STATEMENTS TO
READ FROM TAPE
*
POKE 42002,13
ACTIVE INPUT DEVICE RETURNED
TO “ K EY B O A R D "
*
*
*
USER PROGRAM
END
TAPE SUBROUTINES
9000
9010
REM: OPEN
FILE (WRITE)
POKE 2 7 8 ,0
9020
POKE
9030
9040
POKE
POKE
42039,1
360,0
41993.22
$0116 TOO (SET 1ST CHAR IN BUFF
FOR BLK 0)
SET OUTPUT TAPE POINTER
($A437) TO “ 1"
BLOCK COUNT ($0168) TO ZERO
SET TAPE GAP
($A409) TO $16
9050
9100
9110
9115
9120
9130
9140
9150
9160
9170
9200
RETURN
REM: WRITEEOF
POKE 42003,84
PRINT CHR$(13)
NL = 80-PEEK
(42039)
9210
9220
FOR N C = 1 TO NL
PRINT CHR$(0);
NEXT NC
POKE 42003,13
RETURN
REM: OPEN
FILE (READ)
POKE 277,0
POKE 42038,80
9230
RETURN
SET OUTFLG TO “ T ”
OUTPUT O D ,O D ,Q A
CHECK POINTER FOR BUFFER
SPACE
FILL BUFFER WITH NULLS
SET OUTFLG TO “ D ”
SET BLOCK ($0115) TO ZERO
SET COUNTER ($A436) TO END
($50)
70
INPUT “ STORE ON TAPE Y /N ” ;A$
80
90
100
IF AS = “ N ” THEN STOP
INPUT **T = ” ; T:T = T - 1
POKE 42037, T:REM: SET TAPOUT
110
POKE 4 3 0 0 8 ,204:REM: TURN TAPES OFF
120
130
140
INPUT “ TAPE READY Y/N
IF A $ = “ N ” THEN STOP
INPUT “ FILEN A M E” ;AS
150
160
170
GOSUB 9010:REM: OPEN FILE
POKE 4 2 0 0 3 ,84:REM: TAPE AOD
PRINT A$
N
180
190
PRINT HS
FOR 1 = 0 T O N - 1
200
210
220
230
PRINT I + 1;
;P$(I)
NEXT I
POKE 42003 ,13:R EM : DISPLAY AOD
GOSUB 9 1 10:REM: WRITE EOF
240
250
POKE 4 3 0 0 8 ,252:REM: TURN TAPES ON
END
A$
500
REM: TAPE READ EXAMPLE
510
520
DIM R(40), R$(40)
INPUT “ READ TAPE Y /N ” ; A$
530
540
550
560
570
580
IF AS = “ N ’' THEN STOP
INPUT “ T = ” : T:T = T - 1
POKE 4 2 0 3 6 ,T:REM: SET TAPIN
GOSUB 9210:REM: OPEN FILE
POKE 4 2 0 0 2 ,84:REM: TAPE AID
INPUT AS,N
590
600
INPUT HS
FOR 1 = 0 T O N - 1
610
620
630
640
650
660
670
INPUT R (I),R$(I)
NEXT I
POKE 42002,13
PRINT “ ”
PRINT! “
PRINT!HS
FOR 1 = 0 TO N - 1
PRINT! R(l); TAB(5);RS(1)
680
690
700
710
NEXT I
PRINT!
POKE 43008.252
END
Some useful locations:
Hex
Decimal
Label
Remarks
EXAMPLE PROGRAM
1
10
20
30
40
50
60
$0115
277
BLK Block count for input (must be
$01 16
278
zero to start)
TABUFF 80 byte tape buffer starts here
$0168
360
SA409
41993 GAP
SA411
42001PRIFLG
DIM P$(40)
REM: TAPE WRITE EXAMPLE
INPUT ‘ '# E N T R IE S' ' :N
FOR 1 = 0 TO N —1
PRINT “ ENTRY # ” : I + 1; :IN PUT PS(1)
NEXT I
INPUT “ T IT L E ” ;H$
BLKO Block count for output
(set to zero)
Block gap for tape recorder
Printer “ O N " = 0,
" O F F " = 128 ($80)