|
|
DataMuseum.dkPresents historical artifacts from the history of: Zilog MCZ Floppy Disks |
This is an automatic "excavation" of a thematic subset of
Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 16020 (0x3e94)
Types: TextFile
Names: »WILD.05.L«
└─⟦329ff8d5f⟧ Bits:30006811 8" ZilogMCZ floppy NThun_0013 (SYSTEM MCZ 1/05)
└─⟦this⟧ »WILD.05.L«
\f
PLOTTER DRIVER WILD.05 840113_JK PAGE 1
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
1 *H PLOTTER DRIVER
2 *P 60
3 ;************************************************
4 ;* RIO DRIVER FOR PLOTTER TABLE *
5 ;* J\RGEN KRISTENSEN *
6 ;* S/C METRIC A/S *
7 ;* 84 01 13 MCZ 1 / 05 TRIBLE FLOPPY *
8 ;* 00 INITIALIZE 03 *
9 ;* 02 ASSIGN 03 *
10 ;* 04 OPEN 03 *
11 ;* 06 CLOSE 03 *
12 ;* 0E WRITE BINARY 04 *
13 ;* 10 WRITE LINE 04 *
14 ;* 44 DEACTIVATE 04 *
15 ;************************************************
16 ;
17 ; R E Q U E S T C O D E S
18 ; -------------------------
19 INITRQ EQU 00 ; INITIALISATION REQUEST
20 ASSNRQ EQU 02 ; ASSIGN REQUEST
21 OPENRQ EQU 04 ; OPEN REQUEST
22 CLOSRQ EQU 06 ; CLOSE REQUEST
23 RDBIRQ EQU 0AH ; READ BINARY
24 RDASRQ EQU 0CH ; READ ASCII
25 WRTBRQ EQU 0EH ; WRITE BINARY REQUEST
26 WRTLRQ EQU 10H ; WRITE ASCII REQUEST
27 DEACRQ EQU 44H ; DEACTIVATE REQUEST
28 ;
29 ; P O R T A D R E S S E S
30 ; -------------------------
31 S_11AD EQU 04H ; SIO
32 S_11BD EQU 05H
33 S_11AC EQU 06H
34 S_11BC EQU 07H
35 ;
36 C_11_0 EQU 0CH ; BAUD RATE SIO
37 C_11_1 EQU 0DH
38 C_11_2 EQU 0EH
39 C_11_3 EQU 0FH
40 ;
41 ; A S C I I C O D E S
42 ; ---------------------
43 TAB EQU 09H
44 ASCICR EQU 0DH
45 ASCILF EQU 0AH
46 E_O_F EQU 0FFH ; END OF FILE MARK
47 ;
48 ; B I T D E F I N I T I O N S
49 ; -----------------------------
50 RX_RDY EQU 0 ; RECIEVER READY BIT
51 TX_RDY EQU 2 ; TRANSMITTER READY BIT
52 ALLSENT EQU 0 ; TRANSMITTER EMPTY BIT
53 ;
54 ; S Y S T E M A D R E S S E S
55 ; -----------------------------
56 ERCODE EQU 13BDH ; ERROR CODE ADDRESS
57 DATE EQU 13ABH ; GLOBAL DATE
\f
DRIVER START WILD.05 840113_JK PAGE 2
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
58 *H DRIVER START
59 ; R E Q U E S T C O D E D E C O D E
60 ; -------------------------------------
61 GLOBAL DRAW
62 ;
FA80 63 ORG 0FA80H ; START PLOT DRIVER SIO
64 ;
FA80 CD16FB 65 DRAW CALL DEC_REQ ; DECODE REQUEST CODE
FA83 07 66 DEFB 7 ; NUMBER OF VALID REQUEST CODES
67 ;
FA84 00 68 DEFB INITRQ
FA85 99FA 69 DEFW S_INITRQ ; INITIALIZE
70 ;
FA87 02 71 DEFB ASSNRQ ; ASSIGN REQUEST ?
FA88 99FA 72 DEFW S_INITRQ ; INITIALIZE
73 ;
FA8A 04 74 DEFB OPENRQ ; OPEN REQUEST ?
FA8B A2FA 75 DEFW S_OPENRQ
76 ;
FA8D 06 77 DEFB CLOSRQ ; CLOSE - JUST RETURN
FA8E B8FA 78 DEFW OKEXIT
79 ;
FA90 0E 80 DEFB WRTBRQ ; WRITE BINARY REQUEST ?
FA91 A4FA 81 DEFW S_WRTBRQ
82 ;
FA93 10 83 DEFB WRTLRQ ; WRITE LINE REQUEST ?
FA94 B9FA 84 DEFW S_WRTLRQ
85 ;
FA96 44 86 DEFB DEACRQ ; DEACTIVATE - JUST RETURN
FA97 E4FA 87 DEFW S_DEACRQ
\f
INITIALIZE WILD.05 840113_JK PAGE 3
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
88 *H INITIALIZE
89 ; 0 0 I N I T I A L I Z E
90 ; -------------------------
91 ;
92 S_INITRQ
FA99 21FBFA 93 LD HL,I_SIO ; INITIALIZE SIO
FA9C CD0BFB 94 CALL INIT
FA9F DB04 95 IN A,(S_11AD)
96 ;
FAA1 C9 97 RET
98 ;
99 ;
100 ; 0 4 O P E N R E Q U E S T
101 ; -----------------------------
102 ;
103 S_OPENRQ
FAA2 C9 104 RET
105 ;
106 ;
107 ; 0 6 C L O S E R E Q U E S T
108 ; -------------------------------
109 ;
110 S_CLOSRQ
FAA3 C9 111 RET
\f
WRITE BINARY WILD.05 840113_JK PAGE 4
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
112 *H WRITE BINARY
113 ; 0 E W R I T E B I N A R Y
114 ; -----------------------------
115 ;
116 S_WRTBRQ
FAA4 C8 117 RET Z ; IF BC = 0 RETURN
118 ;
FAA5 7E 119 LOOP_B LD A,(HL) ; GET BYTE FOR OUTPUT
120 ;
FAA6 FEFF 121 CP E_O_F ; END OF FILE MARK ?
FAA8 CAD4FA 122 JP Z,ENDFIL
123 ;
FAAB CDE7FA 124 CALL SEND ; SEND 1 CHARACTER TO PLOTTER
FAAE FE0D 125 CP ASCICR ; IF ASCICR SEND LF
FAB0 CCE5FA 126 CALL Z,SEND_LF ; SEND LF AFTER CR
FAB3 EDA1 127 CPI ; INC HL DEC BC
FAB5 EAA5FA 128 JP PE,LOOP_B
FAB8 C9 129 OKEXIT RET
130 ;
131 ;
132 ; 1 0 W R I T E L I N E
133 ; -------------------------
134 S_WRTLRQ
FAB9 C8 135 RET Z ; IF BC = 0 RETURN
136 ;
FABA 7E 137 LOOP_L LD A,(HL) ; GET BYTE FOR OUTPUT
138 ;
FABB FEFF 139 CP E_O_F ; END OF FILE MARK ?
FABD CAD4FA 140 JP Z,ENDFIL
141 ;
FAC0 CDE7FA 142 CALL SEND ; SEND 1 CHARACTER TO PLOTTER
FAC3 FE0D 143 CP ASCICR ; IF ASCICR SEND LF
FAC5 CCE5FA 144 CALL Z,SEND_LF ; SEND LF AFTER CR
FAC8 3E0D 145 LD A,ASCICR ; IS IT A C.RETURN
FACA EDA1 146 CPI ; INC HL DEC BC
FACC 2806 147 JR Z,ENDLIN
148 ;
FACE EABAFA 149 JP PE,LOOP_L
FAD1 C9 150 RET
151 ;
152 ; -------------------------
153 ;
FAD2 EDA1 154 FILEND CPI
155 ENDFIL
FAD4 FD6E04 156 ENDLIN LD L,(IY+4) ; CALCULATE HOW MANY
FAD7 FD6605 157 LD H,(IY+5) ; BYTES HAVE BEEN OUTPUT
FADA A7 158 AND A ; FROM BUFFER
FADB ED42 159 SBC HL,BC
FADD FD7504 160 LD (IY+4),L ; LOAD INTO VECTOR
FAE0 FD7405 161 LD (IY+5),H
FAE3 C9 162 RET
163 ;
164 ; 4 4 D E A C T I V A T E R E Q U E S T
165 ; -----------------------------------------
166 ;
167 S_DEACRQ
FAE4 C9 168 RET
\f
WILD.05 840113_JK PAGE 5
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
169 *H
170 ; S E N D 1 C H A R A C T E R T O P L O T T E R
171 ; -----------------------------------------------------
172 ;
FAE5 3E0A 173 SEND_LF LD A,ASCILF
174 ;
FAE7 F5 175 SEND PUSH AF ; SAVE CHARACTER
176 ;
FAE8 3E01 177 WAITB LD A,1 ; REG 1
FAEA D306 178 OUT (S_11AC),A
FAEC DB06 179 IN A,(S_11AC) ; READ STATUS SIO
FAEE CB47 180 BIT ALLSENT,A ; TEST SIO EMPTY
FAF0 28F6 181 JR Z,WAITB ; TEST AGAIN
182 ;
FAF2 AF 183 XOR A ; A = 0
FAF3 00 184 DELAY NOP
FAF4 3D 185 DEC A
FAF5 20FC 186 JR NZ,DELAY
187 ;
FAF7 F1 188 POP AF ; RESTORE
FAF8 D304 189 OUT (S_11AD),A
FAFA C9 190 RET
191 ;
\f
INITIALIZE DATA WILD.05 840113_JK PAGE 6
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
192 *H INITIALIZE DATA
193 ; I N I T I A L I Z E D A T A
194 ; -----------------------------
195 ;
196 I_SIO
FAFB 09 197 SI_11A DEFB 9 ; LENGTH INIT SIO 1.1 A
FAFC 06 198 DEFB S_11AC ; PORT NUMBER SIO 1.1 A
199 ;
FAFD 18 200 DEFB 00011000B ; NEXT REG. = 0 RESET
FAFE 03 201 DEFB 3 ; NEXT REG. = 3
FAFF E0 202 DEFB 11100000B ; 8 BIT AUTO ENABLE
FB00 04 203 DEFB 4 ; NEXT REG. = 4
FB01 4C 204 DEFB 01001100B ; X16 CLOCK 1 STOPBIT NO PARITY
FB02 05 205 DEFB 5 ; NEXT REG. = 5
FB03 EA 206 DEFB 11101010B ; DTR, 8 BIT, RTS
FB04 01 207 DEFB 1 ; NEXT REG. = 1
FB05 00 208 DEFB 00000000B ; NO INTERRUPT
209 ;
FB06 02 210 CTC110 DEFB 2 ; LENGTH CTC INITIALIZE
FB07 0C 211 DEFB C_11_0 ; CTC 1.1 CHANNEL 0
FB08 07 212 DEFB 00000111B ; TIMER MODE PRESCALER = 16
FB09 01 213 DEFB 1 ; 9600 BAUD
214 ;
FB0A 00 215 DEFB 00 ; END OF INITIALIZE
216 ;
\f
INIT WILD.05 840113_JK PAGE 7
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
217 *H INIT
218 ; INITIALIZE SIO'S + CTC'S + PIO'S
219 ; --------------------------------
220 ;
221 ; (HL) = LENGTH
222 ; (HL+1) = CONTROL PORT
223 ; (HL+2) = INITIALIZE DATA
224 ;
225 ; HL > DEFB N
226 ; DEFB PORT
227 ; DEFB DATA_1
228 ; DEFB DATA_2
229 ; :
230 ; :
231 ; DEFB DATA_N
232 ; N+1 DEFB 00 ; STOP CONDITION
233 ;
FB0B 7E 234 INIT LD A,(HL) ; A = LENGTH
FB0C A7 235 AND A ; A = 0 FINISH
FB0D C8 236 RET Z ; END OF INITIALIZE
FB0E 47 237 LD B,A ; B = LENGTH OF INITIALIZE
FB0F 23 238 INC HL
FB10 4E 239 LD C,(HL) ; C = PORT ADDRESS
FB11 23 240 INC HL
FB12 EDB3 241 OTIR ; SEND TO DEVICE
FB14 18F5 242 JR INIT ; REPEAT
243 ;
244 ;
\f
REQUEST CODE DECODE WILD.05 840113_JK PAGE 8
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
245 *H REQUEST CODE DECODE
246 ;
247 GLOBAL DEC_REQ OKEXIT
248 ;START CALL DEC_REQ ; DRIVER EXAMPLE.
249 ; DEFB N ; NUMBER OF VALID REQ. CODES
250 ; DEFB OP_CODE_1
251 ; DEFW START_OP_CODE_1
252 ; DEFB OP_CODE_2
253 ; DEFW START_OP_CODE_2
254 ; :
255 ; :
256 ; DEFB OP_CODE_#N
257 ; DEFW START_OP_CODE_#N
258 ;
FB16 2145FB 259 DEC_REQ LD HL,IORTN1 ; HL = COMMON RETURN POINT
FB19 E3 260 EX HL,(SP) ; HL = OPCODE TABLE START
FB1A FD360A80 261 LD (IY+10),80H ; GOOD COMPLETION CODE
FB1E FD7E01 262 LD A,(IY+1) ; A = OPCODE
FB21 46 263 LD B,(HL) ; B = NUMBER OF OPCODES
FB22 23 264 INC HL
FB23 BE 265 SEARCH CP (HL) ; OPCODE FOUND ?
FB24 280A 266 JR,Z FOUND ; YES
FB26 23 267 INC HL
FB27 23 268 INC HL
FB28 23 269 INC HL
FB29 10F8 270 DJNZ SEARCH ; MORE VALID OPCODES ?
271 ;
FB2B FD360AC1 272 LD (IY+10),0C1H ; INVALID REQUEST CODE
FB2F C9 273 RET
274 ;
FB30 23 275 FOUND INC HL
FB31 7E 276 LD A,(HL)
FB32 23 277 INC HL
FB33 66 278 LD H,(HL)
FB34 6F 279 LD L,A
FB35 E5 280 PUSH HL ; SAVE REQ. CODE START ON STACK
281 ;
FB36 FD6E02 282 LD L,(IY+2)
FB39 FD6603 283 LD H,(IY+3) ; HL = DATA START ADDRESS
284 ;
FB3C FD4E04 285 LD C,(IY+4)
FB3F FD4605 286 LD B,(IY+5) ; BC = DATA LENGTH
287 ;
FB42 78 288 LD A,B
FB43 B1 289 OR C ; Z = 1 IF BC = 0
FB44 C9 290 RET
291 ;
FB45 FDCB0A76 292 IORTN1: BIT 6,(IY+10)
FB49 280B 293 JR Z,IORET
294 ERRTN:
FB4B FD6609 295 LD H,(IY+9)
FB4E FD6E08 296 LD L,(IY+8)
FB51 7C 297 LD A,H
FB52 B5 298 OR L
FB53 2801 299 JR Z,IORET
FB55 E9 300 JP (HL)
301 IORET:
FB56 FDCB0146 302 BIT 0,(IY+1) ; CHECK WHICH RETURN
FB5A C8 303 RET Z
FB5B FD6607 304 LD H,(IY+7) ; RETURN TO COMPLETION ADDRESS
\f
REQUEST CODE DECODE WILD.05 840113_JK PAGE 9
LOC OBJ CODE M STMT SOURCE STATEMENT ASM 5.9
FB5E FD6E06 305 LD L,(IY+6)
FB61 E9 306 JP (HL)
307 END
\f
CROSS REFERENCE WILD.05 840113_JK PAGE 10
SYMBOL VAL M DEFN REFS
ALLSEN 0000 52 180
ASCICR 000D 44 125 143 145
ASCILF 000A 45 173
ASSNRQ 0002 20 71
CLOSRQ 0006 22 77
CTC110 FB06 210
C_11_0 000C 36 211
C_11_1 000D 37
C_11_2 000E 38
C_11_3 000F 39
DATE 13AB 57
DEACRQ 0044 27 86
DEC_RE FB16 G 259 65 247
DELAY FAF3 184 186
DRAW FA80 G 65 61
ENDFIL FAD4 155 122 140
ENDLIN FAD4 156 147
ERCODE 13BD 56
ERRTN FB4B 294
E_O_F 00FF 46 121 139
FILEND FAD2 154
FOUND FB30 275 266
INIT FB0B 234 94 242
INITRQ 0000 19 68
IORET FB56 301 293 299
IORTN1 FB45 292 259
I_SIO FAFB 196 93
LOOP_B FAA5 119 128
LOOP_L FABA 137 149
OKEXIT FAB8 G 129 78 247
OPENRQ 0004 21 74
RDASRQ 000C 24
RDBIRQ 000A 23
RX_RDY 0000 50
SEARCH FB23 265 270
SEND FAE7 175 124 142
SEND_L FAE5 173 126 144
SI_11A FAFB 197
S_11AC 0006 33 178 179 198
S_11AD 0004 31 95 189
S_11BC 0007 34
S_11BD 0005 32
S_CLOS FAA3 110
S_DEAC FAE4 167 87
S_INIT FA99 92 69 72
S_OPEN FAA2 103 75
S_WRTB FAA4 116 81
S_WRTL FAB9 134 84
TAB 0009 43
TX_RDY 0002 51
WAITB FAE8 177 181
WRTBRQ 000E 25 80
WRTLRQ 0010 26 83