Vectors – RST and DISK BASIC

ROM RST Vectors – Bob Alger (10/27/83)

RST
Jump
Contents
Purpose
0
none
 
Re-boot- power on or RESET
8
4000
JP 1C96
If (HL) = ((SP))- do RST10H logic, else print SN error
10
4003
JP 1D78
Find next non-blank character in a string
18
4006
JP 1C90
DE compared to HL. Z set if DE = HL, C set if DE > HL
20
4009
JP 25D9
Test NTF flag at 40AF. Z flag set if string, M if integer, P&C if single, P&NC if double, A=NTF – 3.
28
400C
RET
NOP
NOP
BREAK key vector. you can put your own 3 byte instruction here to jump to your own routine.
30
400F
RET
NOP
NOP
Used by DOS
38
4012
EI
RET
NOP
Used by DOS

DISK BASIC COMMAND VECTORS

Hex Address
Dec Address
Command
Model I NEWDOS/80
v2.0 Jump
Model I TRSDOS
v2.3 Jump
4152
16722
CVI
58F5H
5F18H
4155
16725
FN*
577FH
558EH
4158
16728
CVS
58F2H
5F1BH
415B
16731
DEF
5852H
5655H
415E
16734
CVD
58EFH
5F1EH
4161
16737
EOF
5EC5H
62B8H
4164
16740
LOC
5ED1H
62FEH
4167
16743
LOF
5EC9H
630FH
416A
16746
MKI$
58DEH
5EFFH
416D
16749
MKS$
58DBH
5F02H
4170
16752
MKD$
58D8H
5F05H
4173
16755
CMD
57FFH
56CBH
4176
16758
TIME$*
58C4H
5745H
4179
16761
OPEN
5795H
6434H
417C
16764
FIELD
5E63H
61AFH
417F
16767
GET
6126H
6355H
4182
16770
PUT
6125H
6354H
4185
16773
CLOSE
5FA1H
6173H
4188
16776
LOAD
574AH
606EH
418B
16779
MERGE
572EH
6109H
418E
16782
NAME
1E4AH
6544H
4191
16785
KILL
643CH
6521H
4194
16788
&*
5790H
5913H
4197
16791
LSET
5908H
620BH
419A
16754
RSET
5909H
620AH
419D
16797
INSTR*
5786H
588BH
41A0
16800
SAVE
573BH
6148H
41A3
16803
LINE
579FH
5786H

* Items marked with an asterisk are called during expression evaluation.

The down and dirty program I wrote to calculate the jumps between 4152H and 41A6H is:

10 OPEN "O",1,"OUTPUT:0"
20 FOR X=16722 TO 16806 STEP 3
30   V=PEEK(X) : GOSUB 110 : O$=H$
40   V=PEEK(X+1) : GOSUB 110 : L$=H$
50   V=PEEK(X+2) : GOSUB 110 : M$=H$
60   IF O$="C3" THEN X$="JP "+M$+L$ ELSE X$="nojp "+M$+L$
70   PRINT #1,X,X$;"H"
80 NEXT X
90 CLOSE
100 END
110 C = V/16
120 F = INT(C)
130 IF F < 10 THEN A$=CHR$(F+48) ELSE A$=CHR$(F+55)
140 D=(C-F) * 16
150 IF D < 10 THEN B$=CHR$(D+48) ELSE B$=CHR$(D+55)
160 H$=A$+B$
170 RETURN