|
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 - 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