-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconwbw.mac
103 lines (92 loc) · 1.67 KB
/
conwbw.mac
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
TITLE TurboDOS Console Driver
SUBTTL For the RomWBW based systems
;
; CONWBW.MAC
; Lodden Services, LLC
; Console driver -- Make sure all console out goes to RomWBW Console
;
;
; Version date: 12/26/20
;
; Edit History:
;
;12/26/20 jrl Created CONWBW
;
;
.Z80 ; for Zilog Mnuemonics
;
;INCLUDE Q6AEQU ; common CPS-Q6A equivalences
; INCLUDE HDMACROS ; special instructions for HD64180
;
NAME ('CONWBW') ; module ID
DSEG
CHARSTORE: DB 0FFH
;
;
CSEG ;Locate in prog area
;
CONDR@::
LD A,E ;GET FUNCTION CODE.
CP 10
JP Z,OPTOUT
CP 8 ;TEST IF ERROR ON.
JP Z,ERRORON
CP 9 ;TEST FOR ERROR OFF.
JP Z,ERROROFF
OR A ;TEST IF ZERO.
JP Z,CONSTAT ;TEST FOR CONSOLE INPUT.
DEC A ;TEST FOR CONSOLE INPUT.
JP Z,CONIN ;READ THE CHARACTER.
DEC A ;TEST FOR CONSOLE OUTPUT.
JP Z,CONOUT
RET
;
;CONSOLE STATUS
;
CONSTAT:
LD BC,0200H ; ROMWBW -- CIOIST
CALL 0FFF0H
CP 0
JP NZ,CONSTAT1
LD A,(CHARSTORE) ; SEE IF CHARACTER STORED AWAY ALREADY
CP 0FFH
JP NZ,CONSTAT2 ; CHAR STORED
XOR A ; NO CHAR
RET
CONSTAT1:
LD BC,00 ; CIOIN
CALL 0FFF0H
LD A,E
LD (CHARSTORE),A ; STORE CHAR
CONSTAT2:
LD C,A ; TurboDOS wants char in CHAR
LD A,0FFH ; have char
RET
;
;CONSOLE INPUT
;
CONIN:
CALL CONSTAT
OR A
JR Z,CONIN ; WAIT FOR CHAR -- **TODO CALL DELAY FUNCTION
LD A,0FFH
LD (CHARSTORE),A ; char is used
LD A,C
RET
;
;
;Console output
;
CONOUT:
LD E,C ; move output char in E
LD BC,0100H
CALL 0FFF0H
RET
OPTOUT: ; CAN NOT OPT OUTPUT RIGHT NOW
XOR A
RET
;
ERRORON:
ERROROFF:
RET ; don't do anything right now
END