Image Map Image Map
Page 2 of 2 FirstFirst 12
Results 11 to 16 of 16

Thread: Liveport FDM 180 disk unit for Exidy Sorcerer

  1. #11
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    199

    Default

    Let me know what you need.

    You're still looking for additional technical documentation and you still have fears that the onboard firmware is corrupt?
    Was this Sorcerer and the drives originally a 'matched set' that worked in the past?

  2. #12

    Default

    You're still looking for additional technical documentation and you still have fears that the onboard firmware is corrupt?
    Yes and yes.

    Was this Sorcerer and the drives originally a 'matched set' that worked in the past?
    Yes, it was a (previously) working drive unit supplied with the Sorcerer.. I suspect many issues - not least of which, the 50 way cable which connects the Sorcerer to the drive. Very old and stiff. But I was able to see the ROM content on the drive, assuming it wasn't corrupt. If you review the thread you can see the screenshots and disk boot ROM dumps.

  3. #13
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    199

    Default

    Quote Originally Posted by JonB View Post

    Yes, it was a (previously) working drive unit supplied with the Sorcerer.. I suspect many issues - not least of which, the 50 way cable which connects the Sorcerer to the drive. Very old and stiff. But I was able to see the ROM content on the drive, assuming it wasn't corrupt. If you review the thread you can see the screenshots and disk boot ROM dumps.
    I would be happy to send you some connectors if you want want to make up a new cable.
    Do you have many disk of software for this setup?

  4. #14

    Default

    Hi exidyboy

    I have some software - three boot disks I believe, which may or may not be readable. I sent them to a friend to be imaged, not sure if he managed it or not (I've just asked via email). There's no need to send connectors halfway round the world, I can probably cobble something together! But the Sorcerer and its drive are in deep hibernation at the moment, so no time soon.

    Cheers
    JonB

  5. #15
    Join Date
    May 2018
    Location
    Melbourne, Australia
    Posts
    199

    Default

    Quote Originally Posted by JonB View Post
    Actually, DC00 as far as I can tell. I edited post #4.

    Disassembled it looks like this:

    Code:
    DC00 F2 2F A2       JP P,A22F
    DC03 00             NOP
    DC04 F9             LD SP,HL
    DC05 3F             CCF
    DC06 C9             RET
    DC07 CD A2 0F       CALL 0FA2
    DC0A EB             EX DE,HL
    DC0B 2A A0 0F       LD HL,(0FA0)
    DC0E 2E 00          LD L,00
    DC10 E5             PUSH HL
    DC11 0F             RRCA
    DC12 1D             DEC E
    DC13 00             NOP
    DC14 01 EF E1       LD BC,E1EF
    DC17 0E 12          LD C,12
    DC19 0F             RRCA
    DC1A 06 BD          LD B,BD
    DC1C EB             EX DE,HL
    DC1D 3F             CCF
    DC1E 3B             DEC SP
    DC1F 1A             LD A,(DE)
    DC20 70             LD (HL),B
    DC21 BF             CP A
    DC22 C0             RET NZ
    DC23 23             INC HL
    DC24 10 0F          DJNZ DC35
    DC26 C0             RET NZ
    DC27 E1             POP HL
    DC28 20 AF          JR NZ,DBD9
    DC2A 00             NOP
    DC2B 11 00 0F       LD DE,0F00
    DC2E 19             ADD HL,DE
    DC2F 22 A2 0F       LD (0FA2),HL
    DC32 36 A0          LD (HL),A0
    DC34 C0             RET NZ
    DC35 DF             RST 18
    DC36 00             NOP
    DC37 00             NOP
    DC38 00             NOP
    DC39 0F             RRCA
    DC3A 00             NOP
    DC3B 2A A2 0F       LD HL,(0FA2)
    DC3E 7E             LD A,(HL)
    DC3F E6 80          AND 80
    DC41 CF             RST 08
    DC42 A9             XOR C
    DC43 00             NOP
    DC44 7E             LD A,(HL)
    DC45 EF             RST 28
    DC46 0F             RRCA
    DC47 A8             XOR B
    DC48 C0             RET NZ
    DC49 AF             XOR A
    DC4A 00             NOP
    DC4B 23             INC HL
    DC4C B6             OR (HL)
    DC4D FF             RST 38
    DC4E B7             OR A
    DC4F 00             NOP
    DC50 23             INC HL
    DC51 7F             LD A,A
    DC52 AF             XOR A
    DC53 EB             EX DE,HL
    DC54 00             NOP
    DC55 0F             RRCA
    DC56 00             NOP
    DC57 00             NOP
    DC58 12             LD (DE),A
    DC59 7F             LD A,A
    DC5A 23             INC HL
    DC5B 88             ADC A,B
    DC5C 47             LD B,A
    DC5D 1F             RRA
    DC5E 77             LD (HL),A
    DC5F 23             INC HL
    DC60 88             ADC A,B
    DC61 4F             LD C,A
    DC62 0D             DEC C
    DC63 C2 C2 0F       JP NZ,0FC2
    DC66 1A             LD A,(DE)
    DC67 B8             CP B
    DC68 C0             RET NZ
    DC69 2F             CPL
    DC6A A2             AND D
    DC6B 00             NOP
    DC6C 32 2F 23       LD (232F),A
    DC6F 7E             LD A,(HL)
    DC70 20 EF          JR NZ,DC61
    DC72 24             INC H
    DC73 EE 20          XOR 20
    DC75 CF             RST 08
    DC76 D4 00 0C       CALL NC,0C00
    DC79 5F             LD E,A
    DC7A CD 49 00       CALL 0049
    DC7D 2F             CPL
    DC7E 7E             LD A,(HL)
    DC7F 2B             DEC HL
    DC80 E6 2F          AND 2F
    DC82 EE 20          XOR 20
    DC84 C0             RET NZ
    DC85 DF             RST 18
    DC86 00             NOP
    DC87 23             INC HL
    DC88 78             LD A,B
    DC89 EF             RST 28
    DC8A 08             EX AF,AF'
    DC8B 2B             DEC HL
    DC8C C0             RET NZ
    DC8D 0F             RRCA
    DC8E 01 06 00       LD BC,0006
    DC91 3F             CCF
    DC92 61             LD H,C
    DC93 0E 09          LD C,09
    DC95 CF             RST 08
    DC96 49             LD C,C
    DC97 01 04 CF       LD BC,CF04
    DC9A FC 00 22       CALL M,2200
    DC9D 7F             LD A,A
    DC9E E6 08          AND 08
    DCA0 29             ADD HL,HL
    DCA1 CF             RST 08
    DCA2 19             ADD HL,DE
    DCA3 01 36 6F       LD BC,6F36
    DCA6 0E 0F          LD C,0F
    DCA8 C1             POP BC
    DCA9 4F             LD C,A
    DCAA 01 C3 01       LD BC,01C3
    DCAD 0F             RRCA
    DCAE 21 5F 01       LD HL,015F
    DCB1 CF             RST 08
    DCB2 37             SCF
    DCB3 01 C0 DF       LD BC,DFC0
    DCB6 00             NOP
    DCB7 2A 60 0F       LD HL,(0F60)
    DCBA 22 A4 00       LD (00A4),HL
    DCBD CF             RST 08
    DCBE 37             SCF
    DCBF 01 C0 DF       LD BC,DFC0
    DCC2 00             NOP
    DCC3 2A A0 0F       LD HL,(0FA0)
    DCC6 11 0C 00       LD DE,000C
    DCC9 1F             RRA
    DCCA D1             POP DE
    DCCB E9             JP HL
    DCCC E1             POP HL
    DCCD EF             RST 28
    DCCE 01 86 00       LD BC,0086
    DCD1 CF             RST 08
    DCD2 A6             AND (HL)
    DCD3 00             NOP
    DCD4 E1             POP HL
    DCD5 CF             RST 08
    DCD6 37             SCF
    DCD7 01 E1 7F       LD BC,7FE1
    DCDA 23             INC HL
    DCDB B6             OR (HL)
    DCDC E0             RET PO
    DCDD CF             RST 08
    DCDE 7E             LD A,(HL)
    DCDF E6 20          AND 20
    DCE1 7F             LD A,A
    DCE2 C2 51 01       JP NZ,0151
    DCE5 0F             RRCA
    DCE6 4F             LD C,A
    DCE7 3E F1          LD A,F1
    DCE9 DF             RST 18
    DCEA 01 B7 C0       LD BC,C0B7
    DCED 5F             LD E,A
    DCEE 01 0D C0       LD BC,C00D
    DCF1 5F             LD E,A
    DCF2 01 C9 00       LD BC,00C9
    DCF5 0F             RRCA
    DCF6 00             NOP
    DCF7 00             NOP
    DCF8 00             NOP
    DCF9 0F             RRCA
    DCFA 00             NOP
    DCFB 00             NOP
    DCFC 00             NOP
    DCFD CF             RST 08
    DCFE A6             AND (HL)
    DCFF 00             NOP
    ..which seems at least partially corrupted to me.
    I've obtained a dump of the PROMs for you from another owner of the drive.
    FD180.dat.zip

    It does indeed appear that the low order nybble is flapping around in your dump for some reason.

    Also a disassembly listing courtesy RedSkullDC.

    Code:
    RAM:DC00             ; ---------------------------------------------------------------------------
    RAM:DC00
    RAM:DC00             DISK_ENTRY:
    RAM:DC00 F3                          di
    RAM:DC01 21 A2 00                    ld      hl, 0A2h        ; Do a call and return to detect where we are running from
    RAM:DC04 F9                          ld      sp, hl
    RAM:DC05 36 C9                       ld      (hl), 0C9h
    RAM:DC07 CD A2 00                    call    FDD_IO_ADDRESS
    RAM:DC0A EB                          ex      de, hl          ; DE = $00A2
    RAM:DC0B 2A A0 00                    ld      hl, (word_A0)   ; HL now contains return address off stack $DC0A
    RAM:DC0E 2E 00                       ld      l, 0
    RAM:DC10 E5                          push    hl              ; HL = $DC00
    RAM:DC11 01 1D 00                    ld      bc, 1Dh
    RAM:DC14 09                          add     hl, bc          ; HL = $DC1D
    RAM:DC15 E5                          push    hl
    RAM:DC16 E1                          pop     hl
    RAM:DC17 0E 1A                       ld      c, 1Ah
    RAM:DC19 09                          add     hl, bc          ; HL = $DC37
    RAM:DC1A 06 BD                       ld      b, 0BDh
    RAM:DC1C EB                          ex      de, hl          ; DE = $DC37, HL = $00A2
    RAM:DC1D 3B                          dec     sp
    RAM:DC1E 3B                          dec     sp
    RAM:DC1F 1A                          ld      a, (de)         ; Copy $DC37 code to $00A2
    RAM:DC20 77                          ld      (hl), a
    RAM:DC21 BE                          cp      (hl)            ; check we are writing to RAM
    RAM:DC22 C0                          ret     nz
    RAM:DC23 23                          inc     hl
    RAM:DC24 13                          inc     de
    RAM:DC25 05                          dec     b
    RAM:DC26 C0                          ret     nz              ; loop to $DC1E while B not ZERO
    RAM:DC27 E1                          pop     hl              ; $DC00
    RAM:DC28 2A A0 00                    ld      hl, (word_A0)
    RAM:DC2B 11 00 02                    ld      de, 200h        ; $DE00
    RAM:DC2E 19                          add     hl, de
    RAM:DC2F 22 A2 00                    ld      (FDD_IO_ADDRESS), hl ; Controller accessed through 3 mem address ($DE00-$DE02)
    RAM:DC32 36 A0                       ld      (hl), 0A0h
    RAM:DC34 C3 D4 00                    jp      boot_disk       ; Jumpt to relocated code in RAM
    
    # Following code is relocated to RAM.
    # It does not execute here.
    
    
    RAM:DC37             DISK_CODE:
    RAM:DC37 00                          nop
    RAM:DC38 00                          nop
    RAM:DC39 00                          nop
    RAM:DC3A 00                          nop
    RAM:DC3B 2A A2 00                    ld      hl, (FDD_IO_ADDRESS)
    RAM:DC3E 7E                          ld      a, (hl)
    RAM:DC3F E6 80                       and     80h
    RAM:DC41 CA A9 00                    jp      z, wait_data_available
    RAM:DC44 7E                          ld      a, (hl)
    RAM:DC45 E6 0F                       and     0Fh
    RAM:DC47 A8                          xor     b
    RAM:DC48 C2 A9 00                    jp      nz, wait_data_available
    RAM:DC4B 23                          inc     hl
    RAM:DC4C B6                          or      (hl)
    RAM:DC4D F2 B7 00                    jp      p, loc_B7
    RAM:DC50 23                          inc     hl
    RAM:DC51 7E                          ld      a, (hl)
    RAM:DC52 AF                          xor     a
    RAM:DC53 EB                          ex      de, hl
    RAM:DC54 06 00                       ld      b, 0
    RAM:DC56 00                          nop
    RAM:DC57 00                          nop
    RAM:DC58 1A                          ld      a, (de)
    RAM:DC59 77                          ld      (hl), a
    RAM:DC5A 23                          inc     hl
    RAM:DC5B 88                          adc     a, b
    RAM:DC5C 47                          ld      b, a
    RAM:DC5D 1A                          ld      a, (de)
    RAM:DC5E 77                          ld      (hl), a
    RAM:DC5F 23                          inc     hl
    RAM:DC60 88                          adc     a, b
    RAM:DC61 47                          ld      b, a
    RAM:DC62 0D                          dec     c
    RAM:DC63 C2 C3 00                    jp      nz, read_2_bytes
    RAM:DC66 1A                          ld      a, (de)
    RAM:DC67 B8                          cp      b
    RAM:DC68 C9                          ret
    RAM:DC69             ; ---------------------------------------------------------------------------
    RAM:DC69
    RAM:DC69             RELOC_D4:
    RAM:DC69 2A A2 00                    ld      hl, (FDD_IO_ADDRESS)
    RAM:DC6C 36 20                       ld      (hl), 20h ; ' '
    RAM:DC6E 23                          inc     hl
    RAM:DC6F 7E                          ld      a, (hl)
    RAM:DC70 2B                          dec     hl
    RAM:DC71 E6 24                       and     24h ; '$'
    RAM:DC73 EE 20                       xor     20h ; ' '
    RAM:DC75 C2 D4 00                    jp      nz, boot_disk
    RAM:DC78 0E 5E                       ld      c, 5Eh ; '^'
    RAM:DC7A CD 49 01                    call    sub_149
    RAM:DC7D 23                          inc     hl
    RAM:DC7E 7E                          ld      a, (hl)
    RAM:DC7F 2B                          dec     hl
    RAM:DC80 E6 24                       and     24h ; '$'
    RAM:DC82 EE 20                       xor     20h ; ' '
    RAM:DC84 C2 D4 00                    jp      nz, boot_disk
    RAM:DC87 23                          inc     hl
    RAM:DC88 7E                          ld      a, (hl)
    RAM:DC89 E6 08                       and     8
    RAM:DC8B 2B                          dec     hl
    RAM:DC8C CA 07 01                    jp      z, SEEK_00
    RAM:DC8F 06 08                       ld      b, 8
    RAM:DC91 36 61                       ld      (hl), 61h ; 'a'
    RAM:DC93 0E 0F                       ld      c, 0Fh
    RAM:DC95 CD 49 01                    call    sub_149
    RAM:DC98 05                          dec     b
    RAM:DC99 C2 FC 00                    jp      nz, loc_FC
    RAM:DC9C 23                          inc     hl
    RAM:DC9D 7E                          ld      a, (hl)
    RAM:DC9E E6 08                       and     8
    RAM:DCA0 2B                          dec     hl
    RAM:DCA1 C2 19 01                    jp      nz, AT_TRACK_00
    RAM:DCA4 36 60                       ld      (hl), 60h ; '`'
    RAM:DCA6 0E 0F                       ld      c, 0Fh
    RAM:DCA8 CD 49 01                    call    sub_149
    RAM:DCAB C3 07 01                    jp      SEEK_00
    RAM:DCAE             ; ---------------------------------------------------------------------------
    RAM:DCAE 21 5F 01                    ld      hl, 15Fh
    RAM:DCB1 CD 37 01                    call    sub_137
    RAM:DCB4 C2 D4 00                    jp      nz, boot_disk
    RAM:DCB7 2A 69 02                    ld      hl, (word_269)
    RAM:DCBA 22 A4 00                    ld      (word_A4), hl
    RAM:DCBD CD 37 01                    call    sub_137
    RAM:DCC0 C2 D4 00                    jp      nz, boot_disk
    RAM:DCC3 2A A4 00                    ld      hl, (word_A4)
    RAM:DCC6 11 0C 00                    ld      de, 0Ch
    RAM:DCC9 19                          add     hl, de
    RAM:DCCA D1                          pop     de
    RAM:DCCB E9                          jp      (hl)
    RAM:DCCC             ; ---------------------------------------------------------------------------
    RAM:DCCC E5                          push    hl
    RAM:DCCD EB                          ex      de, hl
    RAM:DCCE 01 86 00                    ld      bc, 86h
    RAM:DCD1 CD A6 00                    call    DO_DISK_IO      ; on entry DE = Buffer Address, C = words to read
    RAM:DCD4 E1                          pop     hl
    RAM:DCD5 C2 37 01                    jp      nz, sub_137
    RAM:DCD8 E5                          push    hl
    RAM:DCD9 7E                          ld      a, (hl)
    RAM:DCDA 23                          inc     hl
    RAM:DCDB B6                          or      (hl)
    RAM:DCDC E1                          pop     hl
    RAM:DCDD C9                          ret
    RAM:DCDE             ; ---------------------------------------------------------------------------
    RAM:DCDE 7E                          ld      a, (hl)
    RAM:DCDF E6 20                       and     20h ; ' '
    RAM:DCE1 79                          ld      a, c
    RAM:DCE2 C2 51 01                    jp      nz, loc_151
    RAM:DCE5 07                          rlca
    RAM:DCE6 4F                          ld      c, a
    RAM:DCE7 3E FF                       ld      a, 0FFh
    RAM:DCE9 D6 01                       sub     1
    RAM:DCEB B7                          or      a
    RAM:DCEC C2 54 01                    jp      nz, loc_154
    RAM:DCEF 0D                          dec     c
    RAM:DCF0 C2 52 01                    jp      nz, loc_152
    RAM:DCF3 C9                          ret
    RAM:DCF4             ; ---------------------------------------------------------------------------
    RAM:DCF4 00                          nop
    RAM:DCF5 00                          nop
    RAM:DCF6 00                          nop
    RAM:DCF7 00                          nop
    RAM:DCF8 00                          nop
    RAM:DCF9 00                          nop
    RAM:DCFA 00                          nop
    RAM:DCFB 00                          nop
    RAM:DCFC 00                          nop
    RAM:DCFD C3 A6 00                    jp      DO_DISK_IO      ; on entry DE = Buffer Address, C = words to read
    RAM:DCFD             ; ---------------------------------------------------------------------------
    
    
    #Code from DC37 once it has been re-located to $00A0
    
    
    RAM:00A0 00 00       word_A0:        dw 0                    ; DATA XREF: RAM:DC0B↓r
    RAM:00A0                                                     ; RAM:DC28↓r
    RAM:00A2 00 00       FDD_IO_ADDRESS: dw 0                    ; CODE XREF: RAM:DC07↓p
    RAM:00A2                                                     ; DATA XREF: DO_DISK_IO↓r ...
    RAM:00A4 00 00       word_A4:        dw 0                    ; DATA XREF: DO_DISK_IO+7F↓w
    RAM:00A4                                                     ; DO_DISK_IO+88↓r ...
    RAM:00A6
    RAM:00A6             ; =============== S U B R O U T I N E =======================================
    RAM:00A6
    RAM:00A6             ; on entry DE = Buffer Address, C = words to read
    RAM:00A6
    RAM:00A6             DO_DISK_IO:                             ; CODE XREF: sub_137+5↓p
    RAM:00A6                                                     ; RAM:0168↓j ...
    RAM:00A6 2A A2 00                    ld      hl, (FDD_IO_ADDRESS) ; Set to $DE00 in this case
    RAM:00A9
    RAM:00A9             wait_data_available:                    ; CODE XREF: DO_DISK_IO+6↓j
    RAM:00A9                                                     ; DO_DISK_IO+D↓j ...
    RAM:00A9 7E                          ld      a, (hl)
    RAM:00AA E6 80                       and     80h
    RAM:00AC CA A9 00                    jp      z, wait_data_available
    RAM:00AF 7E                          ld      a, (hl)
    RAM:00B0 E6 0F                       and     0Fh
    RAM:00B2
    RAM:00B2             loc_B2:
    RAM:00B2 A8                          xor     b
    RAM:00B3 C2 A9 00                    jp      nz, wait_data_available
    RAM:00B6 23                          inc     hl
    RAM:00B7
    RAM:00B7             loc_B7:                                 ; CODE XREF: DO_DISK_IO+12↓j
    RAM:00B7                                                     ; RAM:DC4D↓j
    RAM:00B7 B6                          or      (hl)
    RAM:00B8 F2 B7 00                    jp      p, loc_B7
    RAM:00BB 23                          inc     hl
    RAM:00BC 7E                          ld      a, (hl)
    RAM:00BD AF                          xor     a
    RAM:00BE EB                          ex      de, hl          ; HL now == Buffer Address, DE = IO Reg address
    RAM:00BF 06 00                       ld      b, 0
    RAM:00C1 00                          nop
    RAM:00C2 00                          nop
    RAM:00C3
    RAM:00C3             read_2_bytes:                           ; CODE XREF: DO_DISK_IO+28↓j
    RAM:00C3                                                     ; RAM:DC63↓j
    RAM:00C3 1A                          ld      a, (de)
    RAM:00C4 77                          ld      (hl), a
    RAM:00C5 23                          inc     hl
    RAM:00C6 88                          adc     a, b            ; simple CRC byte
    RAM:00C7 47                          ld      b, a
    RAM:00C8 1A                          ld      a, (de)
    RAM:00C9 77                          ld      (hl), a
    RAM:00CA 23                          inc     hl
    RAM:00CB 88                          adc     a, b
    RAM:00CC 47                          ld      b, a
    RAM:00CD 0D                          dec     c
    RAM:00CE C2 C3 00                    jp      nz, read_2_bytes
    RAM:00D1 1A                          ld      a, (de)         ; Compare CRC
    RAM:00D2 B8                          cp      b
    RAM:00D3
    RAM:00D3             locret_D3:
    RAM:00D3 C9                          ret
    RAM:00D4             ; ---------------------------------------------------------------------------
    RAM:00D4
    RAM:00D4             boot_disk:                              ; CODE XREF: DO_DISK_IO+3A↓j
    RAM:00D4                                                     ; DO_DISK_IO+49↓j ...
    RAM:00D4 2A A2 00                    ld      hl, (FDD_IO_ADDRESS) ; Set to $DE00 in this case
    RAM:00D7 36 20                       ld      (hl), 20h ; ' ' ; Activate Drive #0
    RAM:00D9 23                          inc     hl
    RAM:00DA 7E                          ld      a, (hl)
    RAM:00DB 2B                          dec     hl
    RAM:00DC E6 24                       and     24h ; '$'
    RAM:00DE EE 20                       xor     20h ; ' '
    RAM:00E0 C2 D4 00                    jp      nz, boot_disk
    RAM:00E3 0E 5E                       ld      c, 5Eh ; '^'
    RAM:00E5 CD 49 01                    call    sub_149
    RAM:00E8 23                          inc     hl
    RAM:00E9 7E                          ld      a, (hl)
    RAM:00EA 2B                          dec     hl
    RAM:00EB E6 24                       and     24h ; '$'
    RAM:00ED EE 20                       xor     20h ; ' '
    RAM:00EF C2 D4 00                    jp      nz, boot_disk
    RAM:00F2 23                          inc     hl
    RAM:00F3 7E                          ld      a, (hl)
    RAM:00F4 E6 08                       and     8
    RAM:00F6 2B                          dec     hl
    RAM:00F7 CA 07 01                    jp      z, SEEK_00
    RAM:00FA 06 08                       ld      b, 8
    RAM:00FC
    RAM:00FC             loc_FC:                                 ; CODE XREF: DO_DISK_IO+5E↓j
    RAM:00FC                                                     ; RAM:DC99↓j
    RAM:00FC 36 61                       ld      (hl), 61h ; 'a' ; Step In command
    RAM:00FE 0E 0F                       ld      c, 0Fh
    RAM:0100 CD 49 01                    call    sub_149
    RAM:0103 05                          dec     b
    RAM:0104 C2 FC 00                    jp      nz, loc_FC
    RAM:0107
    RAM:0107             SEEK_00:                                ; CODE XREF: DO_DISK_IO+51↑j
    RAM:0107                                                     ; DO_DISK_IO+70↓j ...
    RAM:0107 23                          inc     hl
    RAM:0108 7E                          ld      a, (hl)
    RAM:0109 E6 08                       and     8               ; TRACK_00 status bit
    RAM:010B 2B                          dec     hl
    RAM:010C C2 19 01                    jp      nz, AT_TRACK_00
    RAM:010F 36 60                       ld      (hl), 60h ; '`' ; Step OUT command
    RAM:0111 0E 0F                       ld      c, 0Fh
    RAM:0113 CD 49 01                    call    sub_149
    RAM:0116 C3 07 01                    jp      SEEK_00
    RAM:0119             ; ---------------------------------------------------------------------------
    RAM:0119
    RAM:0119             AT_TRACK_00:                            ; CODE XREF: DO_DISK_IO+66↑j
    RAM:0119                                                     ; RAM:DCA1↓j
    RAM:0119 21 5F 01                    ld      hl, 15Fh
    RAM:011C CD 37 01                    call    sub_137
    RAM:011F C2 D4 00                    jp      nz, boot_disk
    RAM:0122 2A 69 02                    ld      hl, (word_269)
    RAM:0125 22 A4 00                    ld      (word_A4), hl
    RAM:0128 CD 37 01                    call    sub_137
    RAM:012B C2 D4 00                    jp      nz, boot_disk
    RAM:012E 2A A4 00                    ld      hl, (word_A4)
    RAM:0131 11 0C 00                    ld      de, 0Ch
    RAM:0134 19                          add     hl, de
    RAM:0135 D1                          pop     de
    RAM:0135             ; End of function DO_DISK_IO
    RAM:0135
    RAM:0136 E9                          jp      (hl)            ; jump to loaded boot sector code
    RAM:0137
    RAM:0137             ; =============== S U B R O U T I N E =======================================
    RAM:0137
    RAM:0137
    RAM:0137             sub_137:                                ; CODE XREF: DO_DISK_IO+76↑p
    RAM:0137                                                     ; DO_DISK_IO+82↑p ...
    RAM:0137 E5                          push    hl
    RAM:0138 EB                          ex      de, hl
    RAM:0139 01 86 00                    ld      bc, 86h
    RAM:013C CD A6 00                    call    DO_DISK_IO      ; on entry DE = Buffer Address, C = words to read
    RAM:013F E1                          pop     hl
    RAM:0140 C2 37 01                    jp      nz, sub_137
    RAM:0143 E5                          push    hl
    RAM:0144 7E                          ld      a, (hl)
    RAM:0145 23                          inc     hl
    RAM:0146 B6                          or      (hl)
    RAM:0147 E1                          pop     hl
    RAM:0147             ; End of function sub_137
    RAM:0147
    RAM:0148             ; ---------------------------------------------------------------------------
    RAM:0148 C9                          ret
    RAM:0149
    RAM:0149             ; =============== S U B R O U T I N E =======================================
    RAM:0149
    RAM:0149
    RAM:0149             sub_149:                                ; CODE XREF: DO_DISK_IO+3F↑p
    RAM:0149                                                     ; DO_DISK_IO+5A↑p ...
    RAM:0149 7E                          ld      a, (hl)
    RAM:0149             ; End of function sub_149
    RAM:0149
    RAM:014A             ; ---------------------------------------------------------------------------
    RAM:014A E6 20                       and     20h ; ' '
    RAM:014C 79                          ld      a, c
    RAM:014D C2 51 01                    jp      nz, loc_151
    RAM:0150 07                          rlca
    RAM:0151
    RAM:0151             loc_151:                                ; CODE XREF: RAM:014D↑j
    RAM:0151                                                     ; RAM:DCE2↓j
    RAM:0151 4F                          ld      c, a
    RAM:0152
    RAM:0152             loc_152:                                ; CODE XREF: RAM:015B↓j
    RAM:0152                                                     ; RAM:DCF0↓j
    RAM:0152 3E FF                       ld      a, 0FFh
    RAM:0154
    RAM:0154             loc_154:                                ; CODE XREF: RAM:0157↓j
    RAM:0154                                                     ; RAM:DCEC↓j
    RAM:0154 D6 01                       sub     1
    RAM:0156 B7                          or      a
    RAM:0157 C2 54 01                    jp      nz, loc_154
    RAM:015A 0D                          dec     c
    RAM:015B C2 52 01                    jp      nz, loc_152
    RAM:015E C9                          ret
    RAM:015F             ; ---------------------------------------------------------------------------
    RAM:015F 00                          nop
    RAM:0160             ; ---------------------------------------------------------------------------
    RAM:0160 00                          nop
    RAM:0161 00                          nop
    RAM:0162 00                          nop
    RAM:0163 00                          nop
    RAM:0164 00                          nop
    RAM:0165 00                          nop
    RAM:0166 00                          nop
    RAM:0167 00                          nop
    RAM:0168 C3 A6 00                    jp      DO_DISK_IO      ; on entry DE = Buffer Address, C = words to read
    RAM:0168             ; ---------------------------------------------------------------------------
    RAM:016B 00                          db    0

  6. #16

    Default

    Oh. Now that is useful! I’m going to have to move the Sorcerer up the priority ladder. Now in second place, behind an Intel MDS..

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •