CP/M RMAC ASSEM 1.1 #001 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1 TITLE '<< MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>>' 2 ; ***************************************** 3 ; * THE GSR MONITOR, VERSION III.8 * 4 ; * UFDC-1 FLOPPY DISK CONTROLLER * 5 ; * PROVIDES MULTIPLE FORMAT CAPABILITY * 6 ; * IBM COMPATIBLE FORMATS * 7 ; * 8" OR 5 1/4" DISK * 8 ; * SINGLE OR DOUBLE DENSITY * 9 ; * SINGLE OR DOUBLE SIDE * 10 ; * 128, 256, 512, OR 1024 BYTE SECTORS * 11 ; * 1K, 2K, OR 4K ALLOCATION BLOCK SIZE * 12 ; * VARIABLE SECTOR SKEW * 13 ; * REQUIRES 2.2 CPM * 14 ; * CONFIGURED FOR 60K OF RAM * 15 ; * 2.2 CPM BIOS CONTAINED IN ROM AND * 16 ; * DISK PARAMETERS ARE OBTAINED FROM * 17 ; * TABLES ON DISK * 18 ; * PRINT DRIVER FOR CENTRONIX PARALLEL * 19 ; * INTERFACE AND CONSOLE DRIVER FOR * 20 ; * 9600 BAUD TERMINAL ARE IN BIOS * 21 ; ***************************************** 22 ; 23 ; 24 ; ADDED BIOS VECTORS AND EXTRA DRIVERS 25 ; TO PROVIDE COMPATIBILITY WITH MP/M II.0. 26 ; MOVED ALL JUMP VECTORS TO THE START 27 ; OF THE MONITOR FOR EASY ACCES TO MONITOR 28 ; ROUTINES FROM USER PROGRAMS. 29 ; THE ADDED BIOS DRIVERS 30 ; PROVIDE MEMORY MANAGEMENT FOR A FULLY 31 ; LOADED CT256K RAM BOARD RUNNING 32 ; UNDER MP/M. FIVE 48K MEMORY BANKS 33 ; ARE AVAILABLE ALONG WITH 16K OF 34 ; COMMON MEMORY WHEN RUNNING MP/M. 35 ; THE MONITOR WILL NOW TRY TO AUTO-BOOT 36 ; AT RESET AND POWER-ON. IF A DISK IS 37 ; NOT PRESENT IN DRIVE A WITH A READABLE 38 ; 2.2 CPM IMAGE, THE SYSTEM WILL BRANCH 39 ; TO THE MONITOR. 40 ; ALL DIAGNOSTICS ARE REMOVED FROM THE 41 ; STANDARD MONITOR. 42 ; A SEPERATE VERSION OF THE MONITOR WILL 43 ; CONTAIN DIGNOSTIC ROUTINES. 44 ; A ROUTINE HAS BEEN ADDED THAT WILL ALLOW 45 ; THE MONITOR TO RUN FROM A PHANTOMED 46 ; EPROM. THIS ADDITION IS COMPATIBLE WITH 47 ; SYSTEMS THAT DO NOT HAVE A PHANTOM OPTION 48 ; AVAILABLE. THE ADDITIONAL ROUTINE WILL 49 ; TRANSFER A COPY OF THE MONITOR CODE 50 ; TO MEMORY PRIOR TO JUMPING TO THE CODE 51 ; AND INVOKING THE PHANTOM OPTION. 52 ; THE PHANTOM EPROM OPTION ON THE 53 ; COMPUTIME/GSR Z80 CPU BOARD IS ENABLED 54 ; BY CUTTING THE TRACE BETWEEN JUMPER 55 ; PADS Q AND R. 56 ; ADDED A DEFAULT DISK PARAMETER TABLE CP/M RMAC ASSEM 1.1 #002 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 57 ; THAT IS INVOKED AT COLD START TIME IF 58 ; THE DISK IN DRIVE A DOES NOT CONTAIN 59 ; A VALID PARAMETER TABLE ON SECTOR 1 60 ; OF TRACK 0. THE DEFAULT TABLE IS FOR 61 ; AN 8" SINGLE DENSITY, SINGLE SIDE DISK. 62 ; A USER DISK PARAMETER TABLE HAS BEEN 63 ; ADDED TO ALLOW READING DISKS THAT DO 64 ; NOT HAVE PARAMETER TABLES ON SECTOR 1 65 ; OF TRACK 0. A USER FLAG MUST BE ACTIVATED 66 ; BY STORING 0FFH AT ADRESS 0F480H AND 67 ; THEN THE USER TABLE (AT ADDRESS 0F080H) 68 ; MUST BE LOADED. A BDOS 69 ; CALL (CALL TO ADDRESS 0005H) WITH THE 70 ; C REGISTER = 0EH AND THE E REGISTER 71 ; = THE SELECTED DISK (0 = DRIVE A, 1 = 72 ; DRIVE B, 2 = DRIVE C, AND 3 = DRIVE D) 73 ; WILL CAUSE THE SELECTED 74 ; DISK TO BE LOGGED ON, AND THE USER TABLE 75 ; WILL BE TRANSFERRED TO THAT DRIVES 76 ; DISK PARAMETER BLOCK. 77 ; THE SAME USER TABLE MAY BE TRANSFERRED TO 78 ; MULTIPLE DRIVE TABLES BY SETTING THE USER 79 ; FLAG (AT ADDRESS 0F480H) TO 0FFH AND 80 ; REPEATING THE BDOS CALL. NOTE THAT THE 81 ; BDOS CALL WILL RESET THE USER FLAG EACH 82 ; TIME BUT WILL NOT DISTURB THE CONTENTS 83 ; OF THE USER TABLES. 84 ; 85 MACLIB Z80 86 ; 87 ; MEMORY USED BY MONITOR 88 ; 89 F800 = BASE EQU 0F800H ;MONITOR BASE ADDRESS. 90 F7FF = STACK EQU BASE-1 ;MONITOR STACK 91 ; 92 ; CONSTANTS FOR MONITOR 93 ; 94 000D = CR EQU 0DH ;ASCII CARRIAGE RET 95 000A = LF EQU 0AH ;ASCII LINE FEED 96 ; 97 ; I/O PORTS ON CPU BOARD 98 ; 99 0001 = INOUT EQU 01H 100 0003 = CONDTA EQU 03H 101 0002 = CONCTL EQU 02H 102 0002 = CONSTS EQU 02H 103 ; 104 ; 105 ; DISK DEFINES 106 ; 107 0016 = VERS EQU 22 ;CP/M VERSION NUMBER 108 003C = MSIZE EQU 60 ;CP/M MEMORY SIZE 109 A000 = BIAS EQU (MSIZE-20)*1024 110 D400 = CCP EQU 3400H+BIAS ;BASE OF CCP 111 DC06 = BDOS EQU CCP+806H ;BASE OF BDOS 112 EA00 = BIOS EQU CCP+1600H ;BASE OF BIOS CP/M RMAC ASSEM 1.1 #003 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 113 0000 = WRALL EQU 0 ;WRT TO ALOC BLK 114 0001 = WRDIR EQU 1 ;WRT TO DIRECTORY 115 0002 = WRUAL EQU 2 ;WRT TO UNALOC BLK 116 EA03 = WBOOTE EQU BIOS+3 ;WARM BOOT ENTRY 117 ; 118 ; 119 ;DISK I/O PORTS 120 ; 121 009C = DSTAT EQU 9CH ;DISK STATUS PORT 122 009C = DCMMD EQU DSTAT ;DISK COMMAND PORT 123 009D = DTRCK EQU DSTAT+1 ;DISK TRACK PORT 124 009E = DSCTR EQU DSTAT+2 ;DISK SECTOR PORT 125 009F = DDATA EQU DSTAT+3 ;DISK DATA PORT 126 009B = DFLAG EQU 9BH ;STATUS REGISTER 1 127 009B = DCNTL EQU DFLAG ;CONTROL REGISTER 1 128 ; 129 ; 130 ;MEMORY USED BY CPM 131 ; 132 0004 = CURDSK EQU 4 ;CURRENT DISK DRIVE 133 0080 = TBUF EQU 80H ;DEFAULT CPM BUFFER 134 ; 135 ; 136 ; PROGRAM CODE BEGINS: 137 ; 138 F800 ORG BASE 139 ; 140 ; 141 ;MONITOR BIOS JUMP VECTORS 142 ; 143 ; 144 F800 C31BF9 BIOSCD: JMP BOOT ;COLD BOOT 145 F803 C33BF9 JMP WBOOT ;WARM BOOT 146 F806 C3CDF8 JMP CSTS ;CONSOLE STATUS 147 F809 C3E9F8 JMP CI ;CONSOLE INPUT 148 F80C C3B6F8 JMP CO ;CONSOLE OUTPUT 149 F80F C3F4F8 JMP PRINT ;LIST DEVICE 150 F812 C3B6F8 JMP CO ;PUNCH DEVICE 151 F815 C3E9F8 JMP CI ;READER DEVICE 152 F818 C3A6FB JMP HOME ;MOVE HEAD TO TRK 0 153 F81B C380FA JMP SELDSK ;SELECT DISK 154 F81E C36FFB JMP SETTRK ;SET TRACK NUMBER 155 F821 C374FB JMP SETSEC ;SET SECTOR NUMBER 156 F824 C3A1FB JMP SETDMA ;SET DMA ADDRESS 157 F827 C3AFFB JMP HREAD ;READ DISK 158 F82A C3BBFB JMP HWRITE ;WRITE DISK 159 F82D C308F9 JMP PSTS ;LIST STATUS 160 F830 C379FB JMP SECTRN ;SECTOR TRANSLATE 161 ; 162 ; THE FOLLOWING VECTORS ARE USED BY MP/M 163 ; 164 F833 C34BF8 JMP SELMEM ;MEMORY BANK SELECT 165 F836 C34CF8 JMP POLDEV ;DEVICE POLLING ROUTINE 166 F839 C36BF8 JMP STRTCK ;START SYSTEM CLOCK 167 F83C C36BF8 JMP STOPCK ;STOP SYSTEM CLOCK 168 F83F C36BF8 JMP EXITRG ;EXIT REGION ROUTINE CP/M RMAC ASSEM 1.1 #004 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 169 F842 C369F8 JMP MAXCON ;MAX CONSOLE ROUTINE 170 F845 C36BF8 JMP SYSINT ;SYSTEM INITIALIZE 171 F848 000000 DB 0,0,0 ;USE MP/M IDLE PROC 172 004B = BCDL EQU $-BIOSCD 173 ; 174 ; MP/M BIOS ROUTINES 175 ; 176 F84B C9 SELMEM: RET 177 ; 178 F84C 79 POLDEV: MOV A,C 179 F84D FE02 CPI 2 ;BAD DEVICE #? 180 JRC DEVOK ;GOOD DEVICE # 181 F84F+3802 DB 38H,DEVOK-$-1 182 F851 3E02 MVI A,2 ;BAD DEVICE # 183 F853 CD5EF8 DEVOK: CALL TBLJMP ;JUMP TO POLL ROUTINE 184 F856 08F9 DEVTBL: DW PSTS ;POLL PRINTER 185 F858 CDF8 DW CSTS ;POLL CONSOLE 186 F85A 5CF8 DW RTNEMP ;BAD DEVICE # 187 F85C AF RTNEMP: XRA A 188 F85D C9 RET 189 190 F85E 87 TBLJMP: ADD A ;DOUBLE TABLE INDEX 191 F85F E1 POP H ;RET ADR = TBL ADR 192 F860 5F MOV E,A ;ADD INDEX 193 F861 1600 MVI D,0 194 F863 19 DAD D 195 F864 5E MOV E,M ;GET ADR OF ROUTINE 196 F865 23 INX H 197 F866 56 MOV D,M 198 F867 EB XCHG 199 F868 E9 PCHL ;JUMP TO ROUTINE 200 ; 201 F869 3E01 MAXCON: MVI A,1 ;# OF CONSOLES IS 1 202 STRTCK: 203 STOPCK: 204 EXITRG: 205 SYSINT: 206 F86B C9 RET 207 ; 208 ; MONITOR SIGN-ON MESSAGE 209 ; 210 F86C 0D0A MSG: DB CR,LF 211 F86E 4753522043 DB 'GSR COMPUTER BOARD FOR RH PETERS' 212 0022 = MSGL EQU $-MSG 213 ; 214 ; MEMORY PARITY ERROR MESSAGE 215 ; 216 F88E 0D0A MSG1: DB CR,LF 217 F890 5041522045 DB 'PAR ERR' 218 0009 = MSG1L EQU $-MSG1 219 ; 220 F897 31FFF7 START: LXI SP,STACK ;RESTORE STACK 221 F89A CDC5F8 CALL CRLF 222 F89D CDE9F8 CALL CI ;WAIT FOR INPUT 223 F8A0 C33BF9 JMP WBOOT ;TRY BOOTING AGAIN 224 ; CP/M RMAC ASSEM 1.1 #005 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 225 ;MESSAGE OUTPUT ROUTINE. 226 ; 227 F8A3 216CF8 MESG: LXI H,MSG 228 F8A6 4E MESG1: MOV C,M ;GET A CHARACTER 229 F8A7 23 INX H ;MOVE POINTER 230 F8A8 CDB6F8 CALL CO ;OUTPUT IT 231 DJNZ MESG1 ;KEEP GOING TILL B=0 232 F8AB+10F9 DB 10H,MESG1-$-1 233 F8AD C9 RET 234 ; 235 ; 236 ;CRLF BEFORE HLBLK ROUTINE 237 ; 238 F8AE CDC5F8 CRLFHL: CALL CRLF 239 ; 240 ;PRINT THE CURRENT VALUE OF H&L, 241 ;AND A SPACE. 242 ; 243 F8B1 CDD6F8 HLBLK: CALL DISPHL 244 ; 245 ;PRINT A SPACE ON THE CONSOLE 246 ; 247 F8B4 0E20 SPACE: MVI C,' ' 248 ; 249 ;THIS IS THE MAIN CONSOLE 250 ;OUTPUT ROUTINE. 251 ; 252 F8B6 79 CO: MOV A,C 253 F8B7 CD03F8 CALL 0F803H 254 F8BA C9 RET 255 ; 256 ; CONVERT HEX TO ASCII 257 ; 258 F8BB E60F HTA: ANI 0FH ;LOW NIBBLE ONLY 259 F8BD C690 ADI 90H 260 F8BF 27 DAA 261 F8C0 CE40 ACI 40H 262 F8C2 27 DAA 263 F8C3 4F MOV C,A 264 F8C4 C9 RET 265 ; 266 ; 267 ; CONSOLE CARRIAGE RETURN & 268 ; LINE FEED ROUTINE. 269 ; 270 F8C5 E5 CRLF: PUSH H ;SAVE HL 271 F8C6 0602 MVI B,2 ;CRLF LENGTH 272 F8C8 CDA3F8 CALL MESG ;SEND CRLF 273 F8CB E1 POP H 274 F8CC C9 RET 275 ; 276 ;CONSOLE STATUS TEST ROUTINE. 277 ; 278 F8CD DB02 CSTS: IN CONCTL 279 F8CF E602 ANI 02H 280 F8D1 3EFF MVI A,0FFH CP/M RMAC ASSEM 1.1 #006 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 281 F8D3 C0 RNZ 282 F8D4 2F CMA 283 F8D5 C9 RET 284 ; 285 ; 286 ;PRINT H&L ON CONSOLE 287 ; 288 F8D6 7C DISPHL: MOV A,H 289 F8D7 CDDBF8 CALL DISPB 290 F8DA 7D MOV A,L 291 F8DB F5 DISPB: PUSH PSW 292 F8DC 0F RRC 293 F8DD 0F RRC 294 F8DE 0F RRC 295 F8DF 0F RRC 296 F8E0 CDE4F8 CALL HTA2 297 F8E3 F1 POP PSW 298 F8E4 CDBBF8 HTA2: CALL HTA 299 JR CO 300 F8E7+18CD DB 18H,CO-$-1 301 ; 302 ;MAIN CONSOLE INPUT ROUTINE 303 ; 304 F8E9 CDCDF8 CI: CALL CSTS ;TEST FOR INPUT 305 F8EC B7 ORA A 306 JRZ CI 307 F8ED+28FA DB 28H,CI-$-1 308 F8EF DB03 IN CONDTA 309 F8F1 E67F ANI 7FH 310 F8F3 C9 RET 311 ; 312 ; 313 ;PRINTER OUTPUT ROUTINE 314 ; 315 F8F4 DB01 PRINT: IN INOUT 316 F8F6 E601 ANI 1 317 JRNZ PRINT 318 F8F8+20FA DB 20H,PRINT-$-1 319 F8FA 79 MOV A,C 320 F8FB F680 ORI 80H 321 F8FD D301 OUT INOUT 322 F8FF E67F ANI 7FH 323 F901 D301 OUT INOUT 324 F903 F680 ORI 80H 325 F905 D301 OUT INOUT 326 F907 C9 RET 327 ; 328 ; PRINTER STATUS ROUTINE 329 ; 330 F908 DB01 PSTS: IN INOUT 331 F90A E601 ANI 1 332 F90C 3EFF MVI A,0FFH 333 F90E C8 RZ 334 F90F 2F CMA 335 F910 C9 RET 336 ; CP/M RMAC ASSEM 1.1 #007 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 337 ; 338 ;GET READY TO MOVE BIOS VECTORS 339 ; 340 F911 2100F1 BIOSMV: LXI H,DIRBF 341 F914 1100EA BIOSM1: LXI D,BIOS 342 F917 014B00 BIOSM2: LXI B,BCDL 343 F91A C9 RET 344 ; 345 ; 346 ;BOOT CPM AND RUN 347 ; 348 F91B 31FFF7 BOOT: LXI SP,STACK ;SET UP STACK 349 F91E 3E80 MVI A,80H ;SET UP PRINTER 350 F920 D301 OUT INOUT 351 F922 AF XRA A 352 F923 3287F4 STA SECTOR 353 F926 328DF4 STA PARFLG 354 F929 3E37 MVI A,37H ;ENABLE XMT & REC 355 F92B 32A2F4 STA RFLAG 356 F92E 0622 HELLO: MVI B,MSGL ;SAY HELLO 357 F930 CDA3F8 CALL MESG 358 F933 2100F8 BBOOT: LXI H,BIOSCD ;SET UP BIOS VECTORS 359 F936 CD14F9 CALL BIOSM1 360 LDIR 361 F939+EDB0 DB 0EDH,0B0H 362 F93B 31FFF7 WBOOT: LXI SP,STACK ;RESTORE STACK 363 F93E 212BFA LXI H,TPLT ;MOVE DOWN JMP VECTORS 364 F941 110000 LXI D,0 365 F944 010800 LXI B,8 366 LDIR 367 F947+EDB0 DB 0EDH,0B0H 368 F949 2180EA LXI H,BEGDAT ;CLEAR SCRATCH RAM 369 F94C 1181EA LXI D,BEGDAT+1 370 F94F 01710A LXI B,DATSIZ 371 F952 3600 MVI M,0 372 LDIR 373 F954+EDB0 DB 0EDH,0B0H 374 F956 CD11F9 CALL BIOSMV ;SAVE BIOS VECTORS 375 F959 EB XCHG 376 LDIR 377 F95A+EDB0 DB 0EDH,0B0H 378 F95C 21EAFD LXI H,EPBASE ;SET UP CPM TABLES 379 F95F 11ABF4 LXI D,DPBASE 380 F962 014000 LXI B,EPLGTH 381 LDIR 382 F965+EDB0 DB 0EDH,0B0H 383 F967 2100D4 LXI H,CCP ;SET DMA ADR 384 F96A 228BF4 SHLD DMAAD 385 F96D 3E02 MVI A,2 ;SECTOR = 2 386 F96F 3287F4 STA SECTOR 387 F972 32A0F4 STA LUNIT 388 F975 AF XRA A 389 F976 CDA4FA CALL LOGDS2 ;LOG ON DRIVE A 390 F979 C297F8 JNZ START ;LOG ON ERROR 391 LIXD CTBLP ;GET TBL POINTER 392 F97C+DD2A DB 0DDH,2AH CP/M RMAC ASSEM 1.1 #008 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 393 F97E+A6F4 DW CTBLP 394 F980 3E31 MVI A,49 ;NO OF SECS 395 F982 32A3F4 STA BTSEC 396 F985 1601 MVI D,1 ;# OF 128 BYTE SECS 397 F987 3E19 MVI A,25 ;8" SECS ON TRK 0 398 F989 32AAF4 STA SECCNT 399 F98C DB9B IN DFLAG 400 F98E E604 ANI 4 ;8" OR 5 1/4" ? 401 JRZ WBOOT8 ;8" 402 F990+2805 DB 28H,WBOOT8-$-1 403 F992 3E11 MVI A,17 404 F994 32AAF4 STA SECCNT 405 F997 3AA3F4 WBOOT8: LDA BTSEC ;SUBTRACT SECTORS 406 F99A 92 SUB D 407 F99B 32A3F4 STA BTSEC 408 F99E 060A MVI B,10 409 F9A0 C5 BRWAGN: PUSH B 410 F9A1 CDBAFD CALL TST128 ;ADJUST SECTOR ADR 411 F9A4 D39E OUT DSCTR 412 F9A6 CDC3FD CALL SETUP 413 F9A9 D5 PUSH D ;SAVE FOR RETRY 414 F9AA 2A8BF4 LHLD DMAAD ;GET DMA ADR 415 F9AD 3A87F4 BOOTRD: LDA SECTOR ;TEST FOR SIDE 1 416 F9B0 E680 ANI 80H 417 F9B2 3E88 MVI A,88H ;READ COMMAND 418 JRZ BTRW3 ;SIDE 0 419 F9B4+2802 DB 28H,BTRW3-$-1 420 F9B6 3E8A MVI A,8AH ;SELECT SIDE 1 421 F9B8 3289F4 BTRW3: STA CMND 422 F9BB D39C OUT DCMMD 423 F9BD 019F80 BTRW1: LXI B,(128*256)+DDATA 424 INIR 425 F9C0+EDB2 DB 0EDH,0B2H 426 F9C2 15 DCR D ;LOOP CONTROL 427 JRNZ BTRW1 428 F9C3+20F8 DB 20H,BTRW1-$-1 429 F9C5 D1 POP D ;RESTORE LENGTH 430 F9C6 CD59FD CALL EOJ 431 F9C9 E69C ANI 9CH 432 F9CB C1 POP B 433 JRZ WBOOTA ;DONE, NO ERRORS 434 F9CC+2808 DB 28H,WBOOTA-$-1 435 DJNZ BRWAGN ;RETRY 436 F9CE+10D0 DB 10H,BRWAGN-$-1 437 F9D0 CD45FA DERROR: CALL DERR1 ;DISPLAY ERROR 438 F9D3 C397F8 JMP START 439 F9D6 228BF4 WBOOTA: SHLD DMAAD ;UPDATE DMAAD 440 F9D9 3A87F4 LDA SECTOR ;SECTOR + 1 441 F9DC 3C INR A 442 F9DD 3287F4 STA SECTOR 443 F9E0 3AA3F4 LDA BTSEC ;ALL SECS DONE? 444 F9E3 B7 ORA A 445 F9E4 CA19FA JZ GOCPM ;DONE 446 F9E7 3AAAF4 LDA SECCNT ;TEST FOR END OF TRK 447 F9EA 3D DCR A 448 F9EB 32AAF4 STA SECCNT CP/M RMAC ASSEM 1.1 #009 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 449 JRNZ WBOOT8 ;NOT END OF TRK 450 F9EE+20A7 DB 20H,WBOOT8-$-1 451 LDX L,15 ;BYTES PER SEC 452 F9F0+DD6E0F DB 0DDH,L*8+46H,15 453 LDX H,16 454 F9F3+DD6610 DB 0DDH,H*8+46H,16 455 F9F6 29 DAD H ;ADJUST VALUE 456 F9F7 54 MOV D,H ;# 128 BYTE SECS 457 BIT 1,(IX+18) ;TEST FOR DOUBLE SIDE 458 F9F8+CB5E DB 0CBH,1*8+(IX+18)+40H 459 JRZ WBOOTB ;SINGLE SIDE 460 F9FA+2806 DB 28H,WBOOTB-$-1 461 BIT 5,(IX+18) ;CYLINDER MODE? 462 F9FC+CB7E DB 0CBH,5*8+(IX+18)+40H 463 F9FE 3E81 MVI A,81H ;SIDE 1 SELECT 464 JRZ WBOOT9 ;CYLINDER MODE 465 FA00+280B DB 28H,WBOOT9-$-1 466 FA02 0658 WBOOTB: MVI B,58H ;STEP IN 1 TRACK 467 FA04 CD4BFD CALL EOJA 468 FA07 2186F4 LXI H,TRACK ;TRK + 1 469 FA0A 34 INR M 470 FA0B 3E01 MVI A,1 ;SECTOR = 1 471 FA0D 3287F4 WBOOT9: STA SECTOR 472 LDX A,19 ;SECS PER TRK 473 FA10+DD7E13 DB 0DDH,A*8+46H,19 474 FA13 32AAF4 STA SECCNT 475 FA16 C397F9 JMP WBOOT8 ;DO NEXT TRK 476 FA19 CD11F9 GOCPM: CALL BIOSMV ;RESTORE BIOS VECTORS 477 LDIR 478 FA1C+EDB0 DB 0EDH,0B0H 479 FA1E 218000 LXI H,TBUF ;DEFAULT CPM BUFFER 480 FA21 22A4F4 SHLD SEKDMA ;SET DMA ADDRESS 481 FA24 3A0400 LDA CURDSK ;LOG-ON DSK 482 FA27 4F MOV C,A ;SEND TO CPM 483 FA28 C300D4 JMP CCP ;GO TO CP/M 484 ; 485 ;JUMPS AT START OF MEMORY AND IOBYTE 486 ; 487 FA2B C303EA TPLT: JMP WBOOTE 488 FA2E BD IOBYT: DB 0BDH 489 FA2F 00 DB 0 490 FA30 C306DC JMP BDOS 491 ; 492 ; 493 DERRM: 494 FA33 44534B5452DB 'DSKTRKSCTSTSCMDDMA' 495 ; 496 ; 497 ;DISPLAYS ALL DISK PARAMETERS 498 ; 499 FA45 C5 DERR1: PUSH B ;SAVE REGISTERS 500 FA46 D5 PUSH D 501 FA47 E5 PUSH H 502 FA48 2133FA LXI H,DERRM ;POINT TO NAMES 503 FA4B 1185F4 LXI D,DISKNO ;POINT TO PARAMETERS 504 FA4E CDC5F8 CALL CRLF ;DISPLAY CRLF CP/M RMAC ASSEM 1.1 #010 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 505 FA51 0E05 MVI C,5 ;SET TALLY 506 FA53 0603 DERR2: MVI B,3 507 FA55 C5 PUSH B ;SAVE BC 508 FA56 CDA6F8 CALL MESG1 ;DISPLAY NAME 509 FA59 CDB4F8 CALL SPACE ;DISPLAY SPACE 510 FA5C E5 PUSH H ;SAVE HL 511 FA5D 1A LDAX D ;GET DATA 512 FA5E 13 INX D ;STEP TO NEXT 513 FA5F CDDBF8 CALL DISPB ;DISPLAY DATA 514 FA62 CDB4F8 CALL SPACE ;DISPLAY SPACE 515 FA65 E1 POP H ;GET HL 516 FA66 C1 POP B ;GET BC 517 FA67 0D DCR C ;TALLY - 1 518 JRNZ DERR2 ;CONTINUE 519 FA68+20E9 DB 20H,DERR2-$-1 520 FA6A 0603 MVI B,3 ;DISPLAY NAME 521 FA6C CDA6F8 CALL MESG1 522 FA6F CDB4F8 CALL SPACE ;DISPLAY SPACE 523 FA72 2A8BF4 LHLD DMAAD ;LAST PARAMETER 524 FA75 CDD6F8 CALL DISPHL ;DISPLAY IT 525 FA78 E1 POP H ;RESTORE REGISTERS 526 FA79 D1 POP D 527 FA7A C1 POP B 528 FA7B 3A88F4 LDA STATUS 529 FA7E B7 ORA A 530 FA7F C9 RET 531 ; 532 ; 533 ; 534 ;SELECT DISK GIVEN BY REGISTER C 535 ; 536 FA80 210000 SELDSK: LXI H,0 ;ERROR RETURN CODE 537 FA83 79 MOV A,C 538 FA84 3297F4 STA SEKDSK ;STORE DSK NO. 539 FA87 FE04 CPI 4 ;MUST BE 0,1,2,OR 3 540 FA89 D0 RNC ;INVALID DSK NO. 541 FA8A E5 PUSH IX ;LOG ON DISK 542 FA8B E5 PUSH H 543 FA8C CDA4FA CALL LOGDS2 544 FA8F E1 POP H 545 FA90 C0 RNZ ;ERROR RETURN 546 FA91 E1 POP IX 547 FA92 3A97F4 LDA SEKDSK ;GET DISK NO. 548 FA95 6F MOV L,A 549 FA96 60 MOV H,B 550 FA97 29 DAD H ;*2 551 FA98 29 DAD H ;*4 552 FA99 29 DAD H ;*8 553 FA9A 29 DAD H ;*16 554 FA9B EB XCHG 555 FA9C 21ABF4 LXI H,DPBASE 556 FA9F 19 DAD D ;HL=DPBASE+(DISKNO*16) 557 FAA0 C9 RET 558 ; 559 FAA1 3A85F4 LOGDSK: LDA DISKNO 560 FAA4 4F LOGDS2: MOV C,A ;SAVE DSK NO IN C CP/M RMAC ASSEM 1.1 #011 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 561 FAA5 3C INR A 562 LXIX DP0 ;BUILD TBL ADR IN X 563 FAA6+DD21 DB 0DDH,21H 564 FAA8+80EE DW DP0 565 FAAA 118000 LXI D,128 566 FAAD 3D DABLD1: DCR A 567 JRZ DABLD2 568 FAAE+2804 DB 28H,DABLD2-$-1 569 DADX D 570 FAB0+DD19 DB 0DDH,D*8+09H 571 JR DABLD1 572 FAB2+18F9 DB 18H,DABLD1-$-1 573 DABLD2: SIXD CTBLP 574 FAB4+DD22 DB 0DDH,22H 575 FAB6+A6F4 DW CTBLP 576 FAB8 3EC0 MVI A,0C0H 577 FABA B1 ORA C 578 FABB 328EF4 STA HSELCD ;STORE SELECT CODE 579 FABE 2181F4 LXI H,DSKSEL ;SEE IF NEW DISK 580 FAC1 0600 MVI B,0 581 FAC3 09 DAD B 582 FAC4 3A80F4 LDA SELFLG ;LOAD USER TABLE? 583 FAC7 FE00 CPI 0 584 JRZ DABLD3 ;USE DISK TABLES 585 FAC9+280B DB 28H,DABLD3-$-1 586 FACB AF XRA A ;RESET FLAG 587 FACC 3280F4 STA SELFLG 588 FACF 2F CMA ;MARK DISK AS USED 589 FAD0 77 MOV M,A 590 FAD1 2180F0 LXI H,UTABLE ;LOAD USER TABLE 591 JR VALID2 592 FAD4+1853 DB 18H,VALID2-$-1 593 FAD6 7E DABLD3: MOV A,M 594 FAD7 B7 ORA A 595 JRNZ DBPARM ;NOT NEW DISK 596 FAD8+2056 DB 20H,DBPARM-$-1 597 FADA 2F CMA 598 FADB 77 MOV M,A ;MARK AS USED 599 FADC 3A8EF4 LDA HSELCD ;GET SEL CODE 600 FADF D39B OUT DCNTL ;SEL DRIVE 601 FAE1 CD49FD CALL EOJB ;RESTORE DRIVE 602 FAE4 E680 ANI 80H ;TEST FOR NOT READY 603 FAE6 C245FA JNZ DERR1 ;NOT RDY ERROR 604 FAE9 060A MVI B,10 ;RETRY COUNT 605 FAEB C5 NTAGN: PUSH B 606 FAEC 3E01 MVI A,1 ;SELECT SEC 1 607 FAEE D39E OUT DSCTR 608 FAF0 57 MOV D,A ;SEC SIZE=128 609 FAF1 2AA6F4 LHLD CTBLP 610 FAF4 3A8EF4 LDA HSELCD ;GET SELECT CODE 611 FAF7 D39B OUT DCNTL 612 FAF9 3E8C MVI A,8CH ;READ OP 613 FAFB CD25FD CALL RDAT ;READ TABLES 614 FAFE C1 POP B ;RETRY COUNT 615 FAFF B7 ORA A ;TEST FOR ERRORS 616 JRZ VALID ;DONE, NO ERRORS CP/M RMAC ASSEM 1.1 #012 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 617 FB00+2805 DB 28H,VALID-$-1 618 DJNZ NTAGN ;RETRY 619 FB02+10E7 DB 10H,NTAGN-$-1 620 FB04 C345FA JMP DERR1 ;DISP PARAMETERS 621 VALID: LDX L,15 ;BYTES PER SECTOR 622 FB07+DD6E0F DB 0DDH,L*8+46H,15 623 LDX H,16 624 FB0A+DD6610 DB 0DDH,H*8+46H,16 625 FB0D E5 PUSH H ;COPY TO DE 626 FB0E D1 POP D 627 LDX B,19 ;PHYSICAL SEC/TRK 628 FB0F+DD4613 DB 0DDH,B*8+46H,19 629 FB12 05 DCR B 630 FB13 19 VALID1: DAD D ;BYTES/SEC X SEC/TRK 631 DJNZ VALID1 632 FB14+10FD DB 10H,VALID1-$-1 633 FB16 29 DAD H ;DIVIDE BY 128 634 BIT 1,(IX+18) ;DOUBLE SIDE ? 635 FB17+CB5E DB 0CBH,1*8+(IX+18)+40H 636 JRZ VALID3 ;SINGLE SIDE 637 FB19+2805 DB 28H,VALID3-$-1 638 BIT 5,(IX+18) ;CYLINDER MODE ? 639 FB1B+CB7E DB 0CBH,5*8+(IX+18)+40H 640 JRNZ VALID3 ;CYLINDER MODE 641 FB1D+2001 DB 20H,VALID3-$-1 642 FB1F 29 DAD H ;DBL SIDE, TIMES 2 643 FB20 7C VALID3: MOV A,H 644 FB21 F40400 CP (IX+0) ;EQUAL SEC/TRK ? 645 JRZ DBPARM ;VALID TABLE 646 FB24+280A DB 28H,DBPARM-$-1 647 FB26 212AFE LXI H,DEFLT ;LOAD DEFAULT TABLE 648 FB29 E5 VALID2: PUSH IX 649 FB2A D1 POP D 650 FB2B 018000 LXI B,128 651 LDIR 652 FB2E+EDB0 DB 0EDH,0B0H 653 DBPARM: LDX L,15 ;GET BYTES/SEC 654 FB30+DD6E0F DB 0DDH,L*8+46H,15 655 LDX H,16 656 FB33+DD6610 DB 0DDH,H*8+46H,16 657 FB36 29 DAD H 658 FB37 7C MOV A,H 659 FB38 328FF4 STA HSTBLK ;CPM SEC/PHY SEC 660 FB3B 3D DCR A 661 FB3C 3291F4 STA SECMSK ;SECTOR MASK 662 LDX B,2 ;GET BLK SHIFT FACTOR 663 FB3F+DD4602 DB 0DDH,B*8+46H,2 664 FB42 3E01 MVI A,1 ;CPM ALOC SIZE/128 665 FB44 07 BLKCAL: RLC 666 DJNZ BLKCAL 667 FB45+10FD DB 10H,BLKCAL-$-1 668 FB47 3290F4 STA BLKCNT 669 FB4A 3A85F4 LDA DISKNO ;GET DISK NO 670 FB4D 21A0F4 LXI H,LUNIT ;POINT TO LAST UNIT 671 FB50 BE CMP M ;SEE IF SAME 672 FB51 77 MOV M,A ;SAVE THIS UNIT CP/M RMAC ASSEM 1.1 #013 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 673 FB52 C8 RZ 674 FB53 CDC3FD CALL SETUP 675 FB56 21EBF4 LXI H,IDSV 676 FB59 1601 MVI D,1 677 FB5B 3EC4 MVI A,0C4H ;READ ADR COMMAND 678 FB5D D39C OUT DCMMD 679 FB5F 3289F4 STA CMND 680 FB62 019F06 LXI B,(6*256)+DDATA 681 FB65 CD2DFD CALL READ2 682 FB68 3AEBF4 IDRD1: LDA IDSV 683 FB6B D39D OUT DTRCK ;SET THE TRACK 684 FB6D AF XRA A ;RET, NO ERRORS 685 FB6E C9 RET 686 ; 687 ; 688 ;SET TRACK GIVEN BY REGISTER C 689 ; 690 FB6F 79 SETTRK: MOV A,C 691 FB70 3298F4 STA SEKTRK 692 FB73 C9 RET 693 ; 694 ; 695 ;SET SECTOR GIVEN BY REGISTER C 696 ; 697 FB74 79 SETSEC: MOV A,C 698 FB75 3299F4 STA SEKSEC 699 FB78 C9 RET 700 ; 701 ; 702 ;TRANSLATE THE SECTOR GIVEN BY BC USING THE 703 ;TRANSLATE TABLE GIVEN BY DE 704 ; 705 FB79 E5 SECTRN: PUSH IX ;SAVE X 706 FB7A 21ECFF LXI H,0FFECH ;TBL POINTER-20 707 FB7D 19 DAD D 708 FB7E E5 PUSH H ;POINTER TO X 709 FB7F E1 POP IX 710 FB80 AF XRA A 711 BIT 1,(IX+18) ;TEST FOR DBL SIDE 712 FB81+CB5E DB 0CBH,1*8+(IX+18)+40H 713 JRZ SECTR1 ;SINGLE SIDE 714 FB83+2814 DB 28H,SECTR1-$-1 715 BIT 5,(IX+18) ;CYLINDER MODE? 716 FB85+CB7E DB 0CBH,5*8+(IX+18)+40H 717 JRNZ SECTR1 ;NON-CYLINDER MODE 718 FB87+2010 DB 20H,SECTR1-$-1 719 LDX L,0 ;GET CPM SEC/TRK 720 FB89+DD6E00 DB 0DDH,L*8+46H,0 721 FB8C 67 MOV H,A 722 SRLR L ;DIVIDE BY 2 723 FB8D+CB3D DB 0CBH, 38H + L 724 FB8F 2D DCR L ;SUBTRACT 1 725 DSBC B ;SEC ON SD 0 OR 1? 726 FB90+ED42 DB 0EDH,B*8+42H 727 JRNC SECTR1 ;SECTOR ON SIDE 0 728 FB92+3005 DB 30H,SECTR1-$-1 CP/M RMAC ASSEM 1.1 #014 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 729 FB94 7D MOV A,L ;BUILD ADR FOR SD 1 730 FB95 2F CMA 731 FB96 4F MOV C,A 732 FB97 3E80 MVI A,80H ;SIDE SELECT = SD 1 733 FB99 EB SECTR1: XCHG ;HL=TRANS TBL 734 FB9A 09 DAD B ;ADD SEC INDEX 735 FB9B B6 ORA M ;OR SIDE SELECT 736 FB9C 6F MOV L,A ;HL = TRANS(SECTOR) 737 FB9D 2600 MVI H,0 738 FB9F E1 POP IX ;RESTORE X 739 FBA0 C9 RET 740 ; 741 ; 742 ;SET DMA ADDRESS GIVEN BY REGISTERS B AND C 743 ; 744 SETDMA: SBCD SEKDMA ;SAVE THE ADDRESS 745 FBA1+ED43 DB 0EDH,43H 746 FBA3+A4F4 DW SEKDMA 747 FBA5 C9 RET 748 ; 749 ; 750 ;MOVE TO THE TRACK 00 POSITION OF CURRENT DRIVE 751 ; 752 FBA6 3A9CF4 HOME: LDA HSTWRT ;TEST FOR WRITE PEND 753 FBA9 B7 ORA A 754 FBAA C0 RNZ 755 FBAB 329DF4 STA HSTACT ;CLEAR HSTACT FLAG 756 FBAE C9 RET 757 ; 758 ; 759 ;DEBLOCKING ROUTINES 760 ; 761 FBAF 3E01 HREAD: MVI A,1 ;SET READOP=READ 762 FBB1 329FF4 STA READOP 763 FBB4 3C INR A 764 FBB5 3292F4 STA WRTYPE ;TREAT AS UNALOC 765 FBB8 C319FC JMP ALLOC 766 FBBB AF HWRITE: XRA A ;SET READOP=WRITE 767 FBBC 329FF4 STA READOP 768 FBBF 79 MOV A,C ;SAVE WRITE TYPE 769 FBC0 3292F4 STA WRTYPE 770 FBC3 FE02 CPI WRUAL ;UNALOC WRITE? 771 JRNZ CHKUNA ;NOT UNALOC WRT 772 FBC5+2018 DB 20H,CHKUNA-$-1 773 FBC7 2A97F4 LHLD SEKDSK ;UNADSK=SEKDSK 774 FBCA 2294F4 SHLD UNADSK ;UNATRK=SEKTRK 775 FBCD 3A90F4 LDA BLKCNT ;RECORDS/CPM BLOCK 776 FBD0 3293F4 STA UNACNT 777 FBD3 3A99F4 LDA SEKSEC ;UNASEC=SEKSEC 778 FBD6 3296F4 STA UNASEC 779 FBD9 2AA6F4 LHLD CTBLP ;SAVE TBL ADR 780 FBDC 22A8F4 SHLD UTBLP 781 FBDF 3A93F4 CHKUNA: LDA UNACNT ;ANY UNALOC REMAIN? 782 FBE2 B7 ORA A 783 JRZ ALLOC ;NONE REMAIN 784 FBE3+2834 DB 28H,ALLOC-$-1 CP/M RMAC ASSEM 1.1 #015 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 785 FBE5 3D DCR A ;UNACNT-1 786 FBE6 3293F4 STA UNACNT 787 FBE9 2A94F4 LHLD UNADSK ;SEK = UNA? 788 FBEC 3A99F4 LDA SEKSEC 789 FBEF 4F MOV C,A 790 FBF0 3A96F4 LDA UNASEC 791 FBF3 CDF3FC CALL CMP3 792 JRNZ ALLOC ;NOT EQUAL 793 FBF6+2021 DB 20H,ALLOC-$-1 794 FBF8 2AA8F4 LHLD UTBLP ;GET TBL ADR 795 FBFB 4E MOV C,M ;CPM SEC/TRK 796 FBFC 0600 MVI B,0 797 FBFE 111400 LXI D,20 ;SEC TRANSL TBL 798 FC01 19 DAD D 799 FC02 3A96F4 LDA UNASEC ;SEARCH FOR UNASEC 800 CCIR ;END OF TRK? 801 FC05+EDB1 DB 0EDH,0B1H 802 FC07 E212FC JPO NOOVF ;NOT END 803 FC0A 2195F4 LXI H,UNATRK ;UNATRK + 1 804 FC0D 34 INR M 805 FC0E 3E01 MVI A,1 ;UNASEC = 1 806 JR OVF 807 FC10+1801 DB 18H,OVF-$-1 808 FC12 7E NOOVF: MOV A,M ;GET NEXT SECTOR 809 FC13 3296F4 OVF: STA UNASEC ;STORE NEXT UNASEC 810 FC16 AF XRA A ;RESET RSFLAG 811 JR ALLOC2 812 FC17+1805 DB 18H,ALLOC2-$-1 813 FC19 AF ALLOC: XRA A ;SET UNACNT=0 814 FC1A 3293F4 STA UNACNT 815 FC1D 3C INR A ;SET RSFLAG 816 FC1E 329EF4 ALLOC2: STA RSFLAG ;NEED PREREAD 817 FC21 2180EA LXI H,DBUF ;SET DMA ADR 818 FC24 228BF4 SHLD DMAAD 819 FC27 E5 RWOPER: PUSH IX 820 FC28 3A97F4 LDA SEKDSK ;LOG ON SEKDSK 821 FC2B CDA4FA CALL LOGDS2 822 BIT 5,(IX+18) ;CYLINDER MODE? 823 FC2E+CB7E DB 0CBH,5*8+(IX+18)+40H 824 JRZ CYLN ;YES 825 FC30+2816 DB 28H,CYLN-$-1 826 FC32 3A98F4 LDA SEKTRK 827 FC35 F41500 CP (IX+17) ;TRK > TRKS PER SIDE? 828 JRC CYLN ;NOT GREATER 829 FC38+380E DB 38H,CYLN-$-1 830 SUBX 17 ;ADJUST TRACK 831 FC3A+DD9611 DB 0DDH,96H,17 832 FC3D 3298F4 STA SEKTRK ;SAVE IT 833 FC40 3A99F4 LDA SEKSEC ;SELECT SIDE 1 834 FC43 F680 ORI 80H 835 FC45 3299F4 STA SEKSEC 836 FC48 3A99F4 CYLN: LDA SEKSEC ;COMPUTE PHY SEC ADR 837 FC4B 4F MOV C,A 838 FC4C E680 ANI 80H ;GET SIDE SELECT 839 FC4E 329BF4 STA SIDSEL ;SAVE IT 840 FC51 79 MOV A,C ;MASK OFF SIDE SEL CP/M RMAC ASSEM 1.1 #016 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 841 FC52 E67F ANI 7FH 842 FC54 4F MOV C,A 843 FC55 3A8FF4 LDA HSTBLK 844 FC58 0D DCR C 845 FC59 1F PSEC1: RAR 846 JRC SECDN 847 FC5A+3804 DB 38H,SECDN-$-1 848 SRLR C 849 FC5C+CB39 DB 0CBH, 38H + C 850 JR PSEC1 851 FC5E+18F9 DB 18H,PSEC1-$-1 852 FC60 0C SECDN: INR C 853 FC61 3A9BF4 LDA SIDSEL ;GET SIDE SELECT 854 FC64 B1 ORA C ;OR IT WITH SECTOR 855 FC65 329AF4 STA SEKHST ;SAVE IT 856 FC68 219DF4 LXI H,HSTACT ;TEST & SET HSTACT FLG 857 FC6B 7E MOV A,M 858 FC6C 3601 MVI M,1 ;SET FLAG 859 FC6E B7 ORA A ;TEST FLAG 860 JRZ FILHST ;NOT SET 861 FC6F+2816 DB 28H,FILHST-$-1 862 FC71 2A85F4 LHLD DISKNO ;SEEK=HOST? 863 FC74 3A9AF4 LDA SEKHST 864 FC77 4F MOV C,A 865 FC78 3A87F4 LDA SECTOR 866 FC7B CDF3FC CALL CMP3 867 JRZ MATCH ;SAME 868 FC7E+2823 DB 28H,MATCH-$-1 869 FC80 3A9CF4 LDA HSTWRT ;HOST WRITTEN? 870 FC83 B7 ORA A 871 FC84 C401FD CNZ DWRITE ;WRITE HOST BUF 872 FC87 2A97F4 FILHST: LHLD SEKDSK ;GET SET TO FILL BUF 873 FC8A 2285F4 SHLD DISKNO 874 FC8D 3A9AF4 LDA SEKHST ;PHYSICAL SEC ADR 875 BIT 2,(IX+18) ;1ST SEC = 0? 876 FC90+CB66 DB 0CBH,2*8+(IX+18)+40H 877 JRZ FLHST2 ;1ST SEC = 1 878 FC92+2801 DB 28H,FLHST2-$-1 879 FC94 3D DCR A ;1ST SEC = 0 880 FC95 3287F4 FLHST2: STA SECTOR 881 FC98 3A9EF4 LDA RSFLAG ;RSFLAG SET? 882 FC9B B7 ORA A 883 FC9C C4FDFC CNZ DREAD ;YES DO READ 884 FC9F AF XRA A 885 FCA0 329CF4 STA HSTWRT ;NO PENDING WRT 886 FCA3 3A99F4 MATCH: LDA SEKSEC ;MASK BUF SEL BITS 887 FCA6 3D DCR A 888 FCA7 6F MOV L,A 889 FCA8 3A91F4 LDA SECMSK 890 FCAB A5 ANA L 891 FCAC 67 MOV H,A ;BUF SEL BITS X 128 892 FCAD 2E00 MVI L,0 893 SRLR H 894 FCAF+CB3C DB 0CBH, 38H + H 895 RARR L 896 FCB1+CB1D DB 0CBH, 18H + L CP/M RMAC ASSEM 1.1 #017 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 897 FCB3 1180EA LXI D,DBUF ;ADD BUFFER INDEX 898 FCB6 19 DAD D 899 LDED SEKDMA ;GET SEEK DMA ADR 900 FCB7+ED5B DB 0EDH,5BH 901 FCB9+A4F4 DW SEKDMA 902 FCBB 018000 LXI B,128 ;SIZE OF MOVE 903 FCBE 3A9FF4 LDA READOP ;READOP=1? 904 FCC1 B7 ORA A 905 JRNZ RWMOVE ;YES MOVE READ DATA 906 FCC2+2006 DB 20H,RWMOVE-$-1 907 FCC4 3E01 MVI A,1 908 FCC6 329CF4 STA HSTWRT ;SET HOST WRITTEN 909 FCC9 EB XCHG ;MOVE WRITE DATA 910 RWMOVE: BIT 4,(IX+18) ;INVERTED DATA? 911 FCCA+CB76 DB 0CBH,4*8+(IX+18)+40H 912 JRZ NOINV ;NON-INVERTED DATA 913 FCCC+280A DB 28H,NOINV-$-1 914 FCCE 41 MOV B,C ;MOVE LENGTH TO B 915 FCCF 7E INVRT: MOV A,M ;GET DATA 916 FCD0 2F CMA ;INVERT DATA 917 FCD1 12 STAX D ;MOVE TO DESTINATION 918 FCD2 23 INX H ;INCREMENT ADDRESSES 919 FCD3 13 INX D 920 DJNZ INVRT ;DO 128 BYTES 921 FCD4+10F9 DB 10H,INVRT-$-1 922 JR INVDN ;DONE 923 FCD6+1802 DB 18H,INVDN-$-1 924 NOINV: LDIR ;MOVE NON-INVERTED DATA 925 FCD8+EDB0 DB 0EDH,0B0H 926 FCDA 3A92F4 INVDN: LDA WRTYPE ;WRITE TO DIRECTORY? 927 FCDD FE01 CPI WRDIR 928 FCDF 3AA1F4 LDA ERFLAG ;GET ERROR FLAG 929 JRNZ RWD ;NOT DIR WRT 930 FCE2+200D DB 20H,RWD-$-1 931 FCE4 B7 ORA A ;ERRORS? 932 JRNZ RWD ;DONE IF ERRORS 933 FCE5+200A DB 20H,RWD-$-1 934 FCE7 AF XRA A 935 FCE8 329CF4 STA HSTWRT ;RESET HSTWRT FLAG 936 FCEB CD01FD CALL DWRITE ;WRITE TO DIRECTORY 937 FCEE 3AA1F4 LDA ERFLAG ;GET ERROR FLAG 938 FCF1 E1 RWD: POP IX 939 FCF2 C9 RET ;DONE 940 CMP3: LDED SEKDSK ;GET SEKDSK & SEKTRK 941 FCF3+ED5B DB 0EDH,5BH 942 FCF5+97F4 DW SEKDSK 943 FCF7 B7 ORA A 944 DSBC D ;COMPARE HL & DE 945 FCF8+ED52 DB 0EDH,D*8+42H 946 FCFA C0 RNZ ;RETURN NOT EQUAL 947 FCFB B9 CMP C ;COMPARE A & C 948 FCFC C9 RET ;DONE 949 ; 950 ; 951 ;DISK READ AND WRITE ROUTINES 952 ; CP/M RMAC ASSEM 1.1 #018 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 953 FCFD 3E01 DREAD: MVI A,1 ;SET READ FLAG 954 JR STRFLG 955 FCFF+1801 DB 18H,STRFLG-$-1 956 FD01 AF DWRITE: XRA A ;SET WRITE FLAG 957 FD02 328AF4 STRFLG: STA RWFLG ;SAVE IT FOR LATER USE 958 FD05 060A DORDWT: MVI B,10 ;NUMBER OF RETRIES 959 FD07 C5 AGN: PUSH B ;SAVE BC 960 FD08 CD6AFD CALL SEEK ;SEEK THE TRACK 961 FD0B CC1DFD CZ RDWR ;NO ERROR 962 FD0E 32A1F4 STA ERFLAG ;STORE ERROR FLAG 963 FD11 C1 READ3: POP B ;GET ERROR RETRY COUNT 964 FD12 C8 RZ ;RETURN IF NO ERRORS 965 FD13 3EFF MVI A,0FFH ;CAUSE IDRD ON RETRY 966 FD15 32A0F4 STA LUNIT 967 DJNZ AGN ;DO A RETRY 968 FD18+10ED DB 10H,AGN-$-1 969 FD1A C345FA JMP DERR1 ;DISP PARAMETERS 970 ; 971 FD1D 5F RDWR: MOV E,A ;SAVE COMMAND 972 FD1E 3A8AF4 LDA RWFLG 973 FD21 B7 ORA A 974 FD22 7B MOV A,E ;REGET THE COMMAND 975 JRZ WRDAT ;WRITE IF ZERO 976 FD23+2813 DB 28H,WRDAT-$-1 977 FD25 D39C RDAT: OUT DCMMD ;DISK COMMAND PORT 978 FD27 3289F4 STA CMND 979 FD2A 019F80 READ1: LXI B,(128*256)+DDATA 980 READ2: INIR 981 FD2D+EDB2 DB 0EDH,0B2H 982 FD2F 15 DCR D ;LOOP CONTROL 983 JRNZ READ1 984 FD30+20F8 DB 20H,READ1-$-1 985 FD32 CD59FD CALL EOJ 986 FD35 E69C ANI 9CH ;ISOLATE READ ERROR BITS 987 FD37 C9 RET 988 ; 989 FD38 F620 WRDAT: ORI 20H ;ADD WRITE COMMAND 990 FD3A D39C OUT DCMMD ;DISK COMMAND PORT 991 FD3C 3289F4 STA CMND 992 FD3F 019F80 WRT1: LXI B,(128*256)+DDATA 993 OUTIR 994 FD42+EDB3 DB 0EDH,0B3H 995 FD44 15 DCR D ;LOOP CONTROL 996 JRNZ WRT1 997 FD45+20F8 DB 20H,WRT1-$-1 998 JR EOJ 999 FD47+1810 DB 18H,EOJ-$-1 1000 FD49 0608 EOJB: MVI B,8 ;BASIS OF RESTORE COMMAND 1001 FD4B DB9B EOJA: IN DFLAG ;STEP RATE BITS 1002 FD4D E603 ANI 3 1003 FD4F B0 ORA B ;ADD ON THE COMMAND 1004 FD50 3289F4 STA CMND 1005 FD53 D39C OUT DCMMD ;DO THE COMMAND 1006 FD55 0680 MVI B,128 ;DELAY 1007 SKDLY: DJNZ SKDLY 1008 FD57+10FE DB 10H,SKDLY-$-1 CP/M RMAC ASSEM 1.1 #019 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1009 FD59 DB9C EOJ: IN DSTAT ;TEST FOR INTRQ 1010 FD5B E601 ANI 1 1011 JRNZ EOJ ;WAIT FOR INTRQ 1012 FD5D+20FA DB 20H,EOJ-$-1 1013 FD5F CDE2FD CALL DWAIT ;DISABLE WAITS 1014 FD62 DB9C EOJ1: IN DSTAT ;GET THE DISK STATUS 1015 FD64 3288F4 STA STATUS 1016 FD67 E6FC ANI 0FCH 1017 FD69 C9 RET 1018 ; 1019 FD6A CDA1FA SEEK: CALL LOGDSK ;LOG ON DISKNO 1020 FD6D C0 RNZ ;ERROR RETURN 1021 FD6E CDBAFD CALL TST128 ;ADJUST SECTOR ADR 1022 FD71 D39E OUT DSCTR ;DISK SECTOR PORT 1023 FD73 DB9D SEEK2: IN DTRCK ;DISK TRACK PORT 1024 FD75 4F MOV C,A ;SAVE IT 1025 FD76 3A86F4 LDA TRACK ;GET DESIRED TRACK 1026 FD79 B9 CMP C 1027 JRZ RDWRT ;NO SEEK NEEDED 1028 FD7A+280A DB 28H,RDWRT-$-1 1029 FD7C D39F OUT DDATA ;SET THE TRACK 1030 FD7E 0618 MVI B,18H ;SEEK COMMAND 1031 FD80 CD4BFD CALL EOJA ;DO THE SEEK 1032 FD83 E680 ANI 80H ;ERROR MASK 1033 FD85 C0 RNZ ;SEEK ERROR 1034 FD86 CDC3FD RDWRT: CALL SETUP ;GET READY 1035 FD89 DB9B IN DFLAG 1036 FD8B E610 ANI 10H ;HEAD LOADED? 1037 FD8D 3E04 MVI A,4 1038 JRZ RDWRT1 ;JUMP IF NOT 1039 FD8F+2801 DB 28H,RDWRT1-$-1 1040 FD91 AF XRA A ;RESET HEAD LD FLAG 1041 FD92 C688 RDWRT1: ADI 88H ;READ COMMAND 1042 FD94 4F MOV C,A ;SAVE IT 1043 FD95 3A86F4 LDA TRACK ;TEST FOR TRK 0 1044 FD98 B7 ORA A 1045 JRNZ RDWRT4 ;NOT TRACK 0 1046 FD99+2009 DB 20H,RDWRT4-$-1 1047 FD9B 3A87F4 LDA SECTOR ;TEST FOR SIDE 1 1048 BIT 7,A 1049 FD9E+CB7F DB 0CBH,7*8+A+40H 1050 FDA0 1601 MVI D,1 1051 JRZ RDWRT2 ;TRK 0, SIDE 0 = SD 1052 FDA2+2808 DB 28H,RDWRT2-$-1 1053 RDWRT4: LDX L,15 ;GET SECTOR SIZE 1054 FDA4+DD6E0F DB 0DDH,L*8+46H,15 1055 LDX H,16 1056 FDA7+DD6610 DB 0DDH,H*8+46H,16 1057 FDAA 29 DAD H 1058 FDAB 54 MOV D,H 1059 FDAC 2A8BF4 RDWRT2: LHLD DMAAD ;GET DMA ADDRESS 1060 FDAF 3A87F4 RDWRT3: LDA SECTOR ;TEST FOR SIDE 1 1061 FDB2 E680 ANI 80H 1062 FDB4 79 MOV A,C ;REGET COMMAND 1063 FDB5 C8 RZ ;SIDE 0 1064 FDB6 F602 ORI 2 ;SELECT SIDE 1 CP/M RMAC ASSEM 1.1 #020 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1065 FDB8 BF CMP A ;CLEAR THE FLAGS 1066 FDB9 C9 RET 1067 FDBA 3A87F4 TST128: LDA SECTOR 1068 BIT 3,(IX+18) ;SD 1 < 128? 1069 FDBD+CB6E DB 0CBH,3*8+(IX+18)+40H 1070 FDBF C8 RZ ;SD 1 > 128 1071 FDC0 E67F ANI 7FH ;SD 1 < 128 1072 FDC2 C9 RET 1073 ; 1074 ; 1075 ;SELECTS DRIVE 1076 ; 1077 FDC3 2187F4 SETUP: LXI H,SECTOR ;POINT TO SECTOR 1078 FDC6 DB9B IN DFLAG 1079 FDC8 E640 ANI 40H ;TEST FOR TRK 0 1080 FDCA 3A8EF4 LDA HSELCD ;GET SEL CODE 1081 JRNZ SETUP2 ;NOT TRK 0 1082 FDCD+2004 DB 20H,SETUP2-$-1 1083 BIT 7,M ;TEST FOR SIDE 1 1084 FDCF+CB7E DB 0CBH,7*8+M+40H 1085 JRZ SETUP3 ;TRK 0, SIDE 0 IS SD 1086 FDD1+280C DB 28H,SETUP3-$-1 1087 SETUP2: BIT 7,(IX+18) ;TEST FOR DD/SD 1088 FDD3+CB8E DB 0CBH,7*8+(IX+18)+40H 1089 JRZ SETUP4 ;THIS DSK IS SD 1090 FDD5+2802 DB 28H,SETUP4-$-1 1091 RES 6,A ;SET DD 1092 FDD7+CBB7 DB 0CBH,6*8+A+80H 1093 SETUP4: BIT 7,M ;TEST FOR SIDE 1 1094 FDD9+CB7E DB 0CBH,7*8+M+40H 1095 JRZ SETUP3 ;SIDE 0 1096 FDDB+2802 DB 28H,SETUP3-$-1 1097 SETB 5,A ;SELECT SIDE 1 1098 FDDD+CBEF DB 0CBH,5*8+A+0C0H 1099 FDDF D39B SETUP3: OUT DCNTL 1100 FDE1 C9 RET 1101 ; 1102 ; 1103 ;DISABLE WAIT STATES 1104 ; 1105 FDE2 3A8EF4 DWAIT: LDA HSELCD ;RESET AUTO-WAIT 1106 FDE5 E67F ANI 7FH 1107 FDE7 D39B OUT DCNTL 1108 FDE9 C9 RET 1109 ; 1110 ; 1111 ; 1112 EPBASE: 1113 ;DISK PARAMETER HEADER FOR DISK 00 1114 FDEA 94EE0000 DW TD0,0 1115 FDEE 00000000 DW 0,0 1116 FDF2 00F180EE DW DIRBF,DP0 1117 FDF6 80F380F1 DW CHK00,ALL00 1118 ;DISK PARAMETER HEADER FOR DISK 01 1119 FDFA 14EF0000 DW TD1,0 1120 FDFE 00000000 DW 0,0 CP/M RMAC ASSEM 1.1 #021 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1121 FE02 00F100EF DW DIRBF,DP1 1122 FE06 C0F300F2 DW CHK01,ALL01 1123 ;DISK PARAMETER HEADER FOR DISK 02 1124 FE0A 94EF0000 DW TD2,0 1125 FE0E 00000000 DW 0,0 1126 FE12 00F180EF DW DIRBF,DP2 1127 FE16 00F480F2 DW CHK02,ALL02 1128 ;DISK PARAMETER HEADER FOR DISK 03 1129 FE1A 14F00000 DW TD3,0 1130 FE1E 00000000 DW 0,0 1131 FE22 00F100F0 DW DIRBF,DP3 1132 FE26 40F400F3 DW CHK03,ALL03 1133 0040 = EPLGTH EQU $-EPBASE 1134 ; 1135 ; 1136 ; THE FOLLOWING TABLE IS THE DEFAULT 1137 ; DISK PARAMETER TABLE. IT WILL CONTAIN 1138 ; AN 8" SINGLE SIDE SINGLE DENSITY TABLE 1139 ; AT COLD START TIME, (RESET OR POWER ON). 1140 ; ANY TIME A VALID TABLE IS NOT FOUND ON 1141 ; A DISK BEING LOGGED-IN, THIS TABLE 1142 ; WILL BE LOADED INSTEAD. 1143 ; 1144 FE2A 1A00 DEFLT: DW 26 ;SECTORS PER TRACK 1145 FE2C 03 DB 3 ;BLOCK SHIFT FACTOR 1146 FE2D 07 DB 7 ;BLOCK MASK 1147 FE2E 00 DB 0 ;EXTENT MASK 1148 FE2F F200 DW 242 ;BLOCKS PER DISKETTE 1149 FE31 3F00 DW 63 ;# DIRECTORY ENTRIES 1150 FE33 C0 DB 0C0H ;ALLOC 0 1151 FE34 00 DB 0 ;ALLOC 1 1152 FE35 1000 DW 16 ;DIR CHECK VECTOR SIZE 1153 FE37 0200 DW 2 ;SYSTEM TRACK OFFSET 1154 FE39 8000 DW 128 ;BYTES PER SECTOR 1155 FE3B 4D DB 77 ;TRACKS PER DISK 1156 ; CONTROL BYTE 1157 FE3C 01 DB 00000001B 1158 ; BIT 0 = 8"/5" 1159 ; BIT 1 = DS/SS 1160 ; BIT 2 = SEC 0/SEC 1 1161 ; BIT 3 = SD 1 < 128 1162 ; BIT 4 = INV DATA 1163 ; BIT 5 = NON-CYLINDER 1164 ; BIT 6 = UNDEFINED 1165 ; BIT 7 = DD/SD 1166 1167 FE3D 1A DB 26 ;PHYSICAL SEC/TRK 1168 ; 1169 ; SECTOR TRANSLATE TABLE 1170 ; 1171 FE3E 01070D1319T8S4: DB 1,7,13,19,25 1172 FE43 050B1117 DB 5,11,17,23 1173 FE47 03090F15 DB 3,9,15,21 1174 FE4B 02080E141A DB 2,8,14,20,26 1175 FE50 060C1218 DB 6,12,18,24 1176 FE54 040A1016 DB 4,10,16,22 CP/M RMAC ASSEM 1.1 #022 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1177 ; 1178 ; 1179 ;SCRATCH RAM AREA FOR BDOS USE 1180 ; 1181 EA80 = BEGDAT EQU BIOS+128;BEGINNING OF DATA AREA 1182 EA80 ORG BEGDAT 1183 EA80 DBUF: DS 1024 ;DEBLOCK BUFFER 1184 EE80 DP0: DS 20 ;DISK PARMETER TABLES 1185 EE94 TD0: DS 108 1186 EF00 DP1: DS 20 1187 EF14 TD1: DS 108 1188 EF80 DP2: DS 20 1189 EF94 TD2: DS 108 1190 F000 DP3: DS 20 1191 F014 TD3: DS 108 1192 F080 UTABLE: DS 128 ;USER DISK PARAMETER TABLE 1193 F100 DIRBF: DS 128 ;SCRATCH DIRECTORY AREA 1194 F180 ALL00: DS 128 ;ALLOCATION VECTOR 0 1195 F200 ALL01: DS 128 ;ALLOCATION VECTOR 1 1196 F280 ALL02: DS 128 ;ALLOCATION VECTOR 2 1197 F300 ALL03: DS 128 ;ALLOCATION VECTOR 3 1198 F380 CHK00: DS 64 ;CHECK VECTOR 0 1199 F3C0 CHK01: DS 64 ;CHECK VECTOR 1 1200 F400 CHK02: DS 64 ;CHECK VECTOR 2 1201 F440 CHK03: DS 64 ;CHECK VECTOR 3 1202 F480 SELFLG: DS 1 ;USER TABLE FLAG 1203 F481 DSKSEL: DS 4 ;DISK ACCESS TABLE 1204 F485 DISKNO: DS 1 ;DISK PARAMATERS 1205 F486 TRACK: DS 1 1206 F487 SECTOR: DS 1 1207 F488 STATUS: DS 1 1208 F489 CMND: DS 1 1209 F48A RWFLG: DS 1 1210 F48B DMAAD: DS 2 1211 F48D PARFLG: DS 1 ;PAR ERROR FLAG 1212 F48E HSELCD: DS 1 ;HOST SELECT CODE 1213 F48F HSTBLK: DS 1 ;CPM SEC/PHY SEC 1214 F490 BLKCNT: DS 1 ;REC/CPMBLK 1215 F491 SECMSK: DS 1 ;SECTOR MASK 1216 F492 WRTYPE: DS 1 ;WRITE TYPE 1217 F493 UNACNT: DS 1 ;UNALOC REC COUNT 1218 F494 UNADSK: DS 1 ;LAST UNALOC DISK 1219 F495 UNATRK: DS 1 ;LAST UNALOC TRACK 1220 F496 UNASEC: DS 1 ;LAST UNALOC SECTOR 1221 F497 SEKDSK: DS 1 ;SEEK DISK 1222 F498 SEKTRK: DS 1 ;SEEK TRACK 1223 F499 SEKSEC: DS 1 ;SEEK SECTOR 1224 F49A SEKHST: DS 1 ;PHYSICAL SEC ADR 1225 F49B SIDSEL: DS 1 ;SIDE SELECT STORAGE 1226 F49C HSTWRT: DS 1 ;HOST WRITTEN FLAG 1227 F49D HSTACT: DS 1 ;HOST ACTIVE FLAG 1228 F49E RSFLAG: DS 1 ;READ SECTOR FLAG 1229 F49F READOP: DS 1 ;1=READ, 0=WRITE 1230 F4A0 LUNIT: DS 1 ;LAST SELECTED DRIVE 1231 F4A1 ERFLAG: DS 1 ;ERROR FLAG 1232 F4A2 RFLAG: DS 1 ;CPM READ FLAG CP/M RMAC ASSEM 1.1 #023 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> 1233 F4A3 BTSEC: DS 1 ;NO OF BOOT SECS 1234 F4A4 SEKDMA: DS 2 ;SEEK DMA ADDRESS 1235 F4A6 CTBLP: DS 2 ;CURRENT TBL ADR 1236 F4A8 UTBLP: DS 2 ;UNALOC TBL ADR 1237 F4AA SECCNT: DS 1 ;SECS/TRK FOR BOOT 1238 F4AB DPBASE: DS EPLGTH ;CPM DISK PARAMETER HEADERS 1239 F4EB IDSV: DS 6 1240 0A71 = DATSIZ EQU $-BEGDAT ;SIZE OF SCRATCH RAM 1241 ; 1242 ; 1243 ;END OF PROGRAM 1244 ; 1245 ; 1246 ; 1247 F4F1 END CP/M RMAC ASSEM 1.1 #024 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> AGN FD07 959# 967 968 ALL00 F180 1117 1194# ALL01 F200 1122 1195# ALL02 F280 1127 1196# ALL03 F300 1132 1197# ALLOC FC19 765 783 784 792 793 813# ALLOC2 FC1E 811 812 816# BASE F800 89# 90 138 BBOOT F933 358# BC 0000 BCDL 004B 172# 342 BDOS DC06 111# 490 BEGDAT EA80 368 369 1181# 1182 1240 BIAS A000 109# 110 BIOS EA00 112# 116 341 1181 BIOSCD F800 144# 172 358 BIOSM1 F914 341# 359 BIOSM2 F917 342# BIOSMV F911 340# 374 476 BLKCAL FB44 665# 666 667 BLKCNT F490 668 775 1214# BOOT F91B 144 348# BOOTRD F9AD 415# BRWAGN F9A0 409# 435 436 BTRW1 F9BD 423# 427 428 BTRW3 F9B8 418 419 421# BTSEC F4A3 395 405 407 443 1233# CCP D400 110# 111 112 383 483 CHK00 F380 1117 1198# CHK01 F3C0 1122 1199# CHK02 F400 1127 1200# CHK03 F440 1132 1201# CHKUNA FBDF 771 772 781# CI F8E9 147 151 222 304# 306 307 CMND F489 421 679 978 991 1004 1208# CMP3 FCF3 791 866 940# CO F8B6 148 150 230 252# 299 300 CONCTL 0002 101# 278 CONDTA 0003 100# 308 CONSTS 0002 102# CR 000D 94# 210 216 CRLF F8C5 221 238 270# 504 CRLFHL F8AE 238# CSTS F8CD 146 185 278# 304 CTBLP F4A6 391 393 573 575 609 779 1235# CURDSK 0004 132# 481 CYLN FC48 824 825 828 829 836# DABLD1 FAAD 566# 571 572 DABLD2 FAB4 567 568 573# DABLD3 FAD6 584 585 593# DATSIZ 0A71 370 1240# DBPARM FB30 595 596 645 646 653# DBUF EA80 817 897 1183# DCMMD 009C 122# 422 678 977 990 1005 DCNTL 009B 127# 600 611 1099 1107 DDATA 009F 125# 423 680 979 992 1029 CP/M RMAC ASSEM 1.1 #025 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> DE 0002 DEFLT FE2A 647 1144# DERR1 FA45 437 499# 603 620 969 DERR2 FA53 506# 518 519 DERRM FA33 493# 502 DERROR F9D0 437# DEVOK F853 180 181 183# DEVTBL F856 184# DFLAG 009B 126# 127 399 1001 1035 1078 DIRBF F100 340 1116 1121 1126 1131 1193# DISKNO F485 503 559 669 862 873 1204# DISPB F8DB 289 291# 513 DISPHL F8D6 243 288# 524 DMAAD F48B 384 414 439 523 818 1059 1210# DORDWT FD05 958# DP0 EE80 562 564 1116 1184# DP1 EF00 1121 1186# DP2 EF80 1126 1188# DP3 F000 1131 1190# DPBASE F4AB 379 555 1238# DREAD FCFD 883 953# DSCTR 009E 124# 411 607 1022 DSKSEL F481 579 1203# DSTAT 009C 121# 122 123 124 125 1009 1014 DTRCK 009D 123# 683 1023 DWAIT FDE2 1013 1105# DWRITE FD01 871 936 956# EOJ FD59 430 985 998 999 1009# 1011 1012 EOJ1 FD62 1014# EOJA FD4B 467 1001# 1031 EOJB FD49 601 1000# EPBASE FDEA 378 1112# 1133 EPLGTH 0040 380 1133# 1238 ERFLAG F4A1 928 937 962 1231# EXITRG F86B 168 204# FILHST FC87 860 861 872# FLHST2 FC95 877 878 880# GOCPM FA19 445 476# HELLO F92E 356# HL 0004 HLBLK F8B1 243# HOME FBA6 152 752# HREAD FBAF 157 761# HSELCD F48E 578 599 610 1080 1105 1212# HSTACT F49D 755 856 1227# HSTBLK F48F 659 843 1213# HSTWRT F49C 752 869 885 908 935 1226# HTA F8BB 258# 298 HTA2 F8E4 296 298# HWRITE FBBB 158 766# IDRD1 FB68 682# IDSV F4EB 675 682 1239# INOUT 0001 99# 315 321 323 325 330 350 INVDN FCDA 922 923 926# INVRT FCCF 915# 920 921 IOBYT FA2E 488# CP/M RMAC ASSEM 1.1 #026 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> IX 0004 457 458 461 462 541 546 634 635 638 639 644 648 705 709 711 712 715 716 738 819 822 823 827 875 876 910 911 938 1068 1069 1087 1088 IY 0004 LF 000A 95# 210 216 LOGDS2 FAA4 389 543 560# 821 LOGDSK FAA1 559# 1019 LUNIT F4A0 387 670 966 1230# MATCH FCA3 867 868 886# MAXCON F869 169 201# MESG F8A3 227# 272 357 MESG1 F8A6 228# 231 232 508 521 MSG F86C 210# 212 227 MSG1 F88E 216# 218 MSG1L 0009 218# MSGL 0022 212# 356 MSIZE 003C 108# 109 NOINV FCD8 912 913 924# NOOVF FC12 802 808# NTAGN FAEB 605# 618 619 OVF FC13 806 807 809# PARFLG F48D 353 1211# POLDEV F84C 165 178# PRINT F8F4 149 315# 317 318 PSEC1 FC59 845# 850 851 PSTS F908 159 184 330# RDAT FD25 613 977# RDWR FD1D 961 971# RDWRT FD86 1027 1028 1034# RDWRT1 FD92 1038 1039 1041# RDWRT2 FDAC 1051 1052 1059# RDWRT3 FDAF 1060# RDWRT4 FDA4 1045 1046 1053# READ1 FD2A 979# 983 984 READ2 FD2D 681 980# READ3 FD11 963# READOP F49F 762 767 903 1229# RFLAG F4A2 355 1232# RSFLAG F49E 816 881 1228# RTNEMP F85C 186 187# RWD FCF1 929 930 932 933 938# RWFLG F48A 957 972 1209# RWMOVE FCCA 905 906 910# RWOPER FC27 819# SECCNT F4AA 398 404 446 448 474 1237# SECDN FC60 846 847 852# SECMSK F491 661 889 1215# SECTOR F487 352 386 415 440 442 471 865 880 1047 1060 1067 1077 1206# SECTR1 FB99 713 714 717 718 727 728 733# SECTRN FB79 160 705# SEEK FD6A 960 1019# SEEK2 FD73 1023# SEKDMA F4A4 480 744 746 899 901 1234# SEKDSK F497 538 547 773 820 872 940 942 1221# CP/M RMAC ASSEM 1.1 #027 << MYBIOS FOR GSR BOARD VERSION OF 21 APR 84 RHP>> SEKHST F49A 855 863 874 1224# SEKSEC F499 698 777 788 833 835 836 886 1223# SEKTRK F498 691 826 832 1222# SELDSK FA80 153 536# SELFLG F480 582 587 1202# SELMEM F84B 164 176# SETDMA FBA1 156 744# SETSEC FB74 155 697# SETTRK FB6F 154 690# SETUP FDC3 412 674 1034 1077# SETUP2 FDD3 1081 1082 1087# SETUP3 FDDF 1085 1086 1095 1096 1099# SETUP4 FDD9 1089 1090 1093# SIDSEL F49B 839 853 1225# SKDLY FD57 1007# 1007 1008 SPACE F8B4 247# 509 514 522 STACK F7FF 90# 220 348 362 START F897 220# 390 438 STATUS F488 528 1015 1207# STOPCK F86B 167 203# STRFLG FD02 954 955 957# STRTCK F86B 166 202# SYSINT F86B 170 205# T8S4 FE3E 1171# TBLJMP F85E 183 190# TBUF 0080 133# 479 TD0 EE94 1114 1185# TD1 EF14 1119 1187# TD2 EF94 1124 1189# TD3 F014 1129 1191# TPLT FA2B 363 487# TRACK F486 468 1025 1043 1205# TST128 FDBA 410 1021 1067# UNACNT F493 776 781 786 814 1217# UNADSK F494 774 787 1218# UNASEC F496 778 790 799 809 1220# UNATRK F495 803 1219# UTABLE F080 590 1192# UTBLP F4A8 780 794 1236# VALID FB07 616 617 621# VALID1 FB13 630# 631 632 VALID2 FB29 591 592 648# VALID3 FB20 636 637 640 641 643# VERS 0016 107# WBOOT F93B 145 223 362# WBOOT8 F997 401 402 405# 449 450 475 WBOOT9 FA0D 464 465 471# WBOOTA F9D6 433 434 439# WBOOTB FA02 459 460 466# WBOOTE EA03 116# 487 WRALL 0000 113# WRDAT FD38 975 976 989# WRDIR 0001 114# 927 WRT1 FD3F 992# 996 997 WRTYPE F492 764 769 926 1216# WRUAL 0002 115# 770