Subttl -Firmware Hi-Rom Code for Hard Disk (Rev_20 31_Oct_83) ; ; Copyright 1983, 1984 ; Morrow Designs, Inc. ; San Leandro, Ca. ; Michael Stolowitz, John Zalabak ; .z80 ; switch set to assemble z80 nemonics include HD20DEF.MAC ; Include the global definitions aseg org o_hirm ;See the hd*def.mac module for definition ;This section must be at the very end of rom ;---------------------------------------------------------------------- ; Linkage Definitions ;-------------------- ; public hirom ;Declare the start of the Hi-Rom code ;In the main module external Hdone ;Defines the page zero jump IY indirect return ;to the calling routine page 64 ; Start of the Read-Data Area (14_Oct_83) ;---------------------------------------- ; .phase Dskbuf - 800h ;Read-Data Block 0 hirom: jp 0C028h nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop Š nop nop nop .dephase .phase dskbuf ;Read-data block 2 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop dec c jp z,postbuf nop nop .dephase .phase prebuf ;read-data block 1 nop scf jp (hl) or a nop nop nop nop nop ld hl,prebuf+0Dh jp (hl) jp (ix) nop nop Š nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase .phase postbuf ;read-data block 3 nop nop jp Hdone nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase page ; Start of write command (14_Oct_83) ;----------------------------------- ; Š .phase Dskbuf - 800h ;Write-Data Block 0 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase .phase dskbuf ;write-data block 2 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop Š nop nop nop nop nop nop nop nop nop nop dec c jp z,postbuf nop .dephase .phase prebuf ;write-data block 1 nop scf jp (hl) or a nop nop nop nop jp prebuf+17h nop nop nop nop nop nop nop nop nop nop nop nop ld d,3 dec d jp nz,prebuf+19h nop nop nop .dephase .phase postbuf ;write-data block 3 nop nop nop jp Hdone nop nop nop nop Š nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase page ; Start of read headers command (14_Oct_83) ;------------------------------------------ ; .phase Dskbuf - 800h ;Read Headers Block 0 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop Š nop nop nop nop nop nop nop nop .dephase .phase dskbuf ;read-headers block 2 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase .phase prebuf ;read-headers block 1 nop scf jp (hl) or a nop nop nop nop Š nop jp Hdone nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase .phase postbuf ;read-headers block 3 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop Š nop nop nop nop .dephase page ; Start of format command (25_Oct_83) ;------------------------------------ ; .phase Dskbuf - 800h ;Format Block 0 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop .dephase .phase dskbuf ;Format Block 2 db HIGH prebuf ;Hi byte of jump at the end of block 1 nop ld e,l ld d,5 dec d jp nz,dskbuf+5 dec e jp z,dskbuf+13h Š nop nop nop jp dskbuf+3 nop nop nop nop nop jp postbuf+10h nop nop nop nop nop .dephase .phase prebuf ;Format Block 1 ld a,b ;Wait for revs to goto 1 cp 1 jp z,prebuf+7 halt ;Wait for the next interrupt ld d,6 ;Gap_1_size/6 dec d jp nz,prebuf+9 ld d,2 dec d nop jp nz,prebuf+0Fh nop nop nop ld b,2ch ;B:= page address of sector table ld a,(bc) ;A:= current sector (C already set as offset) ld d,3 dec d nop db 0C2h ;This is a jump instruction (jp nz,prebuf+1Ch) db 0FCh ;High byte of argument is at start of block 2 .dephase .phase postbuf ;Format Block 3 nop nop nop nop nop nop nop nop nop nop nop Š nop nop nop nop nop ld d,h dec d dec d jp nz,postbuf+12h dec c jp nz,prebuf+0dh ld b,1 halt nop nop nop .dephase end