forked from chapmajs/glitchworks_monitor
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsmcpm80.asm
53 lines (43 loc) · 1.68 KB
/
smcpm80.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SMCPM80 -- GWMON-80 Small Monitor for CP/M-80
;
;This customization uses CP/M console I/O. It is compatible
;with CP/M 1.4 through 3.0. It is intended primarily for
;testing GWMON-80 development.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Hardware Equates
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STACK equ 03FEH ;Start above monitor
CPMSTK equ STACK ;Store CP/M stack above our own
ORG 0100H ;Load in standard TPA
INCLUDE 'vectors.inc' ;Standard GWMON-80 jump table
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SAVSTK -- Save the CP/M stack
;
;The current stack pointer is saved at CPMSTK for later use
;by the 'C' command.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SAVSTK: LXI H, 0 ;Zero HL
DAD SP ;HL = CP/M stack pointer
SHLD CPMSTK ;Save for later
INCLUDE 'sm.inc' ;The small monitor
INCLUDE 'scmdstd.inc' ;SM standard commands
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SCMDCPM -- SM Quit Command under CP/M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CPMCMD: db 'c'
dw CPMQUT
INCLUDE 'scmdnull.inc' ;Command table terminator
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;CPMQUIT -- Exit to CP/M
;
;This command restores the CP/M stack pointer from CPMSTK
;and returns through BDOS call. CPMSTK must be initialized
;by the customization.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CPMQUT: LHLD CPMSTK ;HL = CP/M stack pointer
SPHL ;Restore CP/M stack
RET ;Return to CP/M
INCLUDE 'cpm80io.inc' ;CP/M-80 console I/O
END