Z80ASM SuperFast Relocating Macro Assembler Z80ASM 1.31 Page 1 K10BIOS Z80 1 ; BIOS for Kaypro K10 with provision for ZCPR 3.3 on a 58K system size 2 ; 3 ;History: 4 ; Adapted from John Smith's K10 BIOS. 5 ; Reconfigured for a better ZCPR fit. Now allows STARTUPs to be 6 ; freely made using any ALIAS creation utility. 7 ; April 1988 Michael Broschat for the Seattle Campus Kaypro Club 8 ; 9 ; Old history: Add secondary xlate table and build in ability to have 10 ; function keys. 11 ; Steven R. Fabian 12 ; Initialization of modem port on a cold boot. 13 ; Steven R. Fabian 14 ; Add Parallel port driver using a time delay. 15 ; Steven R. Fabian 16 ; 17 ; 18 0021 zvers equ 33 19 ; version 3.0 by John C. Smith, Manlius, NY 20 ; 21 maclib z3base.lib 22 23 ; 24 FFFF hdisk equ -1 ; -1 for hard disk, 0 for floppy 25 000A vers equ 10 ; Z80DOS version number 26 9800 bias equ (msize-20)*1024 ; bias for systems larger than 20k 27 CC00 ccp equ 3400H+bias ; start of CCP 28 D406 bdos equ ccp+806H ; start of BDOS (The resident portion of CP/M) 29 E200 bios equ ccp+1600H ; start of Basic I/O Subsystem (BIOS) 30 1600 cpml equ bios-ccp ; length of CP/M system in bytes (less BIOS) 31 002C nsects equ cpml/128 ; length of CP/M system in sectors (less BIOS) 32 FFFF if hdisk 33 0044 trksec equ 68 ; sectors/track 34 else 36 endif 37 38 39 0014 bitport equ 14H ; status/control bit maped port 40 0000 baudA equ 0 ; baud rate port (modem) 41 0008 baudB equ 8 ; baud rate port (printer) 42 0005 baud30 equ 05H ; 300 baud rate 43 0003 iobyte equ 3 ; logical to physical map 44 0000 rom equ 00000H ; base of rom 45 8000 time equ 8000H ; time out rate 46 0000 fox equ 0 ; set to 0 47 0007 siokb0 equ 07H ; keyboard channel command/status 48 000E siosp0 equ 0EH ; serial printer command/status channel 49 0006 siom0 equ 06H ; modem channel command/status 50 0018 reset equ 18H ; channel reset 51 0001 wr1 equ 01H ; interrupt enable and wait/ready modes 52 0000 tid equ 00H ; transmitter interrupt disable 53 0000 rid equ 00H ; recieve interrupt disable 54 0003 wr3 equ 03H ; receiver logic control parameters 55 0001 re equ 01H ; receiver enable 56 0020 autoe equ 20H ; auto enable (use dcd and cts to enable recv 57 ; and xmt 58 00C0 rbits8 equ 0C0H ; 8 bits/character 59 0004 wr4 equ 04H ; control bits that affect both xmt and recv 60 0004 sbits1 equ 04H ; 1 stop bit 61 0040 cr16 equ 40H ; x16 62 0005 wr5 equ 05H ; control bits that affect xmt 63 0008 te equ 08H ; transmit enable 64 0060 tbits8 equ 60H ; 8 bits/character 65 0080 dtr equ 80H ; DTR output 66 0018 pfdat equ 24 ; cent out data port (8 bit latch) 67 0003 pstrob equ 3 ; bit in bit port 68 69 FFFF if rcp ne 0 70 E600 bufferbase equ rcp 71 else 73 endif 74 75 ; bufferbase is the bottom of the ZCPR-added segments. This version of the 76 ; ..BIOS presumes either a minimal ZCPR system (no FCP, NDR, or RCP) or a 77 ; ..full one (including those segments; a "maximum" system would include the 78 ; ..IOP segment as well). The user should be aware that a system somewhere 79 ; ..between these extremes could be developed having only one or two of the 80 ; ..system segments just mentioned. 81 82 .phase bios 83 84 E200 C3 E2A9 jp boot ; arrive here from cold start 85 E203 C3 E389 jp wboot ; arrive here for warm start 86 E206 C3 E3DE jp const ; console status return in A FF=ready, 00=not 87 E209 C3 E403 jp conin ; console char in 88 E20C C3 E45F jp conout ; console char out 89 E20F C3 E478 jp list ; listing char out 90 E212 C3 E473 jp punch ; punch char out 91 E215 C3 E46E jp reader ; reader char in 92 E218 C3 E4BD jp home ; move to track 0 on selected disk drive 93 E21B C3 E4C1 jp seldsk ; select disk drive 94 E21E C3 E4C5 jp settrk ; set track # 95 E221 C3 E4C9 jp setsec ; set sector # 96 E224 C3 E4CD jp setdma ; set DMA address 97 E227 C3 E4D1 jp read ; read selected sector 98 E22A C3 E4DB jp write ; write selected sector 99 E22D C3 E493 jp listst ; list status (Ready to print a char) 100 E230 C3 E4ED jp sectran ; sector translate 101 102 E233 81 ioconfig: defb 10000001B ; initial value for i/o byte (may be patched) 103 E234 00 wrtsafe: defb 0 ; write safe flage 0=false 104 E235 0B 0A 08 0C vtab: defb 11, 10, 8, 12 ; vector pad xlate table ^k ^j ^h ^l 105 E239 30 31 32 33 defb '0', '1', '2', '3' 106 E23D 34 35 36 37 defb '4', '5', '6', '7' 107 E241 38 39 00 00 defb '8', '9', 0 , 0 108 E245 0D 2E defb 0DH, '.' 109 E247 baudrt: 110 E247 05 defb baud30 ; baud rate (modem) 111 E248 05 defb baud30 ; baud rate (printer) 112 113 E249 2C defb (sndtab-vtab) 114 115 E24A sioint: ;i/o device initialization table 116 ;first byte is number of bytes to send 117 ;second byte is port to send out to 118 ;third byte is data 119 ;init sio channel for serial printer 120 E24A 09 defb 09H 121 E24B 0E defb siosp0 122 E24C 18 defb reset ;reset sio channel 123 E24D 04 defb wr4 124 E24E 44 defb sbits1 or cr16 ;one stop bit 16x clock 125 E24F 03 defb wr3 126 E250 E1 defb re or rbits8 or autoe ;recv enable, 8bits/char 127 E251 05 defb wr5 128 E252 E8 defb te or tbits8 or dtr ;xmt enable, 8bits/char,assert dtr 129 E253 01 defb wr1 130 E254 00 defb tid or rid ;xmt & recv interrupts disabled 131 132 ;init sio channel for modem 133 E255 09 defb 09H 134 E256 06 defb siom0 135 E257 18 defb reset ;reset sio channel 136 E258 04 defb wr4 137 E259 44 defb sbits1 or cr16 ;one stop bit 16x clock 138 E25A 03 defb wr3 139 E25B E1 defb re or rbits8 or autoe ;recv enable, 8bits/char 140 E25C 05 defb wr5 141 E25D E8 defb te or tbits8 or dtr ;xmt enable, 8bits/char,assert dtr 142 E25E 01 defb wr1 143 E25F 00 defb tid or rid ;xmt & recv interrupts disabled 144 145 E260 siotbnd: 146 E260 00 defb 0 ;end of table 147 148 E261 sndtab: 149 E261 00 00 00 00 defb 0,0,0,0 ; up arrow key 150 E265 00 00 00 00 defb 0,0,0,0 ; down arrow key 151 E269 00 00 00 00 defb 0,0,0,0 ; left arrow key 152 E26D 00 00 00 00 defb 0,0,0,0 ; right arrow key 153 E271 00 00 00 00 defb 0,0,0,0 ; 0 key on numeric pad 154 E275 00 00 00 00 defb 0,0,0,0 ; 1 key on numeric pad 155 E279 00 00 00 00 defb 0,0,0,0 ; 2 key on numeric pad 156 E27D 00 00 00 00 defb 0,0,0,0 ; 3 key on numeric pad 157 E281 00 00 00 00 defb 0,0,0,0 ; 4 key on numeric pad 158 E285 00 00 00 00 defb 0,0,0,0 ; 5 key on numeric pad 159 E289 00 00 00 00 defb 0,0,0,0 ; 6 key on numeric pad 160 E28D 00 00 00 00 defb 0,0,0,0 ; 7 key on numeric pad 161 E291 00 00 00 00 defb 0,0,0,0 ; 8 key on numeric pad 162 E295 00 00 00 00 defb 0,0,0,0 ; 9 key on numeric pad 163 E299 00 00 00 00 defb 0,0,0,0 ; - key on numeric pad 164 E29D 00 00 00 00 defb 0,0,0,0 ; , key on numeric pad 165 E2A1 00 00 00 00 defb 0,0,0,0 ; " " 166 E2A5 00 00 00 00 defb 0,0,0,0 ; . key on numeric pad 167 168 ; Cold boot entry point, set up system pointers and pass control to the CCP 169 170 E2A9 boot: 171 E2A9 CD E4B9 call diskint 172 E2AC 01 10FF ld bc,0f6ffh-0e600h ; zero out the ZCPR buffer space 173 E2AF 21 E600 ld hl,rcp 174 E2B2 11 E601 ld de,rcp+1 175 E2B5 AF xor a 176 E2B6 77 ld (hl),a 177 E2B7 ED B0 ldir 178 179 E2B9 AF xor a ; clear system disk number 180 E2BA 32 0004 ld (4),a 181 E2BD 2F CPL 182 E2BE 32 003E ld (z3whl),A 183 184 E2C1 21 E520 LD HL,PATH 185 E2C4 11 0040 LD DE,expath 186 E2C7 01 0009 LD BC,9 187 E2CA ED B0 LDIR 188 E2CC 21 E52B LD HL,CMD 189 E2CF 11 F600 LD DE,z3cl 190 E2D2 01 000C LD BC,0CH 191 E2D5 ED B0 LDIR 192 193 E2D7 21 F600 ld hl,z3cl ; this allows any ALIAS utility to make 194 ; ..a version of STARTUP that works 195 E2DA 22 F318 ld (z3env+24),hl 196 197 E2DD 3A E233 ld a,(ioconfig) ; init value for i/o byte 198 E2E0 32 0003 ld (iobyte),a 199 E2E3 21 E24A ld hl,sioint ; initialize i/o devices 200 E2E6 iolp: 201 E2E6 46 ld b,(hl) ; number of bytes to send 202 E2E7 23 inc hl 203 E2E8 4E ld c,(hl) ; port to send 204 E2E9 23 inc hl ; address of byte being sent 205 E2EA ED B3 otir 206 E2EC 7E ld a,(hl) ; get this byte 207 E2ED B7 or a ; clean test 208 E2EE 20 F6 jr nz,iolp ; if more tables then do 209 E2F0 3A E247 ld a,(baudrt) ; set baud rates 210 E2F3 D3 00 out (baudA),a 211 E2F5 3A E248 ld a,(baudrt+1) 212 E2F8 D3 08 out (baudB),a 213 214 E2FA CD E514 call print 215 E2FD 1A 0D 0A defb 1AH, 0DH, 0AH 216 E300 4B 61 79 70 defb 'Kaypro 10 ' 217 E30A 35 38 defb msize/10+'0', msize mod 10+'0' 218 E30C 4B 20 5A 38 defb 'K Z80DOS Version ' 219 E31D 31 2E 30 defb vers/10+'0', '.', vers mod 10+'0' 220 E320 20 26 20 5A defb ' & ZCPR Version ' 221 E330 33 2E 33 defb zvers/10+'0', '.', zvers mod 10+'0' 222 E333 0D 0A defb 0dh,0ah 223 E335 20 62 79 20 defb ' by Kaypro Campus User Group, Seattle',0DH, 0AH, 00H 224 225 E35D 21 8000 goccp: ld hl,time ; reset disk time out 226 E360 22 E53A ld (count),hl 227 228 E363 3E C3 ld a,0C3H ; set up CP/M jumps to bdos and wboot 229 230 E365 21 E203 ld hl,bios+3 ; wboot entry point 231 E368 32 0000 ld (0),a 232 E36B 22 0001 ld (1),hl 233 234 E36E 21 D406 ld hl,bdos ; entry point to bdos 235 E371 32 0005 ld (5),a 236 E374 22 0006 ld (6),hl 237 238 E377 3A 0004 ld a,(4) ; last logical disk unit used 239 E37A 4F ld c,a 240 E37B E6 0F and 0FH ; valid disk? 241 E37D FE 03 cp 3 242 E37F DA CC00 jp c,ccp 243 E382 79 ld a,c ; no, so go to drive 0 244 E383 E6 F0 and 0F0H 245 E385 4F ld c,a ; pass to ccp to select 246 E386 C3 CC00 jp ccp ; pass control to ccp 247 248 ; Warm boot entry point, re-load the CCP and BDOS 249 E389 wboot: 250 E389 0E 00 ld c,0 ; select drive A: 251 E38B CD E4C1 call seldsk 252 E38E CD E4BD call home 253 E391 CD E4B9 call diskint 254 E394 CD E514 call print 255 E397 0D 0A 57 61 defb 0DH, 0AH, 'Warm Boot', 0DH, 0AH, 00H 256 E3A5 wb0: 257 E3A5 31 0100 ld sp,100H ; re-set stack 258 E3A8 01 0000 ld bc,0 ; set track 259 E3AB CD E4C5 call settrk 260 E3AE 01 CC00 ld bc,ccp ; first memory location to load 261 E3B1 ED 43 E53E ld (dmaadr),bc 262 E3B5 CD E4CD call setdma 263 E3B8 01 2C01 ld bc,nsects*256+1 264 E3BB wb1: 265 E3BB C5 push bc ; save sector count and current sector 266 E3BC CD E4C9 call setsec ; select sector 267 E3BF CD E4D1 call read 268 E3C2 C1 pop bc 269 E3C3 B7 or a 270 E3C4 20 DF jr nz,wb0 ; oops, error on warm boot 271 E3C6 C5 push bc 272 E3C7 2A E53E ld hl,(dmaadr) ; update dma address for next sector 273 E3CA 11 0080 ld de,128 ; new dma address 274 E3CD 19 add hl,de 275 E3CE 44 ld b,h 276 E3CF 4D ld c,l 277 E3D0 22 E53E ld (dmaadr),hl 278 E3D3 CD E4CD call setdma 279 E3D6 C1 pop bc 280 E3D7 05 dec b 281 E3D8 CA E35D jp z,goccp ; done loading 282 E3DB 0C inc c ; bump sector count 283 0000 if not hdisk 292 endif 293 E3DC 18 DD jr wb1 294 297 ; 298 ;con: tty, crt 299 ;rdr: tty 300 ;pun: tty, pun 301 ;lst: tty, crt, lpt, ul1 302 303 E3DE const: 304 E3DE 2A E53A ld hl,(count) ; time out motors? 305 E3E1 2B dec hl 306 E3E2 22 E53A ld (count),hl 307 E3E5 7C ld a,h 308 E3E6 B5 or l 309 E3E7 CC E45A call z,diskoff 310 E3EA 3A E539 ld a,(cnt) ;load function counter 311 E3ED B7 or a ;clean test 312 E3EE 20 0F jr nz,loadup ;set to do function if not 0 313 E3F0 3A 0003 ld a,(iobyte) ; get i/o byte 314 E3F3 E6 03 and 03H ; strip to con bits 315 E3F5 2E 33 ld l,rom+33H ; serial status 316 E3F7 CA E4F1 jp z,callrom 317 E3FA 2E 2A ld l,rom+2AH ; assume CRT 318 E3FC C3 E4F1 jp callrom 319 320 E3FF loadup: 321 E3FF 3E FF ld a,0ffh ;set for get character 322 E401 B7 or a ;clean test 323 E402 C9 ret 324 325 E403 conin: 326 E403 CD E3DE call const ; key press? 327 E406 B7 or a 328 E407 28 FA jr z,conin 329 E409 3A E539 ld a,(cnt) ;get counter value 330 E40C B7 or a ;clean test 331 E40D 20 2F jr nz,frjp ;do function if not 0 332 E40F 3A 0003 ld a,(iobyte) ; go get character 333 E412 E6 03 and 03H ; check i/o byte 334 E414 2E 36 ld l,rom+36H ; serial input 335 E416 CA E4F1 jp z,callrom 336 E419 2E 2D ld l,rom+2DH ; assume input from kbd 337 E41B CD E4F1 call callrom ; go get char 338 E41E B7 or a 339 E41F F0 ret p ; msb not set 340 E420 E6 1F and 01FH ; form table index to vtab 341 E422 21 E235 ld hl,vtab 342 E425 4F ld c,a 343 E426 06 00 ld b,0 344 E428 09 add hl,bc 345 E429 7E ld a,(hl) ; pick up xlated character 346 E42A B7 or a ; clean test 347 E42B C0 ret nz ; if valid character value return 348 349 E42C sectab: 350 E42C 21 E261 ld hl,sndtab ;set to new table value 351 E42F 79 ld a,c ;get character position 352 E430 CB 27 sla a ;shift left to 353 E432 CB 27 sla a ;mult by 2, again 354 E434 4F ld c,a ;get new character position 355 E435 09 add hl,bc ;set hl to character position 356 E436 22 E537 ld (pntr),hl ;store position in pointer 357 E439 3E 04 ld a,4 ;set to this value 358 E43B 32 E539 ld (cnt),a ;initialize counter to 4 359 ;continue process of function 360 E43E frjp: 361 E43E 2A E537 ld hl,(pntr) ;get pointer value 362 E441 4E ld c,(hl) ;load character into c reg 363 E442 23 inc hl ;increment pointer 364 E443 22 E537 ld (pntr),hl ;save this value off 365 E446 3A E539 ld a,(cnt) ;retrieve current counter value 366 E449 3D dec a ;decrement this value 367 E44A 32 E539 ld (cnt),a ;save this value off 368 E44D 79 ld a,c ;move character into a 369 E44E C8 ret z ;return if zero 370 E44F 7E ld a,(hl) ;get next byte value 371 E450 FE 00 cp fox ;compare to 0 372 E452 79 ld a,c ;move value in c to a 373 E453 C0 ret nz ;return if not zero 374 E454 AF xor a ;clear accumulator 375 E455 32 E539 ld (cnt),a ;clear counter value 376 E458 79 ld a,c ;move value in c to a 377 E459 C9 ret 378 E45A diskoff: 379 E45A 2E 27 ld l,rom+27H 380 E45C C3 E4F1 jp callrom 381 E45F conout: 382 E45F 3A 0003 ld a,(iobyte) ; check i/o byte 383 E462 E6 03 and 03H 384 E464 2E 39 ld l,rom+39H ; serial output 385 E466 CA E4F1 jp z,callrom 386 E469 2E 45 ld l,rom+45H ; assume video 387 E46B C3 E4F1 jp callrom 388 E46E reader: 389 E46E 2E 36 ld l, rom+36H ; serial input 390 E470 C3 E4F1 jp callrom 391 E473 punch: 392 E473 2E 39 ld l,rom+39h ;serial punch 393 E475 C3 E4F1 jp callrom 394 E478 list: 395 E478 3A 0003 ld a,(iobyte) 396 E47B E6 C0 and 0C0H ; check i/o byte 397 E47D 2E 39 ld l,rom+39H ; serial 398 E47F CA E4F1 jp z,callrom 399 E482 FE 80 cp 80H ; centronics 400 E484 CA E4A6 jp z,lstdev ; time delay routine for output 401 E487 2E 45 ld l,rom+45H ; video 402 E489 FE 40 cp 40H 403 E48B CA E4F1 jp z,callrom 404 ; ld l, rom+42H ; assume serial with cts as busy 405 E48E 2E 39 ld l, rom+39h ;ul1: default to serial 406 E490 C3 E4F1 jp callrom 407 E493 listst: 408 E493 3A 0003 ld a,(iobyte) ; check i/o byte 409 E496 E6 C0 and 0C0H 410 E498 2E 42 ld l,rom+42H ; serial 411 E49A CA E4F1 jp z,callrom 412 E49D 2E 3C ld l,rom+3CH ; centronics 413 E49F FE 80 cp 80H 414 E4A1 CA E4F1 jp z,callrom 415 E4A4 AF xor a ; 0=ready 416 E4A5 C9 ret 417 E4A6 lstdev: 418 E4A6 CD E493 call listst ; is printer busy 419 E4A9 20 FB jr nz,lstdev ; if not return 420 E4AB 79 ld a,c ; move character into a 421 E4AC D3 18 out (pfdat),a ; output character to printer 422 E4AE DB 14 in a,(bitport) ; strb. printer 423 E4B0 CB 9F res pstrob,a 424 E4B2 D3 14 out (bitport),a 425 E4B4 CB DF set pstrob,a 426 E4B6 D3 14 out (bitport),a 427 E4B8 C9 ret 428 431 E4B9 diskint: 432 E4B9 2E 03 ld l,rom+03H ; re-set disk software sub-system 433 E4BB 18 34 jr callrom 434 E4BD home: 435 E4BD 2E 0C ld l,rom+0CH ; home disk drive rom routine 436 E4BF 18 30 jr callrom 437 E4C1 seldsk: 438 E4C1 2E 0F ld l,rom+0FH ; select disk drive 439 E4C3 18 2C jr callrom 440 E4C5 settrk: 441 E4C5 2E 12 ld l,rom+12H ; seek track 442 E4C7 18 28 jr callrom 443 E4C9 setsec: 444 E4C9 2E 15 ld l,rom+15H ; set sector number 445 E4CB 18 24 jr callrom 446 E4CD setdma: 447 E4CD 2E 18 ld l,rom+18H ; set dma address 448 E4CF 18 20 jr callrom 449 E4D1 read: 450 E4D1 21 8000 ld hl,time ; reset time out 451 E4D4 22 E53A ld (count),hl 452 E4D7 2E 1B ld l,rom+1BH ; read a logical sector 453 E4D9 18 16 jr callrom 454 E4DB write: 455 E4DB 21 8000 ld hl,time ; reset time out 456 E4DE 22 E53A ld (count),hl 457 E4E1 2E 1E ld l,rom+1EH ; write a logical sector 458 E4E3 3A E234 ld a,(wrtsafe) ; write safe flag 459 E4E6 B7 or a ; true or false 460 E4E7 28 08 jr z,callrom ; normal operation 461 E4E9 0E 01 ld c,1 ; directory write code (forces write op) 462 E4EB 18 04 jr callrom 463 E4ED sectran: 464 E4ED 2E 21 ld l,rom+21H ; xlate logical to physical sector 465 E4EF 18 00 jr callrom 466 E4F1 callrom: 467 E4F1 D9 exx ; save cp/m arguments 468 E4F2 DB 14 in a,(bitport) ; turn rom on 469 E4F4 CB FF set 7,a 470 E4F6 D3 14 out (bitport),a 471 E4F8 ED 73 E53C ld (savsp),sp ; save current stack (may be under rom) 472 E4FC 31 E583 ld sp,stack ; set a local stack 473 E4FF 11 E507 ld de,biosret ; rom to "RET" here 474 E502 D5 push de 475 E503 D9 exx ; restore cp/m arguments and call loc 476 E504 26 00 ld h,0 477 E506 E9 jp (hl) ; to rom routine specified in hl 478 E507 biosret: 479 E507 08 ex af,af' ; save reg A 480 E508 ED 7B E53C ld sp,(savsp) ; restore stack 481 E50C DB 14 in a,(bitport) ; off the rom 482 E50E CB BF res 7,a 483 E510 D3 14 out (bitport),a 484 E512 08 ex af,af' ; restore reg A 485 E513 C9 ret ; done with rom routine 486 E514 print: 487 E514 E3 ex (sp),hl ; pop return address, points to text to print 488 E515 7E ld a,(hl) ; get a byte of text, stop on zero byte 489 E516 23 inc hl 490 E517 E3 ex (sp),hl ; save new return address 491 E518 B7 or a ; is it a zero byte? 492 E519 C8 ret z 493 E51A 4F ld c,a ; no, so print it 494 E51B CD E45F call conout 495 E51E 18 F4 jr print 496 497 E520 01 0F 01 00 path: defb 1,15,1,0,'$','$',1,15,0,0,0 498 499 ; the path just defined means that the sequence in which files will be sought 500 ; ..is A15:, A0:, , A15: [the 'root']; should you prefer 501 ; ..that the current directory not be searched at all, change '$','$' to 1,15. 502 503 E52B F604 cmd: defw z3cl+4 504 E52D C8 defb z3cls 505 E52E 00 53 54 41 defb 0,'STARTUP',0 506 507 E537 0000 pntr: defw 0 ; pointer for function key routine 508 E539 00 cnt: defb 0 ; character counter for function routine 509 E53A 0002 count: defs 2 ; disk time out counter 510 E53C 0002 savsp: defs 2 ; current spact pointer during rom call 511 E53E 0002 dmaadr: defs 2 ; dma address for warm boot 512 E540 45 4E 44 db 'END' ; end of BIOS marker 513 E583 stack equ $+64 ; a local stack 514 515 .dephase 516 517 end 0 Error(s) Detected. 835 Absolute Bytes. 112 Symbols Detected. Z80ASM SuperFast Relocating Macro Assembler Z80ASM 1.31 Page 11 Symbol Table: 0020 AUTOE 0000 BASE 0005 BAUD30 0000 BAUDA 0008 BAUDB E247 BAUDRT D406 BDOS 9800 BIAS E200 BIOS E507 BIOSRET 0014 BITPORT E2A9 BOOT E600 BUFFERBASE E4F1 CALLROM 0032 CBREV CC00 CCP E52B CMD E539 CNT E403 CONIN E45F CONOUT E3DE CONST E53A COUNT 1600 CPML 0040 CR16 E4B9 DISKINT E45A DISKOFF E53E DMAADR 0080 DTR 0040 EXPATH 0005 EXPATHS F4D0 EXTFCB F6D0 EXTSTK 0000 FALSE F100 FCP 0004 FCPS 0000 FOX E43E FRJP E35D GOCCP FFFF HDISK E4BD HOME 0000 I8080 0003 IOBYTE E233 IOCONFIG E2E6 IOLP 0000 IOP 0000 IOPS E478 LIST E493 LISTST E3FF LOADUP E4A6 LSTDEV 003A MSIZE 002C NSECTS E520 PATH 0018 PFDAT E537 PNTR E514 PRINT 0003 PSTROB E473 PUNCH 00C0 RBITS8 E600 RCP 0010 RCPS 0001 RE E4D1 READ E46E READER 0018 RESET 0000 RID 0000 ROM E53C SAVSP 0004 SBITS1 E42C SECTAB E4ED SECTRAN E4C1 SELDSK E4CD SETDMA E4C9 SETSEC E4C5 SETTRK 0020 SHSIZE F400 SHSTK 0004 SHSTKS E24A SIOINT 0007 SIOKB0 0006 SIOM0 000E SIOSP0 E260 SIOTBND E261 SNDTAB E583 STACK 0060 TBITS8 0008 TE 0000 TID 8000 TIME 0044 TRKSEC FFFF TRUE 000A VERS E235 VTAB E3A5 WB0 E3BB WB1 E389 WBOOT 0001 WR1 0003 WR3 0004 WR4 0005 WR5 E4DB WRITE E234 WRTSAFE F600 Z3CL 00C8 Z3CLS F300 Z3ENV 0002 Z3ENVS F480 Z3MSG F500 Z3NDIR 000E Z3NDIRS 0021 Z3REV 003E Z3WHL 0021 ZVERS