;⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
;≥ DISASSEMBLED FILE - DONE WITH DISASM 1.0· ≥
;≥ Date:  1-06-2008  Time: 17:21             ≥
;≥ (c) 1996 Channex aka Lasse S. Tassing     ≥
;≥ Email: ltassing.ite.dk                    ≥
;¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
; IN $0,$1 = audio on Sio Buss
; IN $2,$3 = index pulse enable
; IN $4,$5 = Transmit data on Txd sio buss output inverted
; IN $6,$7 = Transmit data on Rxd sio Buss output inverted
; IN $8,$9 = DDEN line on FDC High /Low
; IN $A,$B = Motor OFF/ON
; IN $C,$D = Generate Index pulse
; IN $E,$F = Enable/disable Ramcharger ram from $0000 to $7FFF
             Disable all hardware when ram is enabled

        STAT1R = $1000                  ;Read only. Clear latches
                                        ;Bit0 = drive select switch 1
                                        ;Bit1 = drive select switch 2
                                        ;Bit2 = density select switch. set at boot up only
                                        ;Bit3 = n/c
                                        ;Bit4 = Track button
                                        ;Bit5 = ID button
                                        ;Bit6 = Error button
                                        ;Bit7 = Write protect from floppy mech
        STAT1 = $1001                   ;As above, doesn't clear latches
	STAT2 = $2000                   ;Read only
                                        ;Bit0 = Clock out on sio buss
                                        ;Bit1 = Clock in on sio buss
                                        ;Bit2 = Data out on sio buss
                                        ;Bit3 = Data in on sio buss
                                        ;Bit4 = +5V on sio buss
                                        ;bit5 = command on sio buss
                                        ;Bit6 = DRQ from FDC
                                        ;Bit7 = IRQ from FDC
        CONTROL = $3000                 ;First 4 bits. control for stepper motor. write only
        LED1 = $4FFF                    ;Bits0-6 Led display
                                        ;Bit7 = Busy Led
        LED2 = $5000                    ;Bits0-6 Led display
                                        ;Bit7 = ENPRE on FDC
        COMMANDFDC = $6000              ;Command register FDC write
        STATUSFDC = $6000               ;Status register FDC read
        TRACKFDC = $6001                ;Track register FDC read/write
	SECTORFDC = $6002               ;Sector register FDC read/write
	DATAFDC = $6003                 ;Data register FDC read/write
                                        ;7000 7fff ram 7800-7fff used
        RINVEC = $7800              	;Ram interupt vector 3 bytes
        Lb93 = $7803                    ;read sector 3 bytes
        Lb22 = $7806			;external main wait loop tie in 3bytes
        Lb30 = $7809                    ;external command tie in 3 bytes
        RESTORE = $780C                 ;Restore command FDC
        READSECT = $780D                ;Read sector command FDC
        WRITESECT = $780E               ;Write sector command FDC
        READADDR = $780F                ;Read address command FDC
        WRITETRK = $7810                ;Write track command FDC
        INTENB = $7811              	;enable major interupt rountine
        UNUSED1 = $7812                 ;contains $FB. not used
        UNUSED2 = $7813                 ;Contains $FB. not used
        LSPEEDF = $7814                 ;= FF if high bit is set on command
        HSFLAG = $7815			;= FF once lowspeed sio is complete then does highspeed sio
        FLAG?? = $7816                  ;?? some thing to do with density flag
        DENFLG = $7817              	;density flag 0=Single,1=Double,2=enhanced
        MOTORF = $7818                  ;Motor on off flag
	DCHNGFLG = $7819                ;disk change flag?
        WPMOFLG = $781A                 ;Motor on when disk inserted flag
        DENCST = $781B                  ;Check density of disk flag TRACK and ID buttons
        CPMLOD = $781C                  ;CP/M load flag. Buttons ERROR and ID
        FMTTOT = $781D              	;Format time out value. used for status command only
        STATUS0 = $781E                 ;Byte zero of status returned to consol
        FDCSTA = $781F              	;FDC status register copy
        CAUX12 = $7820                  ;Store for command frame aux bytes 1 & 2
        TRACKNUM = $7822                ;track number on disk to read/write
        SECTORN = $7823                 ;Sector number to read on track
        SECTORBUF = $7824               ;Pointer to sector buffer 7842 2 bytes
        FDCMSR = $7826              	;FDC master status register?
        CDLOOP1 = $7827                 ;Countdown loop 1 byte
        CDLOOP2 = $7828                 ; Countdownloop 1 byte
        FMTstacksave = $7829            ;format stack save?? 2 bytes
        FMTSTR = $782B                  ; format store. 00= single, 7F= enhanced,FF=double
        SECTAB = $782C			;pointer to sector table. format time 2bytes
        BASECD = $782E                  ;base store for a count up timer. 2 bytes
        BASECDSCRATCH = $7830           ;Scratch used for 782E 2 bytes
        MSPINDEL = $7832                ;Counter for motor spin delay? 2 bytes
        STAT1S = $7836                  ;Store for stat1 current state
        LEDERROR = $7838                ;Error store for front leds 2 bytes
        TLEDNUM1 = $783A                ;Track led number store 1
        TLEDNUM2 = $783B                ;track leb number store 2
        DENLET = $783C              	;led display for density A,b,C
        DNMLED = $783D              	;Drive number led pattern store
        BUSYLD = $783F			;Busy led status
        FREERAM = $7840                 ;pointer to first byte of free ram
        SECTBUF = $7842                 ;256 byte sector buffer 256 bytes
        BUFFER = $7942              	;General purpous Buffer 256 bytes
        STACKSAVE = $7A42               ;Stack pointer Save word
        STACK = $7A84                   ;CPU stack for main program loop 16 bytes. counts down
        STACKI = $7B84                  ;CPU stack for interupt (commands) 16 bytes
        Lb38 = $7F00			;Where external commands are stored and run
; ƒ[CODE]ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
; LABEL INSTR.  PARAMETER(s)              ADR/OPCODE    ASCII
        ORG     0000H
        DI                              ; 0000 F3       reset vector
        JP      Lb0                     ; 0001 C33B0D   jump to test routine
Lba:    JP      Lb1                     ; 0004 C3A10C   legal vector
        NOP                             ; 0007 00       .
;------------------------------------------------------------------------
                                        ; high speed recieve		
Lb2:    LD      A,(HL)                  ; 0008 7E    7   restart 08	
        RRCA                            ; 0009 0F    4   	
        JR      NC,Lb2                  ; 000A 30FC  7/12
Lb3:    LD      A,(HL)                  ; 000C 7E    7   	
        RRCA                            ; 000D 0F    4   .		
        JR      C,Lb3                   ; 000E 38FC  7/12   
        AND     D                       ; 0010 A2    4   .
        RET                             ; 0011 C9    10  50 t states with no branching
;------------------------------------------------------------------------
;delay           
Lb4:    DEC     BC                      ; 0012 0B       .
        LD      A,B                     ; 0013 78       x
        OR      C                       ; 0014 B1       .
        JR      NZ,Lb4                  ; 0015 20FB      .
        RET                             ; 0017 C9       .
;------------------------------------------------------------------------
                                        ; high speed send
Lb5:    LD      A,(HL)                  ; 0018 7E    7   load 
        AND     E                       ; 0019 A3    4   mask out all but clock out
        JR      NC,Lb5                  ; 001A 30FC  7/12   
Lb6:    LD      A,(HL)                  ; 001C 7E    7   get sio signals
        AND     E                       ; 001D A3    4    mask out all but clock out
        JR      C,Lb6                   ; 001E 38FC  7/12 
        IN      A,(C)                   ; 0020 ED78  12  
        RET                             ; 0022 C9    10   58 t states with no branching

LDTBL                                   ;Led display table bit patterns. inverted.
                                        ;Bit 0 = top bar, bit 1= top right
                                        ;bit 2 = bottom right. bit 3 = bottom
                                        ;bit 4 = bottom left. bit 5 = top left
                                        ;bit 6 = middle bar
        DB $C0                          ; 0023 C0       0
        DB $F9                          ; 0024 F9       1
        DB $A4                          ; 0025 A4       2
        DB $B0                          ; 0026 B0       3
        DB $99                          ; 0027 99       4
        DB $92                          ; 0028 92       5
        DB $82                          ; 0029 82       6
        DB $F8                          ; 002A F8       7
        DB $80                          ; 002B 80       8
        DB $98                          ; 002C 98       9
        DB $88                          ; 002D 88       A
        DB $83                          ; 002E 83       b
        DB $C6                          ; 002F C6       C
        DB $A1                          ; 0030 A1       d
        DB $86                          ; 0031 86       E
        DB $8E                          ; 0032 8E       F
                                        ; Commands for 1770 FDC
        DB $ff                          ; 0033 FF  Restore?? wrong number
        DB $80                          ; 0034 80  read sector, dis spin up seq    .
        DB $A2                          ; 0035 A2  write sector, dis write precomp
        DB $C0                          ; 0036 C0  read address     .
	DB $F2				; 0037 f2  write track,dis write precomp

;processor interupt starts here
        JP      RINVEC                  ; 0038 C30078   Jump to ram interupt vector
INTCONT PUSH    AF                      ; 003B F5       continues here. save A and F onto stack
        LD      A,(INTENB)              ; 003C 3A1178   ready to do interupt?
        OR      A                       ; 003F B7       set flags
        JR      NZ,Lb8                  ; 0040 203E     jump relative if not
        PUSH    BC                      ; 0042 C5       save registers
        PUSH    DE                      ; 0043 D5       onto stack
        PUSH    HL                      ; 0044 E5       .
        EX      AF,A'F'                 ; 0045 08       .
        PUSH    AF                      ; 0046 F5       .
        EXX                             ; 0047 D9       and 2ndery registers
        PUSH    BC                      ; 0048 C5       .
        PUSH    DE                      ; 0049 D5       .
        PUSH    HL                      ; 004A E5       .
        PUSH    IX                      ; 004B DDE5     ..
        PUSH    IY                      ; 004D FDE5     ..
        LD      HL,(STACKSAVE)          ; 004F 2A427A   temp stack pointer?
        LD      A,L                     ; 0052 7D       }
        OR      H                       ; 0053 B4       .
        JR      NZ,Lb9                  ; 0054 2004      .
        ADD     HL,SP                   ; 0056 39       9
        LD      (STACKSAVE),HL          ; 0057 22427A   save stack to 7a42
Lb9:    LD      SP,STACKI               ; 005A 31847B   set stack to 7b84
        EI                              ; 005D FB       .
        CALL    Lb10                    ; 005E CD6D01   get command frame and excaute
        XOR     A                       ; 0061 AF       .
        LD      (BUSYLD),A              ; 0062 323F78   2?x
        CALL    UPLED-1-2-B-E           ; 0065 CD120B   clear busy led?
        DI                              ; 0068 F3       .
        LD      HL,(STACKSAVE)          ; 0069 2A427A   recover stack pointer
        LD      SP,HL                   ; 006C F9       .put back in to SP
        LD      HL,$00                  ; 006D 210000   zero out
        LD      (STACKSAVE),HL          ; 0070 22427A   temp stack pointer
        POP     IY                      ; 0073 FDE1     ..
        POP     IX                      ; 0075 DDE1     ..
        POP     HL                      ; 0077 E1       .
        POP     DE                      ; 0078 D1       .
        POP     BC                      ; 0079 C1       .
        EXX                             ; 007A D9       .
        POP     AF                      ; 007B F1       .
        EX      AF,A'F'                 ; 007C 08       .
        POP     HL                      ; 007D E1       .
        POP     DE                      ; 007E D1       .
        POP     BC                      ; 007F C1       .
Lb8:    POP     AF                      ; 0080 F1       .
        EI                              ; 0081 FB       .
        RETI                            ; 0082 ED4D     .M
                                        ;Init 
Lb236:  IM      1                       ; 0084 ED56     interupt mode 1
        IN      A,($03)                 ; 0086 DB03     ..index
        IN      A,($04)                 ; 0088 DB04     ..TXD high
        IN      A,($06)                 ; 008A DB06     ..RXD high
        IN      A,($0A)                 ; 008C DB0A     ..motor off
        IN      A,($0C)                 ; 008E DB0C     ..ip 
        LD      SP,STACK                ; 0090 31847A   1.z stack pointer
        LD      A,$C3                   ; 0093 3EC3     >. set
        LD      (RINVEC),A              ; 0095 320078   2.x $7800
        LD      HL,INTCONT              ; 0098 213B00   !;. to
        LD      ($7801),HL              ; 009B 220178   ".x JP ($003B)
        LD      ($7803),A               ; 009E 320378   2.x set 7803 
        LD      HL,Lb169                ; 00A1 21A00C   !.. JP ($0CA0) RET
        LD      ($7804),HL              ; 00A4 220478   ".x set 7806
        LD      ($7806),A               ; 00A7 320678   2.x to JP($0CA0) RET
        LD      ($7807),HL              ; 00AA 220778   ".x set 7809
        LD      ($7809),A               ; 00AD 320978   2.x to JP($0CA0) RET
        LD      ($780A),HL              ; 00B0 220A78   ".x
        LD      A,$00                   ; 00B3 3E00     >.
        LD      ($7837),A               ; 00B5 323778   27x
        LD      A,(STAT1R)              ; 00B8 3A0010   :..
        LD      A,(STAT1)               ; 00BB 3A0110   :..
        LD      (STAT1S),A              ; 00BE 323678   26x
        AND     $04                     ; 00C1 E604     .. density switch
        ADD     A,$FF                   ; 00C3 C6FF     .. -1
        CCF                             ; 00C5 3F       complment carry flag
        SBC     A,A                     ; 00C6 9F       sub with carry. 
        AND     $01                     ; 00C7 E601     get low bit
        LD      ($7816),A               ; 00C9 321678   store in density byte
        XOR     A                       ; 00CC AF       . zero A
        LD      (STATUS0),A             ; 00CD 321E78   2.x
        LD      ($FDCSTA),A             ; 00D0 321F78   2.x
        LD      (CONTROL),A             ; 00D3 320030   2.0 steper motor
        LD      (BUSYLD),A              ; 00D6 323F78   2?x
        LD      (MOTORF),A              ; 00D9 321878   2.x
        LD      (DENFLG),A              ; 00DC 321778   2.x
        LD      ($7815),A               ; 00DF 321578   2.x
        LD      (DENCST),A              ; 00E2 321B78   2.x 
        LD      (CPMLOD),A              ; 00E5 321C78   2.x 
        LD      L,A                     ; 00E8 6F       o
        LD      H,A                     ; 00E9 67       g
        LD      (STACKSAVE),HL          ; 00EA 22427A   "Bz
        LD      ($782C),HL              ; 00ED 222C78   ",x
        LD      HL,$86BF                ; 00F0 21BF86   E- for front leds
        LD      (LEDERROR),HL           ; 00F3 223878   "8x
        LD      HL,$7842                ; 00F6 214278   !Bx
        LD      (SECTORBUF),HL          ; 00F9 222478   "$x pointer to buffer?
        LD      HL,$FFC2                ; 00FC 21C2FF   base counter for button read routine
        LD      ($782E),HL              ; 00FF 222E78   ".x
        LD      HL,$7B84                ; 0102 21847B   !.{ pointer to free ram?
        LD      (FREERAM),HL            ; 0105 224078   "@x
        DEC     A                       ; 0108 3D       =
        LD      ($7819),A               ; 0109 321978   2.x
        LD      (INTENB),A              ; 010C 321178   2.x
        LD      L,A                     ; 010F 6F       o
        LD      H,A                     ; 0110 67       g
        LD      ($7830),HL              ; 0111 223078   "0x
        LD      A,$FB                   ; 0114 3EFB     >.
        LD      (UNUSED1),A             ; 0116 321278   2.x
        LD      (UNUSED2),A             ; 0119 321378   2.x
        LD      A,$E0                   ; 011C 3EE0     format time out value. used for status command only
        LD      ($FMTTOT),A             ; 011E 321D78   store in Format timeout 
        LD      HL,$BFBF                ; 0121 21BFBF   -- for front led display
        LD      (TLEDNUM1),HL           ; 0124 223A78   ":x
        LD      (DENLET),HL             ; 0127 223C78   "<x
        CALL    Lb12                    ; 012A CD290B   .).
        CALL    DNUMSWITCH              ; 012D CDCE0B   ... drive number switch
        CALL    Lb14                    ; 0130 CD3509   .5. reset fdc?
        CALL    Lb15                    ; 0133 CDBE08   ... motor on?
        CALL    Lb16                    ; 0136 CDC107   ... step back to zero 
        LD      D,$08                   ; 0139 1608     ..
        CALL    Lb17                    ; 013B CDF007   ...step out to track 8?
        CALL    Lb16                    ; 013E CDC107   ...step back to track zero
        CALL    Lb18                    ; 0141 CD120C   Get FDC type. setup commands
        CALL    Lb19                    ; 0144 CD6D05   read sector 1, set density
        CALL    SETDENFLG               ; 0147 CDF20B   ...
        CALL    beep                    ; 014A CDDF0B   ... send audio beep
        EI                              ; 014D FB       enable interupts
        XOR     A                       ; 014E AF       zero A
        LD      (INTENB),A              ; 014F 321178   enable major interupt routine
;------------------------------------------------------------------- main wait loop
Lb27:   CALL    Lb22                    ; 0152 CD0678   wait loop call external
        CALL    Lb23                    ; 0155 CD440B   buttons
        CALL    Lb24                    ; 0158 CDE508   step out to track 40?
        LD      A,(DENCST)              ; 015B 3A1B78   :.x
        OR      A                       ; 015E B7       . set flags
        JR      Z,Lb25                  ; 015F 2807     (.
        CALL    Lb19                    ; 0161 CD6D05   go check density of disk
        XOR     A                       ; 0164 AF       . zero A
        LD      (DENCST),A              ; 0165 321B78   2.x
Lb25:   CALL    Lb26                    ; 0168 CDD401   ...
        JR      Lb27                    ; 016B 18E5     .. end wait loop
;----------------------------------------------------------------------------
Lb10:   IN      A,($04)                 ; 016D DB04     ..TXD high
        XOR     A                       ; 016F AF       zero A
        LD      ($7815),A               ; 0170 321578   2.x
        CALL    Lb28                    ; 0173 CD1802   ... check for command signal
        RET     NZ                      ; 0176 C0       .
        CALL    Lb29                    ; 0177 CDFD01   ... call get command frame
        RET     NZ                      ; 017A C0       . get out if drive num don't match
                                        ;jump to command routine------------------------------------
        LD      (CAUX12),DE             ; 017B ED532078  de=command frame aux bytes
        LD      A,$FF                   ; 017F 3EFF     >.b= device num c=command
        LD      (BUSYLD),A              ; 0181 323F78   2?x
        CALL    UPLED-1-2-B-E           ; 0184 CD120B   ...? set busy led?
        CALL    Lb30                    ; 0187 CD0978   call external command routine
        LD      A,C                     ; 018A 79       y
        RLCA                            ; 018B 07       .
        SBC     A,A                     ; 018C 9F       .
        LD      ($7814),A               ; 018D 321478   2.x
        LD      A,C                     ; 0190 79       y
        AND     $7F                     ; 0191 E67F     remove high bit
        LD      C,A                     ; 0193 4F       O
        LD      B,$09                   ; 0194 0609     number of commands 
        LD      HL,$1B9                 ; 0196 21B901   pointer to start of cmd table
Lb32:   LD      A,(HL)                  ; 0199 7E       load command
        INC     HL                      ; 019A 23       inc pointer
        CP      C                       ; 019B B9       command match?
        JR      Z,Lb31                  ; 019C 2806     get out if equal
        INC     HL                      ; 019E 23       inc pointer
        INC     HL                      ; 019F 23       inc pointer
        DJNZ    Lb32                    ; 01A0 10F7     Dec B and loop if not zero
        JR      Lb33                    ; 01A2 1808     no commands matched. go nend Nak
Lb31:   LD      A,(HL)                  ; 01A4 7E       load HL with jump address
        INC     HL                      ; 01A5 23       
        LD      H,(HL)                  ; 01A6 66       
        LD      L,A                     ; 01A7 6F       
        CALL    Lb34                    ; 01A8 CDB801   call command
        RET     Z                       ; 01AB C8       .
Lb33:   LD      BC,$82                  ; 01AC 018200   delay number
        CALL    Lb4                     ; 01AF CD1200   jump to delay
        LD      A,$4E                   ; 01B2 3E4E     load 'N'AK
        CALL    SSIOBYTE                ; 01B4 CD230A   go send byte  sio
        RET                             ; 01B7 C9       .

Lb34:   JP      (HL)                    ; 01B8 E9       jump command

        DB $4E                          ; 01B9 4E       command N
        WORD GETBLOCK                   ; 01BA 0103
        DB $4F                          ; 01BA 4f       command o
        WORD PUTBLOCK                   ; 01BD 4A03
        DB $50                          ; 01BF 50       Put
        WORD PUT                        ; 01C0 8D02
        DB $52                          ; 01C2 52       read
        WORD READ                       ; 01C3 7902
        DB $53                          ; 01C5 53       S status
        WORD STATUS                     ; 01C6 2502
        DB $57                          ; 01C8 57       W write
        WORD WRITE                      ; 01C9 9602     
        DB $58                          ; 01CB 58       command X
        WORD EXTERNALCMD                ; 01CC D802
        DB $21                          ; 01CE 21       format
        WORD FORMAT                     ; 01CF 8B03
        DB $22                          ; 01D1 22       format enhanced
        WORD FORMATENH                  ; 01D2 7E03
                                        ;----------------------------------
                                        ;CP/M LOAD button status check 
Lb26:   LD      A,(CPMLOD)              ; 01D4 3A1C78   :.x
        OR      A                       ; 01D7 B7       set flags
        RET     Z                       ; 01D8 C8       .
                                        ;load CP/M------------------------
        CALL    Lb36                    ; 01D9 CD6005   check if disk changed and test
        LD      HL,(SECTORBUF)          ; 01DC 2A2478   save buffer
        PUSH    HL                      ; 01DF E5       .
        LD      HL,$7F00                ; 01E0 21007F   place to put data
        LD      (SECTORBUF),HL          ; 01E3 222478   "$x
        LD      HL,$01                  ; 01E6 210100   sector to load
        LD      (CAUX12),HL             ; 01E9 222078   " x
        CALL    Lb37                    ; 01EC CD9504   go get sector 1
        POP     HL                      ; 01EF E1       .
        LD      (SECTORBUF),HL          ; 01F0 222478   "$x
        CP      $43                     ; 01F3 FE43     .C complete
        CALL    Z,Lb38                  ; 01F5 CC007F   ... call $7f00
        XOR     A                       ; 01F8 AF       .
        LD      (CPMLOD),A              ; 01F9 321C78   2.x
        RET                             ; 01FC C9       .
                                        ;----------------------------------------
                                        ; Command frame recieve, test and run
Lb29:   LD      HL,BUFFER               ; 01FD 214279   place to put command frame
        LD      B,$04                   ; 0200 0604     num of bytes to get?
        CALL    Lb39                    ; 0202 CD7C09   get command frame
        CALL    NZ,Lb40                 ; 0205 C49A0A   ... ??
        CALL    DNUMSWITCH              ; 0208 CDCE0B   ... get drive number switch
        LD      BC,BUFFER               ; 020B ED4B4279 device/command
        LD      DE,($7944)              ; 020F ED5B4479 aux bytes 1/2
        LD      L,B                     ; 0213 68       h
        LD      B,C                     ; 0214 41       A b= device number
        LD      C,L                     ; 0215 4D       M c= command
        CP      B                       ; 0216 B8       . compare command with device num
        RET                             ; 0217 C9       .

Lb28:   LD      B,$0A                   ; 0218 060A     ..
Lb41:   LD      A,(STAT2)               ; 021A 3A0020   :. valid 
        AND     $30                     ; 021D E630     .0 command signal?
        CP      $10                     ; 021F FE10     ..
        RET     NZ                      ; 0221 C0       .

        DJNZ    Lb41                    ; 0222 10F6     ..
        RET                             ; 0224 C9       .
STATUS
        CALL    Lb42                    ; 0225 CD0F0A   Send Ack
        CALL    Lb36                    ; 0228 CD6005   .`.
        CALL    Lb14                    ; 022B CD3509   .5.
        LD      A,(STATUSFDC)           ; 022E 3A0060   :.`
        AND     $40                     ; 0231 E640     keep bit 6 of fdc status register. write protect
        ADD     A,$FF                   ; 0233 C6FF     3F plus carry
        SBC     A,A                     ; 0235 9F       either 0 or FF depending on carry
        AND     $08                     ; 0236 E608     keep bit 3
        LD      C,A                     ; 0238 4F       O
        LD      A,(DENFLG)              ; 0239 3A1778   :.x
        OR      A                       ; 023C B7       set flags
        JR      Z,Lb43                  ; 023D 2805     (.
        ADD     A,$FE                   ; 023F C6FE     ..
        RRA                             ; 0241 1F       .
        AND     $A0                     ; 0242 E6A0     only get bits 7 and 5
Lb43:   LD      B,A                     ; 0244 47       G
        LD      A,(STATUS0)             ; 0245 3A1E78   :.x
        AND     $57                     ; 0248 E657     Bits 6,4,2,1,0
        OR      B                       ; 024A B0       .
        OR      C                       ; 024B B1       .
        LD      HL,BUFFER               ; 024C 214279   !By
        LD      (HL),A                  ; 024F 77       w
        INC     HL                      ; 0250 23       #
        CALL    SETDENFLG               ; 0251 CDF20B   ...
        LD      A,($FDCSTA)             ; 0254 3A1F78   load FDC status ram register
        CPL                             ; 0257 2F       invert
        LD      (HL),A                  ; 0258 77       store in buffer
        INC     HL                      ; 0259 23       point to next byte
        LD      A,($FMTTOT)             ; 025A 3A1D78   load format time out value
        LD      (HL),A                  ; 025D 77       store in buffer
        INC     HL                      ; 025E 23       point to next byte
        LD      A,($7826)               ; 025F 3A2678   :&x
        SRL     A                       ; 0262 CB3F     .?
        LD      (HL),A                  ; 0264 77       w
        LD      A,$43                   ; 0265 3E43     >C complete
        LD      HL,BUFFER               ; 0267 214279   buffer in HL
        LD      B,$04                   ; 026A 0604     number of bytes
        CALL    Lb44                    ; 026C CDAC09   go send
Lb12a:  LD      A,(STATUS0)             ; 026F 3A1E78   :.x
        AND     $18                     ; 0272 E618     ..
        LD      (STATUS0),A             ; 0274 321E78   2.x
        XOR     A                       ; 0277 AF       .
        RET                             ; 0278 C9       .
READ
        CALL    CHKSECTNUM              ; 0279 CD3C0C   Check sector will be on disk 
        JP      NZ,Lb40                 ; 027C C29A0A   ...
        CALL    Lb42                    ; 027F CD0F0A   send Ack
        CALL    Lb36                    ; 0282 CD6005   .
        CALL    Lb37                    ; 0285 CD9504   go read sector. A=C or E
        CALL    Lb46                    ; 0288 CDA109   go send A then data + chksum
        XOR     A                       ; 028B AF       .
        RET                             ; 028C C9       .
PUT
        CALL    Lb47                    ; 028D CDA504   ... 
        RET     NZ                      ; 0290 C0       Nak out
        CALL    SSIOBYTE                ; 0291 CD230A  send byte  sio 
        XOR     A                       ; 0294 AF       .
        RET                             ; 0295 C9       .
WRITE
        CALL    Lb47                    ; 0296 CDA504   get data and write sector 
        RET     NZ                      ; 0299 C0       .
        CP      $45                     ; 029A FE45      did it error out?
        JR      Z,Lb48                  ; 029C 2835     yes
        CALL    DATAINVERT              ; 029E CD890A   no. invert data in buffer
        CALL    Lb50                    ; 02A1 CDA60A   check is sector is 4 or greater
        LD      C,B                     ; 02A4 48       H
        LD      B,$00                   ; 02A5 0600     ..
        DEC     C                       ; 02A7 0D       .
        INC     BC                      ; 02A8 03       .
        LD      HL,(SECTORBUF)          ; 02A9 2A2478   *$x
        LD      DE,BUFFER               ; 02AC 114279   .By
        LDIR                            ; 02AF EDB0     ..
        CALL    Lb37                    ; 02B1 CD9504   go read sector
        CP      $45                     ; 02B4 FE45     .E
        JR      Z,Lb51                  ; 02B6 2813     (.
        CALL    Lb50                    ; 02B8 CDA60A   check if sector is 4 or greater  
        LD      HL,(SECTORBUF)          ; 02BB 2A2478   *$x
        LD      DE,BUFFER               ; 02BE 114279   .By
Lb52:   LD      A,(DE)                  ; 02C1 1A       this cannot work properly. neither DE or HL
        CP      (HL)                    ; 02C2 BE       are incremented. only 1st byte on sector is 
        JR      NZ,Lb51                 ; 02C3 2006     checked 128/256 times for write with read verify.
        DJNZ    Lb52                    ; 02C5 10FA     dec B register and jump if not zero
        LD      A,$43                   ; 02C7 3E43     >C complete
        JR      Lb48                    ; 02C9 1808     ..
Lb51:   LD      HL,$8C98                ; 02CB 21988C   P9
        CALL    UPLED-1-2-B-E           ; 02CE CD120B   Send P9 to front led
        LD      A,$45                   ; 02D1 3E45     >E error
Lb48:   CALL    SSIOBYTE                ; 02D3 CD230A   send byte  sio
        XOR     A                       ; 02D6 AF       .
        RET                             ; 02D7 C9       .

EXTERNALCMD:				; 			command X
        CALL    Lb42                    ; 02D8 CD0F0A   send Ack
        LD      A,($7821)               ; 02DB 3A2178   daux2
        AND     $01                     ; 02DE E601     aux 2 = 0?
        JR      Z,Lb53                  ; 02E0 2817     go straight to external routine
        LD      HL,$7F00                ; 02E2 21007F   buffer to put data
        LD      A,(CAUX12)              ; 02E5 3A2078   number of bytes to load Daux1
        LD      B,A                     ; 02E8 47       
        CALL    Lb39                    ; 02E9 CD7C09   get bytes
        JP      NZ,Lb54                 ; 02EC C2A00A   
        CALL    Lb55                    ; 02EF CD1B0A   send Ack
        LD      A,$43                   ; 02F2 3E43     'C'omplete
        CALL    SSIOBYTE                ; 02F4 CD230A   send byte  sio
        JR      Lb56                    ; 02F7 1806     jump relative always
Lb53:   CALL    Lb38                    ; 02F9 CD007F   call external command
        CALL    C,SSIOBYTE              ; 02FC DC230A   send byte  sio
Lb56:   XOR     A                       ; 02FF AF       zero A
        RET                             ; 0300 C9       .

GETBLOCK
        CALL    Lb42                    ; 0301 CD0F0A   send Ack
        CALL    Lb36                    ; 0304 CD6005   .`.
        LD      HL,PCB                  ; 0307 213E03   pointer to rom control block.
        LD      DE,BUFFER               ; 030A 114279   pointer to ram buffer
        LD      BC,$0C                  ; 030D 010C00   number of bytes to move
        LDIR                            ; 0310 EDB0     move bytes rom to ram
        LD      HL,$7945                ; 0312 214579   start with sect per track low
        LD      A,(DENFLG)              ; 0315 3A1778   default to 18
        CP      $02                     ; 0318 FE02     check for double..
        JR      NZ,Lb57                 ; 031A 2002     no .
        LD      (HL),$1A                ; 031C 361A     put 26 into sect per track
Lb57:   INC     HL                      ; 031E 23       set pointer to
        INC     HL                      ; 031F 23       record method
        ADD     A,$FF                   ; 0320 C6FF     ..
        SBC     A,A                     ; 0322 9F       .
        AND     $04                     ; 0323 E604     ..
        LD      (HL),A                  ; 0325 77       w
        INC     HL                      ; 0326 23       #
        CALL    Lb58                    ; 0327 CDB40A   ...call  num bytes per sector
        DEC     B                       ; 032A 05       -1
        LD      C,B                     ; 032B 48       H
        LD      B,$00                   ; 032C 0600     set high byte to zero
        INC     BC                      ; 032E 03       add 1
        LD      (HL),B                  ; 032F 70       put sect num high in
        INC     HL                      ; 0330 23       set pointer +1
        LD      (HL),C                  ; 0331 71       put in low byte
        LD      A,$43                   ; 0332 3E43     >C complete
        LD      HL,BUFFER               ; 0334 214279   buffer start to send
        LD      B,$0C                   ; 0337 060C     num of bytes to send..
        CALL    Lb44                    ; 0339 CDAC09   send bytes
        XOR     A                       ; 033C AF       .
        RET                             ; 033D C9       .
;percom control block
PCB
        DB $28                          ; 033E 28      number of tracks
        DB $01                          ; 033f 01      step rate
        DB $00                          ; 0340 00      sectors per track high
        DB $12                          ; 0341 12      sectors per track low
        DB $00                          ; 0342 00      number of sides -1.
        DB $00                          ; 0344 00      record method. 0=mf. 4=mfm
        DB $FF                          ; 0346 FF      bytes per sector high.
        DB $00                          ; 0347 00      bytes per sector low.
        DB $00                          ; 0348 00       .
        DP $00                          ; 0349 00       .

PUTBLOCK
        CALL    Lb42                    ; 034A CD0F0A   send Ack
        LD      B,$0C                   ; 034D 060C     number of bytes to get
        LD      HL,BUFFER               ; 034F 214279   place to put them
        CALL    Lb39                    ; 0352 CD7C09   get and caculate checksum
        JP      NZ,Lb54                 ; 0355 C2A00A   get out if chksum don't match
        CALL    Lb55                    ; 0358 CD1B0A   send Ack?
        CALL    Lb36                    ; 035B CD6005   .`.
        LD      A,($7947)               ; 035E 3A4779   :Gy record method 0=fm 4=mfm
        OR      A                       ; 0361 B7       . set flags
        JR      Z,Lb60                  ; 0362 280A     (.
        LD      A,($7948)               ; 0364 3A4879   bytes per sect high
        OR      A                       ; 0367 B7       set flags
        LD      A,$02                   ; 0368 3E02     2=enhanced
        JR      Z,Lb60                  ; 036A 2802     (.
        LD      A,$01                   ; 036C 3E01     1= double 0=single 2=enhanced
Lb60:   LD      (DENFLG),A              ; 036E 321778   2.x
        LD      ($7816),A               ; 0371 321678   2.x
        CALL    SETDENFLG               ; 0374 CDF20B   set dden + front led store
        LD      A,$43                   ; 0377 3E43     >C complete
        CALL    SSIOBYTE                ; 0379 CD230A   send byte  sio
        XOR     A                       ; 037C AF       set flags??
        RET                             ; 037D C9       .
                                        ;---------------------------------
FORMATENH
        LD      A,$02                   ; 037E 3E02     format enhanced
        LD      (DENFLG),A              ; 0380 321778   2.x
        LD      ($7816),A               ; 0383 321678   2.x
        CALL    SETDENFLG               ; 0386 CDF20B   set den type for front leds
        JR      Lb61                    ; 0389 180F     ..
FORMAT
        LD      HL,DENFLG               ; 038B 211778   format
        LD      A,(HL)                  ; 038E 7E       ~
        SUB     $02                     ; 038F D602     ..
        JR      NZ,Lb61                 ; 0391 2007      .
        LD      (HL),A                  ; 0393 77       w
        LD      ($7816),A               ; 0394 321678   2.x
        CALL    SETDENFLG               ; 0397 CDF20B   ...
Lb61:   CALL    Lb42                    ; 039A CD0F0A    send Ack
        LD      A,(DENFLG)              ; 039D 3A1778   :.x
        PUSH    AF                      ; 03A0 F5       .
        CALL    Lb36                    ; 03A1 CD6005   .`.
        POP     AF                      ; 03A4 F1       .
        LD      (DENFLG),A              ; 03A5 321778   2.x
        LD      ($7816),A               ; 03A8 321678   2.x
        CALL    SETDENFLG               ; 03AB CDF20B   ...
        CALL    Lb15                    ; 03AE CDBE08   turn motor on
        LD      HL,$FFFF                ; 03B1 21FFFF   !..
        LD      (CAUX12),HL             ; 03B4 222078   " x
        CALL    Lb58                    ; 03B7 CDB40A   set B to bytes per sector
        XOR     A                       ; 03BA AF       .
        LD      (TRACKNUM),A            ; 03BB 322278   2"x
        DEC     A                       ; 03BE 3D       =
        LD      HL,BUFFER               ; 03BF 214279   !By
Lb62:   LD      (HL),A                  ; 03C2 77       put FF in buffer
        INC     HL                      ; 03C3 23       #
        DJNZ    Lb62                    ; 03C4 10FC     fill buffer with FF
Lb72:   CALL    Lb63                    ; 03C6 CDF407   step to track 
        LD      A,$05                   ; 03C9 3E05     times to try
        LD      (CDLOOP2),A             ; 03CB 322878   2(x
Lb67:   CALL    Lb23                    ; 03CE CD440B   buttons
        CALL    Lb64                    ; 03D1 CD1306   format
        LD      ($FDCSTA),A             ; 03D4 321F78   2.x
        AND     $44                     ; 03D7 E644     .D
        JR      Z,Lb65                  ; 03D9 281B     (.
        LD      B,A                     ; 03DB 47       G
        AND     $40                     ; 03DC E640     .@
        LD      A,B                     ; 03DE 78       x
        JR      NZ,Lb66                 ; 03DF 2006      .
        LD      HL,CDLOOP2              ; 03E1 212878   !(x
        DEC     (HL)                    ; 03E4 35       5
        JR      NZ,Lb67                 ; 03E5 20E7      .
Lb66:   CALL    Lb68                    ; 03E7 CDF60A   ...
        LD      H,$8E                   ; 03EA 268E     &.
        CALL    Lb69                    ; 03EC CD050B   ...
        LD      HL,STATUS0              ; 03EF 211E78   !.x
        SET     2,(HL)                  ; 03F2 CBD6     ..
        JR      Lb70                    ; 03F4 1818     ..

Lb65:   LD      HL,TRACKNUM             ; 03F6 212278   !"x
        LD      A,(HL)                  ; 03F9 7E       ~
        CP      $4E                     ; 03FA FE4E     78 exceded FDC track counter?
        JR      Z,Lb71                  ; 03FC 2804     (.
        INC     (HL)                    ; 03FE 34       4
        INC     (HL)                    ; 03FF 34       4
        JR      Lb72                    ; 0400 18C4     ..
Lb71:   CALL    Lb23                    ; 0402 CD440B   buttons
        CALL    Lb73                    ; 0405 CD1504   go check format
        JR      NZ,Lb70                 ; 0408 2004      .
        LD      A,$43                   ; 040A 3E43     Complete
        JR      Lb74                    ; 040C 1802     ..
Lb70:   LD      A,$45                   ; 040E 3E45     Error
Lb74:   CALL    Lb75                    ; 0410 CD9709   ...
        XOR     A                       ; 0413 AF       .
        RET                             ; 0414 C9       .
                                        ;----------------------------------
Lb73:   CALL    Lb58                    ; 0415 CDB40A   load B with sector size
        LD      A,B                     ; 0418 78       x
        SRL     A                       ; 0419 CB3F     .?
        DEC     A                       ; 041B 3D       =
        LD      ($7829),A               ; 041C 322978   2)x
        XOR     A                       ; 041F AF       zero A
        LD      (TRACKNUM),A            ; 0420 322278   2"x
        LD      IY,BUFFER               ; 0423 FD214279 .!By
Lb86:   CALL    Lb63                    ; 0427 CDF407   step to track 0
        CALL    Lb76                    ; 042A CDB807   write track number to FDC
        LD      IX,$736                 ; 042D DD213607 sector order single/double
        LD      A,(DENFLG)              ; 0431 3A1778   :.x
        CP      $02                     ; 0434 FE02     ..
        JR      NZ,Lb77                 ; 0436 2004     
        LD      IX,$79D                 ; 0438 DD219D07  sector order enhanced
                                        ;format track
Lb77:   LD      A,(IX+$00)              ; 043C DD7E00    get sector order
        LD      (SECTORFDC),A           ; 043F 320260    write sector order to FDC
        LD      A,$05                   ; 0442 3E05     >.
        LD      (CDLOOP2),A             ; 0444 322878   2(x
Lb83:   LD      HL,(SECTORBUF)          ; 0447 2A2478   *$x
        CALL    Lb78                    ; 044A CDD505   ...
        JR      Z,Lb79                  ; 044D 2805     (.
        CALL    Lb80                    ; 044F CD6809   .h.
        JR      Lb81                    ; 0452 1805     ..
Lb79:   CALL    Lb14                    ; 0454 CD3509   .5.
        OR      $10                     ; 0457 F610     ..
Lb81:   AND     $1C                     ; 0459 E61C     ..
        JR      Z,Lb82                  ; 045B 281F     (.
        LD      HL,CDLOOP2              ; 045D 212878   !(x
        DEC     (HL)                    ; 0460 35       5
        JR      NZ,Lb83                 ; 0461 20E4      .
        CALL    Lb84                    ; 0463 CD7F0C   ...
        LD      (IY+$00),L              ; 0466 FD7500   .u.
        INC     IY                      ; 0469 FD23     .#
        LD      (IY+$00),H              ; 046B FD7400   .t.
        INC     IY                      ; 046E FD23     .#
        LD      HL,$8E98                ; 0470 21988E   !..
        CALL    Lb69                    ; 0473 CD050B   ...
        LD      HL,$7829                ; 0476 212978   !)x
        DEC     (HL)                    ; 0479 35       5
        JR      Z,Lb85                  ; 047A 2812     (.
Lb82:   INC     IX                      ; 047C DD23     .#
        LD      A,(IX+$00)              ; 047E DD7E00   .~.
        RLCA                            ; 0481 07       .
        JR      NC,Lb77                 ; 0482 30B8     0.

        LD      HL,TRACKNUM             ; 0484 212278   !"x
        INC     (HL)                    ; 0487 34       4
        INC     (HL)                    ; 0488 34       4
        LD      A,(HL)                  ; 0489 7E       ~
        CP      $4F                     ; 048A FE4F     .O
        JR      C,Lb86                  ; 048C 3899     8.

Lb85:   LD      HL,(BUFFER)             ; 048E 2A4279   *By
        INC     HL                      ; 0491 23       #
        LD      A,H                     ; 0492 7C       |
        OR      L                       ; 0493 B5       .
        RET                             ; 0494 C9       .
;---------------------------------------------------------------------
;this routine loads sector num stored in 7820 and stores to pointer located in 7824
Lb37:   CALL    TRKSECT                 ; 0495 CD570C   .W.
        XOR     A                       ; 0498 AF       zero A
        CALL    Lb88                    ; 0499 CDDA04   ...
        LD      B,$43                   ; 049C 0643     .C complete
        JR      Z,Lb89                  ; 049E 2802     (.
        LD      B,$45                   ; 04A0 0645     .E error
Lb89:   XOR     A                       ; 04A2 AF       .
        LD      A,B                     ; 04A3 78       x
        RET                             ; 04A4 C9       .

Lb47:   CALL    CHKSECTNUM              ; 04A5 CD3C0C   check sector will fit on disk
        JP      NZ,Lb40                 ; 04A8 C29A0A   set status bit
        CALL    Lb42                    ; 04AB CD0F0A   send Ack, set hs flag
        CALL    Lb90                    ; 04AE CD7309   get data from sio
        JP      NZ,Lb54                 ; 04B1 C2A00A   ...
        CALL    Lb55                    ; 04B4 CD1B0A   send Ack
Lb62a   CALL    Lb36                    ; 04B7 CD6005   check den/disk spinning
        CALL    TRKSECT                 ; 04BA CD570C   get track and sector for write
        LD      A,$FF                   ; 04BD 3EFF     >.
        CALL    Lb88                    ; 04BF CDDA04   setup and write sector
        LD      B,$43                   ; 04C2 0643     .C
        JR      Z,Lb91                  ; 04C4 2802     (.
        LD      B,$45                   ; 04C6 0645     .E
Lb91:   XOR     A                       ; 04C8 AF       .
        LD      A,B                     ; 04C9 78       x
        RET                             ; 04CA C9       .
                                        ;read and write sector 
XCMD2:					;write sector
        LD      A,$FF                   ; 04CB 3EFF     >.
        JR      Lb92                    ; 04CD 1801     ..jump always

XCMD1:  XOR     A                       ; 04CF AF       zero A
Lb92:   LD      C,A                     ; 04D0 4F       O
        LD      A,D                     ; 04D1 7A       z
        LD      (TRACKNUM),A            ; 04D2 322278   2"x
        LD      A,E                     ; 04D5 7B       {
        LD      (SECTORN),A             ; 04D6 322378   2#x
        LD      A,C                     ; 04D9 79       y

Lb88:   CALL    Lb93                    ; 04DA CD0378   ..x jump to Ram vector 
        OR      A                       ; 04DD B7       set flags
        LD      A,$C2                   ; 04DE 3EC2     >.
        JR      Z,Lb94                  ; 04E0 2802     (.
        LD      A,$8C                   ; 04E2 3E8C     >.
Lb94:   PUSH    AF                      ; 04E4 F5       .
        CALL    Lb15                    ; 04E5 CDBE08   turn motor on
        LD      A,$02                   ; 04E8 3E02     >.
        LD      (CDLOOP1),A             ; 04EA 322778   do this loop twice
Lb103:  CALL    Lb63                    ; 04ED CDF407   step to track NN
        LD      A,$05                   ; 04F0 3E05     >.
        LD      (CDLOOP2),A             ; 04F2 322878   2(x
Lb102:  CALL    Lb76                    ; 04F5 CDB807   set FDC to track num
        LD      A,(SECTORN)             ; 04F8 3A2378   set FDC to Sectornum
        LD      (SECTORFDC),A           ; 04FB 320260   2.`
        LD      HL,(SECTORBUF)          ; 04FE 2A2478   *$x
        POP     AF                      ; 0501 F1       .
        PUSH    AF                      ; 0502 F5       .
        JR      NZ,Lb95                 ; 0503 200A      .
        CALL    Lb78                    ; 0505 CDD505   read sector data
        CALL    DATAINVERT              ; 0508 CD890A   invert data in buffer
        JR      Z,Lb96                  ; 050B 280C     (.
        JR      Lb97                    ; 050D 1811     ..

Lb95:   CALL    DATAINVERT              ; 050F CD890A   invert data in buffer
        DI                              ; 0512 F3       .
        CALL    Lb98                    ; 0513 CDF405   write sector data
        EI                              ; 0516 FB       .
        JR      NZ,Lb97                 ; 0517 2007      .
Lb96:   CALL    Lb14                    ; 0519 CD3509   reset FDC?
        OR      $10                     ; 051C F610     ..
        JR      Lb99                    ; 051E 1803     ..
Lb97:   CALL    Lb80                    ; 0520 CD6809   wait for FDC to be free?
Lb99:   LD      ($FDCSTA),A             ; 0523 321F78   2.x
        AND     $7C                     ; 0526 E67C     fdc status
        JR      Z,Lb100                 ; 0528 282D     (-
        LD      B,A                     ; 052A 47       G
        AND     $40                     ; 052B E640     .@
        LD      A,B                     ; 052D 78       x
        JR      NZ,Lb101                ; 052E 2017      .
        LD      HL,CDLOOP2              ; 0530 212878   !(x
        DEC     (HL)                    ; 0533 35       5
        JR      NZ,Lb102                ; 0534 20BF      .
        LD      B,A                     ; 0536 47       G
        AND     $10                     ; 0537 E610     ..
        LD      A,B                     ; 0539 78       x
        JR      Z,Lb101                 ; 053A 280B     (.
        LD      HL,CDLOOP1              ; 053C 212778   !'x
        DEC     (HL)                    ; 053F 35       5
        JR      Z,Lb101                 ; 0540 2805     (.
        CALL    Lb16                    ; 0542 CDC107   ...
        JR      Lb103                   ; 0545 18A6     ..

Lb101:  CALL    Lb68                    ; 0547 CDF60A   get error led number
        POP     AF                      ; 054A F1       .
        LD      H,A                     ; 054B 67       g
        CALL    Lb69                    ; 054C CD050B   beep and display error
        LD      HL,STATUS0              ; 054F 211E78   !.x
        SET     2,(HL)                  ; 0552 CBD6     ..
        OR      $FF                     ; 0554 F6FF     ..
        RET                             ; 0556 C9       .

Lb100:  POP     AF                      ; 0557 F1       .
        RET     Z                       ; 0558 C8       .

        LD      HL,STATUS0              ; 0559 211E78   !.x
        RES     3,(HL)                  ; 055C CB9E     ..
        XOR     A                       ; 055E AF       .
        RET                             ; 055F C9       .
                                        ;----------------------------
                                        ;Check if disk changed
Lb36:   LD      A,($7819)               ; 0560 3A1978   :.x
        OR      A                       ; 0563 B7       set flags
        RET     Z                       ; 0564 C8       .
        CALL    Lb19                    ; 0565 CD6D05   go set density
        XOR     A                       ; 0568 AF       .
        LD      ($7819),A               ; 0569 321978   2.x
        RET                             ; 056C C9       .
;---------------------------------------------------------------------
;go read sector 1 and set density
Lb19:   CALL    Lb15                    ; 056D CDBE08   turn on motor?
        CALL    Lb16                    ; 0570 CDC107   step to track zero
        CALL    Lb104                   ; 0573 CDAA05   ...
        JR      Z,Lb105                 ; 0576 281B     (.
        LD      HL,DENFLG               ; 0578 211778   !.x
        LD      A,(HL)                  ; 057B 7E       ~
        ADD     A,$FF                   ; 057C C6FF     .. -1
        CCF                             ; 057E 3F       ?
        LD      A,$00                   ; 057F 3E00     >.
        RLA                             ; 0581 17       .
        LD      (HL),A                  ; 0582 77       w
        CALL    Lb104                   ; 0583 CDAA05   ...
        JR      Z,Lb105                 ; 0586 280B     (.
        LD      A,($7816)               ; 0588 3A1678   :.x
        LD      (DENFLG),A              ; 058B 321778   2.x
        CALL    SETDENFLG               ; 058E CDF20B   ...
        JR      Lb106                   ; 0591 1816     ..
Lb105:  LD      HL,DENFLG               ; 0593 211778   !.x
        LD      A,(HL)                  ; 0596 7E       ~
        OR      A                       ; 0597 B7       . set flags
        JR      Z,Lb106                 ; 0598 280F     (.
        LD      A,($7945)               ; 059A 3A4579   :Ey
        CP      $01                     ; 059D FE01     ..
        JR      Z,Lb107                 ; 059F 2802     (.
        LD      A,$02                   ; 05A1 3E02     >. enhanced density
Lb107:  LD      (DENFLG),A              ; 05A3 321778   2.x
        LD      ($7816),A               ; 05A6 321678   2.x
Lb106:  RET                             ; 05A9 C9       .
                                        ;----------------------------
Lb104:  LD      A,$02                   ; 05AA 3E02     >.
        LD      (CDLOOP2),A             ; 05AC 322878   2(x
Lb110:  CALL    SETDENFLG               ; 05AF CDF20B   ...
        CALL    Lb108                   ; 05B2 CDCD05   read sector
        JR      Z,Lb109                 ; 05B5 2810     (.
        CALL    Lb80                    ; 05B7 CD6809   .h.
        AND     $18                     ; 05BA E618     ..
        RET     Z                       ; 05BC C8       .

        AND     $10                     ; 05BD E610     ..
        JR      NZ,Lb109                ; 05BF 2006      .
        LD      HL,CDLOOP2              ; 05C1 212878   !(x
        DEC     (HL)                    ; 05C4 35       5
        JR      NZ,Lb110                ; 05C5 20E8      .
Lb109:  CALL    Lb14                    ; 05C7 CD3509   .5.
        OR      $FF                     ; 05CA F6FF     ..
        RET                             ; 05CC C9       .
                                        ;----------------------------
; Read sector data from fdc and store in buffer
Lb108:  LD      HL,BUFFER               ; 05CD 214279   !By
        LD      A,(READADDR)            ; 05D0 3A0F78   :.x
        JR      Lb111                   ; 05D3 1803     ..

Lb78:   LD      A,(READSECT)            ; 05D5 3A0D78   :.x
Lb111:  LD      DE,STAT2                ; 05D8 110020   .. 
        LD      (COMMANDFDC),A          ; 05DB 320060   2.`
Lb113:  LD      BC,$6E73                ; 05DE 01736E   .sn
Lb112:  DEC     BC                      ; 05E1 0B       .
        LD      A,B                     ; 05E2 78       x
        OR      C                       ; 05E3 B1       .
        RET     Z                       ; 05E4 C8       .

        LD      A,(DE)                  ; 05E5 1A       .
        AND     $C0                     ; 05E6 E6C0     ..
        JR      Z,Lb112                 ; 05E8 28F7     (.
        AND     $80                     ; 05EA E680     ..
        RET     NZ                      ; 05EC C0       .

        LD      A,(DATAFDC)             ; 05ED 3A0360   :.`read byte data
        LD      (HL),A                  ; 05F0 77       w  put in buffer
        INC     HL                      ; 05F1 23       #
        JR      Lb113                   ; 05F2 18EA     ..
; write data to FDC data register from buffer
Lb98:   LD      DE,STAT2                ; 05F4 110020   .. 
        LD      A,(WRITESECT)           ; 05F7 3A0E78   :.x
        LD      (COMMANDFDC),A          ; 05FA 320060   2.`
Lb115:  LD      BC,$6E73                ; 05FD 01736E   load time out value
Lb114:  DEC     BC                      ; 0600 0B       .
        LD      A,B                     ; 0601 78       x
        OR      C                       ; 0602 B1       .
        RET     Z                       ; 0603 C8       .

        LD      A,(DE)                  ; 0604 1A       .
        AND     $C0                     ; 0605 E6C0     ..
        JR      Z,Lb114                 ; 0607 28F7     (.
        AND     $80                     ; 0609 E680     ..
        RET     NZ                      ; 060B C0       .

        LD      A,(HL)                  ; 060C 7E       ~  get data from buffer
        LD      (DATAFDC),A             ; 060D 320360   2.`write data to sector
        INC     HL                      ; 0610 23       # next byte
        JR      Lb115                   ; 0611 18EA     ..
;
;--------------------------------------------------------------------
;CP/M INIT Command enters here to Format track
;--------------------------------------------------------------------
;
Lb64:   DI                              ; 0613 F3       .
        LD      HL,$00                  ; 0614 210000   !..
        ADD     HL,SP                   ; 0617 39       9
        LD      ($7829),HL              ; 0618 222978   save stack to 7829
        IN      A,($03)                 ; 061B DB03     ip enable
        IN      A,($0C)                 ; 061D DB0C     ip off
        LD      A,(DENFLG)              ; 061F 3A1778   density flag
        OR      A                       ; 0622 B7       set flags
        JR      NZ,Lb116                ; 0623 2011      .
        LD      DE,$254                 ; 0625 115402   single
        LD      C,$FF                   ; 0628 0EFF     ..
        LD      SP,$722                 ; 062A 312207   set stack to 722
        EXX                             ; 062D D9       .
        LD      HL,$736                 ; 062E 213607   pointer to sector order
        LD      DE,$6EE                 ; 0631 11EE06   ...
        JR      Lb117                   ; 0634 181C     jump always
                                        ;-----------------------MFM
Lb116:  LD      DE,$50D                 ; 0636 110D05   enhanced and double
        LD      C,$4E                   ; 0639 0E4E     .N
        LD      SP,$785                 ; 063B 318507   set stack to 785
        EXX                             ; 063E D9       .
        LD      DE,$749                 ; 063F 114907   .I.
        LD      HL,$736                 ; 0642 213607   sector order single/double
        DEC     A                       ; 0645 3D       =
        LD      A,$FF                   ; 0646 3EFF     bytes per sector.
        JR      Z,Lb118                 ; 0648 2805     Double? jump if yes
        LD      HL,$79D                 ; 064A 219D07   sector order enhanced
        LD      A,$7F                   ; 064D 3E7F     bytes per sector
Lb118:  LD      (FMTSTR),A              ; 064F 322B78   ff=double 7f=enhanced/single

Lb117:  LD      BC,$782C                ; 0652 ED4B2C78 custom sector table
        LD      A,B                     ; 0656 78       x
        OR      C                       ; 0657 B1       .
        JR      Z,Lb119                 ; 0658 2802     (.
        LD      L,C                     ; 065A 69       load custom
        LD      H,B                     ; 065B 60       sector order table pointer
Lb119:  EXX                             ; 065C D9       .
        LD      HL,DATAFDC              ; 065D 210360   load HL 6003, data register fdc
        LD      A,(WRITETRK)            ; 0660 3A1078   load write track command to fdc 
        LD      (COMMANDFDC),A          ; 0663 320060   2.`
Lb120:  LD      A,(STAT2)               ; 0666 3A0020   :. fdc
        AND     $C0                     ; 0669 E6C0     .. wait for drq/irg to go low
        JR      Z,Lb120                 ; 066B 28F9     (.
        LD      (HL),C                  ; 066D 71       q
        LD      B,$4B                   ; 066E 064B     
        IN      A,($0D)                 ; 0672 DB0D     ip pulse?
Lb122:  LD      A,(STAT2)               ; 0674 3A0020   fdc
        AND     $C0                     ; 0677 E6C0     wait for drq/irq to go low
        JR      Z,Lb122                 ; 0679 28F9     (.
;HL = 6003. FDC data register
;DE = number of bytes to write after index pulse
;C = byte to write
;HL' = pointer to sector order
;DE' = 2nd stack pointer after 1st sector after Index pulse
;SP = routine to RET to or BC data

        LD      (HL),C                  ; 067B 71       q
        IN      A,($0C)                 ; 067C DB0C     ..ip not pulse?
Lb123:  LD      A,(STAT2)               ; 067E 3A0020   :. fdc
        AND     $C0                     ; 0681 E6C0     ..
        JR      Z,Lb123                 ; 0683 28F9     (.
        LD      (HL),C                  ; 0685 71       q
        DEC     DE                      ; 0686 1B       .
        LD      A,D                     ; 0687 7A       z
        OR      E                       ; 0688 B3       .
        JR      NZ,Lb123                ; 0689 20F3      .
        LD      DE,STAT2                ; 068B 110020   .. 
        JP      Lb124                   ; 068E C39206   ...
;DE = 2000 (STAT2) for FDC IRQ/DRQ
; other registers as above

Lb125:  PUSH    BC                      ; 0691 C5       inc stack pointer
Lb124:  LD      A,(DE)                  ; 0692 1A       .
        AND     $C0                     ; 0693 E6C0     wait for fdc drq/irq
        JR      Z,Lb124                 ; 0695 28FB     (.
        LD      (HL),C                  ; 0697 71       q
        RET                             ; 0698 C9       .
FMTRT1:
        DJNZ    Lb125                   ; 0699 10F6     ..
FMTRT2:
        POP     BC                      ; 069B C1       .
        JP      Lb124                   ; 069C C39206   ...
FMTRT3:
        LD      A,($7826)               ; 069F 3A2678   :&x
        RRCA                            ; 06A2 0F       .
        LD      C,A                     ; 06A3 4F       O
        JP      Lb124                   ; 06A4 C39206   ...
FMTRT4:
        LD      A,(DENFLG)              ; 06A7 3A1778   :.x
        AND     $01                     ; 06AA E601     ..
        LD      C,A                     ; 06AC 4F       O
        JP      Lb124                   ; 06AD C39206   ...
FMTRT5:                                 ;write sector number id field
        EXX                             ; 06B0 D9       .
        LD      A,(HL)                  ; 06B1 7E       sector number
        INC     HL                      ; 06B2 23       #
        EXX                             ; 06B3 D9       .
        LD      C,A                     ; 06B4 4F       O
        JP      Lb124                   ; 06B5 C39206   ...
FMTRT6:
        LD      A,(FMTSTR)              ; 06B8 3A2B78   :+x
        LD      B,A                     ; 06BB 47       G
        JP      Lb124                   ; 06BC C39206   ...
FMTRT7:
        EXX                             ; 06BF D9       .
        LD      C,(HL)                  ; 06C0 4E       N
        EX      DE,HL                   ; 06C1 EB       .
        EXX                             ; 06C2 D9       .
        JP      Lb124                   ; 06C3 C39206   ...
FMTRT8:
        EXX                             ; 06C6 D9       .
        LD      SP,HL                   ; 06C7 F9       .
        EX      DE,HL                   ; 06C8 EB       .
        LD      A,C                     ; 06C9 79       y
        EXX                             ; 06CA D9       .
        RLCA                            ; 06CB 07       .
        JP      NC,Lb124                ; 06CC D29206   ...
Lb126:  LD      A,(DE)                  ; 06CF 1A       .
        AND     $C0                     ; 06D0 E6C0     wait for FDC drq/irq
        JR      Z,Lb126                 ; 06D2 28FB     (.
        LD      (HL),C                  ; 06D4 71       q
        IN      A,($0D)                 ; 06D5 DB0D     .. ip pulse
Lb127:  LD      A,(DE)                  ; 06D7 1A       .
        AND     $C0                     ; 06D8 E6C0     wait for fdc drq/irq
        JR      Z,Lb127                 ; 06DA 28FB     (.
        AND     $80                     ; 06DC E680     ..
        JR      NZ,Lb128                ; 06DE 2003      .
        LD      (HL),C                  ; 06E0 71       q
        JR      Lb127                   ; 06E1 18F4     ..
Lb128:  LD      SP,($7829)              ; 06E3 ED7B2978 restore stack pointer
        IN      A,($0C)                 ; 06E7 DB0C     ..ip pulse
        CALL    Lb80                    ; 06E9 CD6809   .h.
        EI                              ; 06EC FB       .
        RET                             ; 06ED C9       .

				;data*********************************?
        WORD FMTRT2                     ; 06EE 9B06     set de here FM
        DB $00,$06                      ; 06F0 0006     ..
        WORD FMTRT1                     ; 06F2 9906     ..
        WORD $01FE                      ; 06F4 FE01     ..
        WORD FMTRT3                     ; 06F6 9F06   ...
        WORD FMTRT2                     ; 06F8 9B06       .
        WORD $0100                      ; 06FA 0001     ..
        WORD FMTRT5                     ; 06FC B006   ...write sector number
        WORD FMTRT2                     ; 06FE 9B06       .
        WORD $0100                      ; 0700 0001     ..
        WORD FMTRT2                     ; 0702 9B06   ...
        WORD $01F7                      ; 0704 F701       .
        WORD FMTRT2                     ; 0706 9B06   ...
        WORD $1100                      ; 0708 0011       .
        WORD FMTRT1                     ; 070A 9906   ...
        WORD $01FB                      ; 070C FB01       .
        WORD FMTRT2                     ; 070E 9B06   ...
        WORD $80FF                      ; 0710 FF80       .
        WORD FMTRT1                     ; 0712 9906       .
        WORD $01F7                      ; 0714 F701     ..
        WORD FMTRT2                     ; 0716 9B06   ...
        WORD $0900                      ; 0718 0009       .
        WORD FMTRT1                     ; 071A 9906       .
        WORD $03FF                      ; 071C FF03     ..
        WORD FMTRT7                     ; 071E BF06       .
        WORD FMTRT8                     ; 0720 C606     ..
        WORD FMTRT2                     ; 0722 9B06     stack set to here FM
        WORD $0600                      ; 0724 0006     .data and counter
        WORD FMTRT1                     ; 0726 9906     ..
        WORD $01FC                      ; 0728 FC01     ..
        WORD FMTRT2                     ; 072A 9B06   ...
        WORD $0800                      ; 072C 0008       .
        WORD FMTRT1                     ; 072E 9906       .
        WORD $0300                      ; 0730 0003     ..
        WORD FMTRT7                     ; 0732 BF06       .
        WORD FMTRT8                     ; 0733 C606     ..
        DB $01,$03,$05                  ; 0736 010305  sector order
        DB $07,$09,$0B                  ; 0739 07090B       .
        DB $0D,$0F,$11                  ; 073C 0D0F11       .
        DB $02,$04,$06                  ; 073F 020406   ...
        DB $08,$0A,$0C                  ; 0742 080A0C     ..
        DB $0E,$10,$12                  ; 0745 0E1012     ..
        DB $80                          ; 0748 80      end data

        WORD FMTRT2                     ; 0749 9B06     de set to here MFM
        WORD $0C00                      ; 074B 000C     ..
        WORD FMTRT1                     ; 074D 9906       .
        WORD $03F5                      ; 074F F503     ..
        WORD FMTRT1                     ; 0751 9906       .
        WORD $01FE                      ; 0753 FE01     ..
        WORD FMTRT3                     ; 0755 9F06   ...
        WORD FMTRT2                     ; 0757 9B06       .
        WORD $0100                      ; 0759 0001     ..
        WORD FMTRT5                     ; 075B B006   ...write sector number
        WORD FMTRT4                     ; 075D A706       .
        WORD FMTRT2                     ; 075F 9B06     ..
        WORD $01F7                      ; 0761 F701     ..
        WORD FMTRT2                     ; 0763 9B06   ...
        WORD $224E                      ; 0765 4E22       N
        WORD FMTRT1                     ; 0767 9906   "..
        WORD $03F5                      ; 0769 F503       .
        WORD FMTRT1                     ; 076B 9906       .
        WORD $01FB                      ; 076D FB01     ..
        WORD FMTRT2                     ; 076F 9B06   ...
        WORD $01FF                      ; 0771 FF01       .
        WORD FMTRT6                     ; 0773 B806   ...
        WORD FMTRT1                     ; 0775 9906       .
        WORD $01F7                      ; 0777 F701     ..
        WORD FMTRT2                     ; 0779 9B06   ...
        WORD $154E                      ; 077B 4E15       N
        WORD FMTRT1                     ; 077D 9906       .
        WORD $034E                      ; 077F 4E03     .N
        WORD FMTRT7                     ; 0781 BF06       .
        WORD FMTRT8                     ; 0783 C606     ..
        WORD FMTRT2                     ; 0785 9B06     stack set to here MFM
        WORD $0C00                      ; 0787 000C     write 0 B times
        WORD FMTRT1                     ; 0789 9906       .
        WORD $03F6                      ; 078B F603     write F6 3 times
        WORD FMTRT1                     ; 078D 9906       .
        WORD $01FC                      ; 078F FC01     write FC 1 times
        WORD FMTRT2                     ; 0791 9B06   ...
        WORD $134E                      ; 0793 4E13      write 4E $13 times
        WORD FMTRT1                     ; 0795 9906       .
        WORD $034E                      ; 0797 4E03     write 4E 3 times
        WORD FMTRT7                     ; 0799 BF06     load first sectornumber and write
        WORD FMTRT8                     ; 079B C606     set stack 749
        DB $01,$03,$05                  ; 079D 010305  sector order enhanced
        DB $07,$09,$0B                  ; 07A0 07090B       .
        DB $0D,$0F,$11                  ; 07A3 0D0F11       .
        DB $13,$15,$17                  ; 07A6 131517   ...
        DB $19,$02,$04                  ; 07A9 190204       .
        DB $06,$08,$0A                  ; 07AC 06080A     ..
        DB $0C,$0E,$10                  ; 07AF 0C0E10       .
        DB $12,$14,$16                  ; 07B2 121416       .
        DB $18,$1A                      ; 07B4 181A     ..
        DB $80                          ; 07B7 80       . end data
;----------------------------------------------------------------------------
Lb76:   LD      A,(TRACKNUM)            ; 07B8 3A2278   :"x
        SRL     A                       ; 07BB CB3F     X 2
        LD      (TRACKFDC),A            ; 07BD 320160   2.` track register
        RET                             ; 07C0 C9       .
;----------------------------------------------------------------------------
TRK0:                                   ;step to track zero
Lb16:   LD      A,$58                   ; 07C1 3E58     >X
        LD      ($7826),A               ; 07C3 322678   2&x
        LD      A,$08                   ; 07C6 3E08     >.
        LD      (CONTROL),A             ; 07C8 320030   2.0 stepper motor
        CALL    Lb129                   ; 07CB CD5508   .U.
        LD      A,$01                   ; 07CE 3E01     >.
        LD      (CONTROL),A             ; 07D0 320030   2.0 stepper motor
        CALL    Lb129                   ; 07D3 CD5508   .U.
Lb133:  CALL    Lb130                   ; 07D6 CD6F08   .o.
        LD      A,($7826)               ; 07D9 3A2678   :&x
        OR      A                       ; 07DC B7       .
        JR      Z,Lb131                 ; 07DD 2805     (.
        CALL    Lb132                   ; 07DF CD4208   .B.
        JR      Lb133                   ; 07E2 18F2     ..

Lb131:  XOR     A                       ; 07E4 AF       .
        CALL    Lb134                   ; 07E5 CDC30A   ...
        LD      (TLEDNUM1),HL           ; 07E8 223A78   ":x
        CALL    UPLED-1-2-B-E           ; 07EB CD120B   ...
        JR      Lb135                   ; 07EE 1814     ..
STTRACK                                 ;step to track------------------------------------
Lb17:   LD      A,D                     ; 07F0 7A       z
        LD      (TRACKNUM),A            ; 07F1 322278   2"x

; CP/M INIT command enters here for step to track  
Lb63:   LD      A,(TRACKNUM)            ; 07F4 3A2278   :"x
        LD      HL,$7826                ; 07F7 212678   7826= track currenty at?
        CP      (HL)                    ; 07FA BE       .
        JR      Z,Lb136                 ; 07FB 2810     (.
        PUSH    AF                      ; 07FD F5       .
        CALL    Lb137                   ; 07FE CD1C08   ...
        POP     AF                      ; 0801 F1       .
        JR      NC,Lb138                ; 0802 3006     0.
Lb135:  CALL    Lb132                   ; 0804 CD4208   .B.
        CALL    Lb139                   ; 0807 CD3C08   .<.
Lb138:  CALL    Lb129                   ; 080A CD5508   .U.
Lb136:  XOR     A                       ; 080D AF       .
        LD      (CONTROL),A             ; 080E 320030   2.0 stepper motor
        LD      HL,$FFFF                ; 0811 21FFFF   !..
        LD      ($7830),HL              ; 0814 223078   "0x
        EI                              ; 0817 FB       .
        CALL    Lb140                   ; 0818 CD8B08   ...
        RET                             ; 081B C9       .
;-----------------------------------------------------------------------------------
Lb137:  LD      A,(TRACKNUM)            ; 081C 3A2278   :"x
        LD      HL,$7826                ; 081F 212678   !&x
        CP      (HL)                    ; 0822 BE       .
        RET     Z                       ; 0823 C8       .

        PUSH    AF                      ; 0824 F5       .
        CALL    C,Lb132                 ; 0825 DC4208   .B.
        POP     AF                      ; 0828 F1       .
        CALL    NC,Lb139                ; 0829 D43C08   .<.
        LD      A,($7826)               ; 082C 3A2678   :&x
        SRL     A                       ; 082F CB3F     .?
        CALL    Lb134                   ; 0831 CDC30A   ...
        LD      (TLEDNUM1),HL           ; 0834 223A78   ":x
        CALL    UPLED-1-2-B-E           ; 0837 CD120B   ...
        JR      Lb137                   ; 083A 18E0     ..

Lb139:  CALL    Lb129                   ; 083C CD5508   .U.
        INC     (HL)                    ; 083F 34       4
        JR      Lb141                   ; 0840 1804     ..
                                        ;------------------------------------
Lb132:  CALL    Lb129                   ; 0842 CD5508   .U.
        DEC     (HL)                    ; 0845 35       5
Lb141:  LD      A,(HL)                  ; 0846 7E       ~
        AND     $03                     ; 0847 E603     ..
        LD      B,A                     ; 0849 47       G
        XOR     A                       ; 084A AF       .
        SCF                             ; 084B 37       7
        INC     B                       ; 084C 04       .
Lb142:  RLA                             ; 084D 17       .
        DJNZ    Lb142                   ; 084E 10FD     ..
        LD      (CONTROL),A             ; 0850 320030   2.0 stepper motor
        EI                              ; 0853 FB       .
        RET                             ; 0854 C9       .
                                        ;------------------------------------
Lb129:  EI                              ; 0855 FB       .
        CALL    Lb23                    ; 0856 CD440B   buttons
        DI                              ; 0859 F3       .
        LD      HL,$7830                ; 085A 213078   !0x
        INC     (HL)                    ; 085D 34       4
        JR      NZ,Lb129                ; 085E 20F5      .
        INC     HL                      ; 0860 23       #
        INC     (HL)                    ; 0861 34       4
        DEC     HL                      ; 0862 2B       +
        JR      NZ,Lb129                ; 0863 20F0      .
        LD      HL,($782E)              ; 0865 2A2E78   *.x
        LD      ($7830),HL              ; 0868 223078   "0x
        LD      HL,$7826                ; 086B 212678   !&x
        RET                             ; 086E C9       .
                                        ;-----------------------------------
Lb130:  LD      A,($7826)               ; 086F 3A2678   :&x
        AND     $03                     ; 0872 E603     ..
        RET     Z                       ; 0874 C8       .

        LD      A,(STATUSFDC)           ; 0875 3A0060   :.`status register
        AND     $04                     ; 0878 E604     .. track zero?
        RET     Z                       ; 087A C8       .

        LD      A,$0A                   ; 087B 3E0A     >.
Lb143:  DEC     A                       ; 087D 3D       =
        JR      NZ,Lb143                ; 087E 20FD      .
        LD      A,(STATUSFDC)           ; 0880 3A0060   :.`status register
        AND     $04                     ; 0883 E604     ..
        RET     Z                       ; 0885 C8       .

        XOR     A                       ; 0886 AF       .
        LD      ($7826),A               ; 0887 322678   2&x
        RET                             ; 088A C9       .
                                        ;-----------------------------------
Lb140:  LD      A,($7826)               ; 088B 3A2678   :&x
        CP      $28                     ; 088E FE28     .( track 40?
        LD      A,(RESTORE)             ; 0890 3A0C78   restore = 0
        JR      NC,Lb144                ; 0893 3007     0.
        OR      A                       ; 0895 B7       .
        JR      Z,Lb145                 ; 0896 281D     (.
        LD      A,$02                   ; 0898 3E02     >.
        JR      Lb146                   ; 089A 1804     ..
Lb144:  OR      A                       ; 089C B7       .
        JR      Z,Lb147                 ; 089D 2815     (.
        XOR     A                       ; 089F AF       .
Lb146:  LD      B,A                     ; 08A0 47       G
        LD      A,($00A8)               ; 08A1 3AA800   what????????? 06
        AND     $FD                     ; 08A4 E6FD     ..
        OR      B                       ; 08A6 B0       .
        LD      ($00A8),A               ; 08A7 32A800   what?????????
        LD      A,($00F0)               ; 08AA 3AF000   What?????????
        AND     $FD                     ; 08AD E6FD     ..
        OR      B                       ; 08AF B0       .
        LD      ($00F0),A               ; 08B0 32F000   store to rom?????
        RET                             ; 08B3 C9       .
                                        ;-----------------------------------
Lb147:  DEC     A                       ; 08B4 3D       =
Lb145:  LD      ($783E),A               ; 08B5 323E78   2>x
        CALL    UPLED-1-2-B-E           ; 08B8 CD120B   ...
        RET                             ; 08BB C9       .
MONOFF:                                 ; motor on or off-------------------
        JR      NC,Lb148                ; 08BC 3058     0X
;CP/M init enters here for motor on
Lb15:   CALL    Lb14                    ; 08BE CD3509   .5.reset FDC?
        LD      A,(MOTORF)              ; 08C1 3A1878   :.x
        OR      A                       ; 08C4 B7       set flags
        JR      NZ,Lb149                ; 08C5 2017      .
        IN      A,($0B)                 ; 08C7 DB0B     ..motor on
        LD      L,$01                   ; 08C9 2E01     ..
Lb150:  LD      BC,$2C7A                ; 08CB 017A2C   .z,
        CALL    Lb4                     ; 08CE CD1200   ... delay.time =BC
        DEC     L                       ; 08D1 2D       -wait for motor to spin up
        JR      NZ,Lb150                ; 08D2 20F7      .
        LD      A,$FF                   ; 08D4 3EFF     >.
        LD      (MOTORF),A              ; 08D6 321878   2.x
        LD      HL,STATUS0              ; 08D9 211E78   !.x
        SET     4,(HL)                  ; 08DC CBE6     ..
Lb149:  LD      HL,$7FFF                ; 08DE 21FF7F   !..
        LD      ($7832),HL              ; 08E1 223278   "2x
        RET                             ; 08E4 C9       .
                                        ;--------------------------------------------
Lb24:   DI                              ; 08E5 F3       .
        LD      HL,($7832)              ; 08E6 2A3278   *2x motor run delay?
        LD      A,H                     ; 08E9 7C       |
        OR      L                       ; 08EA B5       .
        JR      Z,Lb151                 ; 08EB 2846     (F
        DEC     HL                      ; 08ED 2B       +
        LD      ($7832),HL              ; 08EE 223278   "2x
        EI                              ; 08F1 FB       .
Lb153:  LD      HL,($7832)              ; 08F2 2A3278   *2x
        LD      A,H                     ; 08F5 7C       |
        OR      L                       ; 08F6 B5       .
        JR      NZ,Lb151                ; 08F7 203A      :
        DI                              ; 08F9 F3       .
        LD      A,($7826)               ; 08FA 3A2678   FDC status register shadow?
        CP      $4E                     ; 08FD FE4E     .N
        JR      NC,Lb152                ; 08FF 301C     0.
        CALL    Lb139                   ; 0901 CD3C08   .<.
        DI                              ; 0904 F3       .
        LD      A,($7826)               ; 0905 3A2678   :&x
        SRL     A                       ; 0908 CB3F     .?
        CALL    Lb134                   ; 090A CDC30A   
        LD      (TLEDNUM1),HL           ; 090D 223A78   ":x
        CALL    UPLED-1-2-B-E           ; 0910 CD120B   ...
        EI                              ; 0913 FB       .
        JR      Lb153                   ; 0914 18DC     ..
Lb148:  DI                              ; 0916 F3       .
        LD      HL,$0000                ; 0917 210000   !..
        LD      ($7832),HL              ; 091A 223278   "2x
Lb152:  CALL    Lb129                   ; 091D CD5508   .U.
        DI                              ; 0920 F3       .
        LD      HL,($7832)              ; 0921 2A3278   *2x
        LD      A,H                     ; 0924 7C       |
        OR      L                       ; 0925 B5       .
        JR      NZ,Lb151                ; 0926 200B      .
        IN      A,($0A)                 ; 0928 DB0A     ..motor off
        LD      HL,STATUS0              ; 092A 211E78   !.x
        RES     4,(HL)                  ; 092D CBA6     ..
        XOR     A                       ; 092F AF       .
        LD      (MOTORF),A              ; 0930 321878   2.x
Lb151:  EI                              ; 0933 FB       .
        RET                             ; 0934 C9       .
					; reset the fdc with d8 then d0 ----------------
Lb14:   LD      A,$D8                   ; 0935 3ED8     >. force interupt require reset
        LD      (COMMANDFDC),A          ; 0937 320060   2.`command register
        CALL    Lb80                    ; 093A CD6809   .h.
        PUSH    AF                      ; 093D F5       .
        LD      A,$D0                   ; 093E 3ED0     >.terminate with no interupt
        LD      (COMMANDFDC),A          ; 0940 320060   2.`command register
Lb154:  LD      A,(STATUSFDC)           ; 0943 3A0060   :.`status register
        LD      A,(STAT2)               ; 0946 3A0020   :. fdc
        AND     $80                     ; 0949 E680     .. wait for irq to go low
        JR      NZ,Lb154                ; 094B 20F6      .
        LD      A,(TRACKFDC)            ; 094D 3A0160   :.`
        LD      (DATAFDC),A             ; 0950 320360   2.`
        LD      B,$0F                   ; 0953 060F     ..
Lb155:  DJNZ    Lb155                   ; 0955 10FE     ..
        LD      A,$10                   ; 0957 3E10     >.seek with no verify
        LD      (COMMANDFDC),A          ; 0959 320060   2.`
Lb156:  LD      A,(STAT2)               ; 095C 3A0020   :. fdc
        AND     $80                     ; 095F E680     ..wait for irq to go high
        JR      Z,Lb156                 ; 0961 28F9     (.
        LD      A,(STATUSFDC)           ; 0963 3A0060   :.`
        POP     AF                      ; 0966 F1       .
        RET                             ; 0967 C9       .
;------------------------------------------------------------------------------------------
Lb80:   LD      A,(STAT2)               ; 0968 3A0020   :. fdc
        AND     $80                     ; 096B E680     .. wait for irq to go high
        JR      Z,Lb80                  ; 096D 28F9     (.
        LD      A,(STATUSFDC)           ; 096F 3A0060   :.`
        RET                             ; 0972 C9       .
;--------------------------------------------------------------------------------------------
Lb90:   CALL    Lb50                    ; 0973 CDA60A   check sector is 4 or greater
        LD      HL,(SECTORBUF)          ; 0976 2A2478   *$x
        JR      Lb39                    ; 0979 1801     Jump always
GSIOBLOCK
        EX      DE,HL                   ; 097B EB       .
Lb39:   PUSH    BC                      ; 097C C5       .
        PUSH    HL                      ; 097D E5       .
Lb158:  PUSH    BC                      ; 097E C5       .
        PUSH    HL                      ; 097F E5       .
        CALL    GSIOBYTE                ; 0980 CDD109   ... get byte
        POP     HL                      ; 0983 E1       .
        LD      (HL),C                  ; 0984 71       q
        INC     HL                      ; 0985 23       #
        POP     BC                      ; 0986 C1       .
        DJNZ    Lb158                   ; 0987 10F5     ..
        CALL    GSIOBYTE                ; 0989 CDD109   ... get byte
        LD      A,C                     ; 098C 79       y
        POP     HL                      ; 098D E1       .
        POP     BC                      ; 098E C1       .
        PUSH    AF                      ; 098F F5       .
        CALL    caculate-chksum         ; 0990 CD810A   ... caculate checksum
        POP     BC                      ; 0993 C1       .
        LD      C,B                     ; 0994 48       H
        CP      C                       ; 0995 B9       .
        RET                             ; 0996 C9       .

Lb75:   PUSH    AF                      ; 0997 F5       .
        CALL    Lb50                    ; 0998 CDA60A   ...
        POP     AF                      ; 099B F1       .
        LD      HL,BUFFER               ; 099C 214279   set HL to buffer
        JR      Lb44                    ; 099F 180B     jump always..

Lb46:   PUSH    AF                      ; 09A1 F5       save A
        CALL    Lb50                    ; 09A2 CDA60A   check sector is 4 or greater
					;B = LSB of sector size to send
        POP     AF                      ; 09A5 F1       retrive A
        LD      HL,(SECTORBUF)          ; 09A6 2A2478   
        JR      Lb44                    ; 09A9 1801     jump always
SSIOBLOCK:
        EX      DE,HL                   ; 09AB EB       .

Lb44:   PUSH    BC                      ; 09AC C5       .
        PUSH    HL                      ; 09AD E5       .
        PUSH    AF                      ; 09AE F5       save AF
        CALL    caculate-chksum         ; 09AF CD810A   go add up checksum
        POP     BC                      ; 09B2 C1       get back was AF to now BC
        PUSH    AF                      ; 09B3 F5       store checksum
        LD      A,B                     ; 09B4 78       what was in A now back in A
        LD      B,$5A                   ; 09B5 065A     .Z
        CALL    CDOWNDELAY              ; 09B7 CD9E0C   ...
        CALL    SSIOBYTE                ; 09BA CD230A   send byte  sio (C for read)
        POP     AF                      ; 09BD F1       .
        POP     HL                      ; 09BE E1       .
        POP     BC                      ; 09BF C1       .
        PUSH    AF                      ; 09C0 F5       .
Lb161:  PUSH    BC                      ; 09C1 C5     11  .
        PUSH    HL                      ; 09C2 E5     11  .
        LD      A,(HL)                  ; 09C3 7E     7  load buffer to A
        CALL    SSIOBYTE                ; 09C4 CD230A 17  send byte  sio
        POP     HL                      ; 09C7 E1     10  .
        INC     HL                      ; 09C8 23     6  #
        POP     BC                      ; 09C9 C1     10  .
        DJNZ    Lb161                   ; 09CA 10F5   13/8  ..
        POP     AF                      ; 09CC F1     10  get checksum
        CALL    SSIOBYTE                ; 09CD CD230A 17  send byte  sio
        RET                             ; 09D0 C9       .
;------------------------------------------------------------------------
;this section of code is send and recieve sio. high speed is included but doesn't work
GSIOBYTE:
        LD      A,($7815)               ; 09D1 3A1578   :.x
        OR      A                       ; 09D4 B7       .
        JR      NZ,Lb162                ; 09D5 2024      $
        LD      E,$07                   ; 09D7 1E07     ..8 bits
Lb163:  LD      A,(STAT2)               ; 09D9 3A0020   :. sio data in
        AND     $04                     ; 09DC E604     wait for start bit
        JR      NZ,Lb163                ; 09DE 20F9      .
        LD      B,$12                   ; 09E0 0612     
        CALL    CDOWNDELAY              ; 09E2 CD9E0C 17 lets go delay 239 t states
        INC     DE                      ; 09E5 13       .
Lb164:  LD      A,(STAT2)               ; 09E6 3A0020 13  recive data bit
        AND     $04                     ; 09E9 E604   7  get data bit
        ADD     A,$FF                   ; 09EB C6FF   7  move data bit to carry
        RR      C                       ; 09ED CB19   8  rotate carry to c
        LD      B,$09                   ; 09EF 0609   7  ..
        CALL    CDOWNDELAY              ; 09F1 CD9E0C 17  delay 122 t states
        OR      $00                     ; 09F4 F600   7  ..
        NOP                             ; 09F6 00     4  .
        DEC     E                       ; 09F7 1D     4  .
        JR      NZ,Lb164                ; 09F8 20EC   7/12   .208 t states per bit
        RET                             ; 09FA C9       .recieved byte in C
                                        ;high speed sio-----------------------------
Lb162:  PUSH    HL                      ; 09FB E5       .
        LD      B,$08                   ; 09FC 0608     8 bits
        LD      HL,STAT2                ; 09FE 210020   !. 
        LD      D,$02                   ; 0A01 1602     mask byte data in /2
Lb165:  RST     08H                     ; 0A03 CF       get start bit
					;
        JR      NZ,Lb165                ; 0A04 20FD      .
Lb166:  RST     08H                     ; 0A06 CF    11   .
        ADD     A,$FF                   ; 0A07 C6FF  7   ..
        RR      C                       ; 0A09 CB19  8   ..
        DJNZ    Lb166                   ; 0A0B 10F9  8/13   39 t states 89 t states best
        POP     HL                      ; 0A0D E1       .
        RET                             ; 0A0E C9       .

Lb42:   LD      A,$41                   ; 0A0F 3E41     >A ack?
        CALL    SSIOBYTE                ; 0A11 CD230A   send byte  sio
        LD      A,($7814)               ; 0A14 3A1478   :.x
        LD      ($7815),A               ; 0A17 321578   2.x
        RET                             ; 0A1A C9       .

Lb55:   LD      BC,$82                  ; 0A1B 018200   ...
        CALL    Lb4                     ; 0A1E CD1200   ... delay?
        LD      A,$41                   ; 0A21 3E41     >A  ack?
SSIOBYTE:
        CPL                             ; 0A23 2F     4  invert accumlator
        LD      C,A                     ; 0A24 4F     4  save to C
Lb167:  LD      A,(STAT2)               ; 0A25 3A0020 13  
        AND     $20                     ; 0A28 E620   7  command
        JR      Z,Lb167                 ; 0A2A 28F9   12/7  wait for command to go high
        LD      A,($7815)               ; 0A2C 3A1578 13  :.x
        OR      A                       ; 0A2F B7     4  .
        JR      NZ,Lb168                ; 0A30 2035   12/7  go send highspeed
        IN      A,($05)                 ; 0A32 DB05   11  start bit
        LD      E,$08                   ; 0A34 1E08   7  .. 8 bits
        CALL    Lb169                   ; 0A36 CDA00C 17 delay 10 t states
        LD      A,(CAUX12)              ; 0A39 3A2078 13  : x
        NEG                             ; 0A3C ED44   8  .D
Lb170:  LD      A,R                     ; 0A3E ED5F   9   ._
        LD      B,$06                   ; 0A40 0606   7  ..
        CALL    CDOWNDELAY              ; 0A42 CD9E0C 17  delay 83 t states
        LD      B,C                     ; 0A45 41     4 
        LD      A,C                     ; 0A46 79     4  
        AND     $01                     ; 0A47 E601   7  ..first bit
        OR      $04                     ; 0A49 F604   7  .. set txd
        LD      C,A                     ; 0A4B 4F     4  high or low with 1
        IN      A,(C)                   ; 0A4C ED78   12  .x send bit
        LD      C,B                     ; 0A4E 48     4  H
        SRL     C                       ; 0A4F CB39   8  .9 shift right
        CALL    Lb169                   ; 0A51 CDA00C 17  call return delay 10 t states
        DEC     E                       ; 0A54 1D     4  .
        JR      NZ,Lb170                ; 0A55 20E7   7/12 send 8 bits  209 t states per bit
        LD      B,$08                   ; 0A57 0608   7  ..
        CALL    CDOWNDELAY              ; 0A59 CD9E0C 17  delay 109 t states
        LD      B,$00                   ; 0A5C 0600   7  ..
        LD      B,$00                   ; 0A5E 0600   7  ..
        IN      A,($04)                 ; 0A60 DB04   11  send stop bit
        LD      B,$0E                   ; 0A62 060E   7 
        JP      CDOWNDELAY              ; 0A64 C39E0C 10  wait 187 t states
				        ; send highspeed ------------------------
Lb168:  PUSH    HL                      ; 0A67 E5       save HL
        LD      D,C                     ; 0A68 51       Q
        LD      B,$08                   ; 0A69 0608     8 bits
        LD      HL,STAT2                ; 0A6B 210020   load sio reg to HL
        LD      E,$01                   ; 0A6E 1E01     clock out mask
        LD      C,$05                   ; 0A70 0E05     send start bit
        RST     18H                     ; 0A72 DF       get start bit
Lb171:  LD      C,$02                   ; 0A73 0E02  7   send data base byte /2
        SRL     D                       ; 0A75 CB3A  8   Shift right, bit 0 to carry
        RL      C                       ; 0A77 CB11  8   rotate left, carry to bit 0
        RST     18H                     ; 0A79 DF    11   send bit
        DJNZ    Lb171                   ; 0A7A 10F7  8/13   47 t states  105 t states best total
					;            to send one BIT
        LD      C,$04                   ; 0A7C 0E04  7   .. set txd high?
        RST     18H                     ; 0A7E DF    11  send stop bit
        POP     HL                      ; 0A7F E1       restore HL
        RET                             ; 0A80 C9       .
caculate-chksum:                        ;----------------------------------
	XOR     A                       ; 0A81 AF       . caculate checksum
Lb172:  ADD     A,(HL)                  ; 0A82 86       .
        ADC     A,$00                   ; 0A83 CE00     ..
        INC     HL                      ; 0A85 23       #
        DJNZ    Lb172                   ; 0A86 10FA     ..
        RET                             ; 0A88 C9       .
DATAINVERT:                             ;invert data in buffer-------------
Lb49:   PUSH    AF                      ; 0A89 F5       .
        PUSH    HL                      ; 0A8A E5       .
        CALL    Lb50                    ; 0A8B CDA60A   ...
        LD      HL,(SECTORBUF)          ; 0A8E 2A2478   *$x
Lb173:  LD      A,(HL)                  ; 0A91 7E       ~
        CPL                             ; 0A92 2F       /
        LD      (HL),A                  ; 0A93 77       w
        INC     HL                      ; 0A94 23       #
        DJNZ    Lb173                   ; 0A95 10FA     ..
        POP     HL                      ; 0A97 E1       .
        POP     AF                      ; 0A98 F1       .
        RET                             ; 0A99 C9       .
                                        ;----------------------------------
Lb40:   LD      HL,STATUS0              ; 0A9A 211E78   !.x
        SET     0,(HL)                  ; 0A9D CBC6     .. set bit 0 of
        RET                             ; 0A9F C9       . 781e to 0
                                        ;----------------------------------
Lb54:   LD      HL,STATUS0              ; 0AA0 211E78   !.x
        SET     1,(HL)                  ; 0AA3 CBCE     ..
        RET                             ; 0AA5 C9       .
; check if sector is 4 or greater------------------------------------------
Lb50:   LD      B,$80                   ; 0AA6 0680     ..
        LD      A,(CAUX12)              ; 0AA8 3A2078   : x
        CP      $04                     ; 0AAB FE04     check if sector 4
        JR      NC,Lb58                 ; 0AAD 3005     0.
        LD      A,($7821)               ; 0AAF 3A2178   2nd byte of CAUX12
        OR      A                       ; 0AB2 B7       .
        RET     Z                       ; 0AB3 C8       .

Lb58:   LD      B,$80                   ; 0AB4 0680     ..bytes per sector single	
        LD      A,(DENFLG)              ; 0AB6 3A1778   :.x
        DEC     A                       ; 0AB9 3D       = 7817 =1 = double
        RET     NZ                      ; 0ABA C0       .
        LD      B,$00                   ; 0ABB 0600     .. bytes per sector
        RET                             ; 0ABD C9       .
LEDNUM:                                 ;-----------------------------------
        CALL    Lb134                   ; 0ABE CDC30A   ...
        EX      DE,HL                   ; 0AC1 EB       .
        RET                             ; 0AC2 C9       .
                                        ;-----------------------------------
Lb134:  LD      HL,$22                  ; 0AC3 212200   !".
Lb174:  INC     HL                      ; 0AC6 23       #
        SUB     $0A                     ; 0AC7 D60A     ..
        JR      NC,Lb174                ; 0AC9 30FB     0.
        ADD     A,$0A                   ; 0ACB C60A     ..
        LD      D,(HL)                  ; 0ACD 56       V
        CALL    GETLEDNUM               ; 0ACE CDED0A   ... get led display number
        LD      E,A                     ; 0AD1 5F       _
        EX      DE,HL                   ; 0AD2 EB       .
        RET                             ; 0AD3 C9       .
G2LEDNUM:
        CALL    Lb176                   ; 0AD4 CDD90A   ...
        EX      DE,HL                   ; 0AD7 EB       Swap DE to HL
        RET                             ; 0AD8 C9       .

Lb176:  LD      E,A                     ; 0AD9 5F       _
        RRCA                            ; 0ADA 0F       rotate right A
        RRCA                            ; 0ADB 0F       put high 4bits
        RRCA                            ; 0ADC 0F       to low 4 bits
        RRCA                            ; 0ADD 0F       
        AND     $0F                     ; 0ADE E60F     only want low 4 bits
        CALL    GETLEDNUM               ; 0AE0 CDED0A   get led number
        LD      D,A                     ; 0AE3 57       store high in D
        LD      A,E                     ; 0AE4 7B       {
        AND     $0F                     ; 0AE5 E60F     get low 4 bits
        CALL    GETLEDNUM               ; 0AE7 CDED0A   get led number
        LD      E,A                     ; 0AEA 5F       store in E
        EX      DE,HL                   ; 0AEB EB       swap to HL.
        RET                             ; 0AEC C9       .
GETLEDNUM:                              ;-------------------------------------
        LD      C,A                     ; 0AED 4F        get number pattern
        LD      B,$00                   ; 0AEE 0600     .. to display
        LD      HL,LDTBL                ; 0AF0 212300   !#.on front
        ADD     HL,BC                   ; 0AF3 09       .leds
        LD      A,(HL)                  ; 0AF4 7E       ~number in
        RET                             ; 0AF5 C9       . A register
                                        ;--------------------------------------
Lb68:   LD      B,$09                   ; 0AF6 0609     ..
        JR      Lb177                   ; 0AF8 1803     ..
Lb179:  RLCA                            ; 0AFA 07       .
        JR      C,Lb178                 ; 0AFB 3802     8.
Lb177:  DJNZ    Lb179                   ; 0AFD 10FB     ..
Lb178:  LD      A,B                     ; 0AFF 78       x

        CALL    GETLEDNUM               ; 0B00 CDED0A   ...get number to display
        LD      L,A                     ; 0B03 6F       o
        RET                             ; 0B04 C9       .
                                        ;--------------------------------------
Lb69:   LD      (LEDERROR),HL           ; 0B05 223878   "8x
        LD      HL,$7837                ; 0B08 213778   !7x
        LD      A,(HL)                  ; 0B0B 7E       ~
        OR      $80                     ; 0B0C F680     ..
        LD      (HL),A                  ; 0B0E 77       w
        CALL    beep                    ; 0B0F CDDF0B   ...
                                        ;--------------------------------------
UPLED-1-2-B-E:
Lb11:   LD      A,($7837)               ; 0B12 3A3778   :7x
        LD      HL,(LEDERROR)           ; 0B15 2A3878   *8x
        ADD     A,A                     ; 0B18 87       .
        JR      C,Lb12                  ; 0B19 380E     8.
        CP      $04                     ; 0B1B FE04     ..
        JR      Z,Lb12                  ; 0B1D 280A     (.
        LD      HL,(DENLET)             ; 0B1F 2A3C78   *<x
        CP      $02                     ; 0B22 FE02     ..
        JR      Z,Lb12                  ; 0B24 2803     (.
        LD      HL,(TLEDNUM1)           ; 0B26 2A3A78   *:x
Lb12:   LD      A,H                     ; 0B29 7C       |
        AND     $7F                     ; 0B2A E67F     ..
        LD      H,A                     ; 0B2C 67       g
        LD      A,($783E)               ; 0B2D 3A3E78   :>x
        AND     $80                     ; 0B30 E680     ..
        OR      H                       ; 0B32 B4       .
        LD      H,A                     ; 0B33 67       g
        LD      A,L                     ; 0B34 7D       }
        AND     $7F                     ; 0B35 E67F     ..
        LD      L,A                     ; 0B37 6F       o
        LD      A,(BUSYLD)              ; 0B38 3A3F78   :?x
        CPL                             ; 0B3B 2F       /
        AND     $80                     ; 0B3C E680     ..
        OR      L                       ; 0B3E B5       .
        LD      L,A                     ; 0B3F 6F       o
        LD      (LED1),HL               ; 0B40 22FF4F   ".O set busy led?
        RET                             ; 0B43 C9       .
BUTTONS:
;CP/M INIT command enters here for buttons
Lb23:   DI                              ; 0B44 F3       .
        LD      A,(STAT1S)              ; 0B45 3A3678   buttons status ram
        LD      B,A                     ; 0B48 47       G
        LD      A,(STAT1)               ; 0B49 3A0110   :..
        LD      C,A                     ; 0B4C 4F       O
        AND     $80                     ; 0B4D E680     .. disk write protect
        JR      Z,Lb180                 ; 0B4F 2808     (.
        LD      A,$FF                   ; 0B51 3EFF     >.
        LD      ($7819),A               ; 0B53 321978   2.x
        LD      ($781A),A               ; 0B56 321A78   2.x
Lb180:  LD      A,C                     ; 0B59 79       y
        AND     $70                     ; 0B5A E670     mask out all but buttons
        LD      (STAT1S),A              ; 0B5C 323678   save to ram
        LD      C,A                     ; 0B5F 4F       O
        LD      A,(STAT1R)              ; 0B60 3A0010   :..
        LD      A,B                     ; 0B63 78       x
        XOR     C                       ; 0B64 A9       .
        AND     C                       ; 0B65 A1       .
        JR      Z,Lb181                 ; 0B66 2853     (S
        LD      B,$01                   ; 0B68 0601     ..
        BIT     5,A                     ; 0B6A CB6F     test ID button pressed
        JR      NZ,Lb182                ; 0B6C 201D      .
        LD      B,$02                   ; 0B6E 0602     ..
        BIT     6,A                     ; 0B70 CB77     test ERROR button being pressed
        JR      NZ,Lb183                ; 0B72 200C      .
        BIT     6,C                     ; 0B74 CB71     test error button held
        JR      Z,Lb184                 ; 0B76 281E     (.
        LD      HL,$86BF                ; 0B78 21BF86   E- front leds
        LD      (LEDERROR),HL           ; 0B7B 223878   set error for front leds
        JR      Lb185                   ; 0B7E 1837     .7
Lb183:  BIT     5,C                     ; 0B80 CB69     test ID button held
        JR      Z,Lb186                 ; 0B82 282F     get out if not
        LD      A,$FF                   ; 0B84 3EFF     yes. set load
        LD      (CPMLOD),A              ; 0B86 321C78   cpm flag. hold id, press error
        JR      Lb181                   ; 0B89 1830     .0
Lb182:  BIT     4,C                     ; 0B8B CB61     test TRACK button held
        JR      Z,Lb186                 ; 0B8D 2824     button pressed?
        LD      A,$FF                   ; 0B8F 3EFF     yes. hold track,press id
        LD      (DENCST),A              ; 0B91 321B78   Track and ID button status
        JR      Lb186                   ; 0B94 181D     density change status
Lb184:  BIT     5,C                     ; 0B96 CB69     test ID button being held
        JR      Z,Lb187                 ; 0B98 2817     (.
        XOR     A                       ; 0B9A AF       hold id, press track
        LD      ($7819),A               ; 0B9B 321978   
        LD      HL,DENFLG               ; 0B9E 211778   change density
        LD      A,(HL)                  ; 0BA1 7E       ~
        INC     A                       ; 0BA2 3C       <
        CP      $03                     ; 0BA3 FE03     ..
        JR      C,Lb188                 ; 0BA5 3801     8.
        XOR     A                       ; 0BA7 AF       .
Lb188:  LD      (HL),A                  ; 0BA8 77       w
        LD      ($7816),A               ; 0BA9 321678   2.x
        CALL    SETDENFLG               ; 0BAC CDF20B   ...
        JR      Lb185                   ; 0BAF 1806     ..
Lb187:  LD      B,$00                   ; 0BB1 0600     ..
Lb186:  LD      A,B                     ; 0BB3 78       x
        LD      ($7837),A               ; 0BB4 323778   1=chck disk density.2=drive type?
Lb185:  EI                              ; 0BB7 FB       .
        CALL    beep                    ; 0BB8 CDDF0B   send beep
Lb181:  CALL    DNUMSWITCH              ; 0BBB CDCE0B   get drive number switch
        EI                              ; 0BBE FB       .
        LD      A,($781A)               ; 0BBF 3A1A78   :.x
        OR      A                       ; 0BC2 B7       .
        CALL    NZ,Lb15                 ; 0BC3 C4BE08   motor on
        XOR     A                       ; 0BC6 AF       .
        LD      ($781A),A               ; 0BC7 321A78   2.x
        CALL    UPLED-1-2-B-E           ; 0BCA CD120B   ...
        RET                             ; 0BCD C9       .
;Gets drive number from dip switches
DNUMSWITCH:
        LD      A,(STAT1)               ; 0BCE 3A0110   :..
        AND     $03                     ; 0BD1 E603     .. Drive number switch
        INC     A                       ; 0BD3 3C       <
        PUSH    AF                      ; 0BD4 F5       .
        CALL    GETLEDNUM               ; 0BD5 CDED0A   ...led display number
        LD      (DNMLED),A              ; 0BD8 323D78   2=x store led drive number in 783d
        POP     AF                      ; 0BDB F1       .
        OR      $30                     ; 0BDC F630     .0 device number drive set to
        RET                             ; 0BDE C9       .
                                        ;---------------------------
;sends audio beep to consol
beep:   LD      C,$00                   ; 0BDF 0E00     ..
        LD      H,$20                   ; 0BE1 2620     & 
Lb190:  LD      L,$90                   ; 0BE3 2E90     ..
        LD      A,C                     ; 0BE5 79       y
        XOR     $01                     ; 0BE6 EE01     ..
        LD      C,A                     ; 0BE8 4F       O
        IN      A,(C)                   ; 0BE9 ED78     .xaudio beep?
Lb189:  DEC     L                       ; 0BEB 2D       -
        JR      NZ,Lb189                ; 0BEC 20FD      .
        DEC     H                       ; 0BEE 25       %
        JR      NZ,Lb190                ; 0BEF 20F2      .
        RET                             ; 0BF1 C9       .
SETDENFLG:
        LD      B,$88                   ; 0BF2 0688     A for front led
        LD      A,(DENFLG)              ; 0BF4 3A1778   :.x on FDC to single or double
        OR      A                       ; 0BF7 B7       set flags  
        JR      Z,Lb191                 ; 0BF8 2808     (. depending on contents
        LD      B,$83                   ; 0BFA 0683     .. of $7817
        CP      $01                     ; 0BFC FE01     .. double
        JR      Z,Lb191                 ; 0BFE 2802     (.
        LD      B,$C6                   ; 0C00 06C6     C for front led display
Lb191:  ADD     A,$FF                   ; 0C02 C6FF     if a =0
        CCF                             ; 0C04 3F       then this will set a to FF
        SBC     A,A                     ; 0C05 9F       else a is set to 0
        AND     $01                     ; 0C06 E601     get low bit
        OR      $08                     ; 0C08 F608     set to dden line
        LD      C,A                     ; 0C0A 4F       O
        IN      A,(C)                   ; 0C0B ED78     set dden to 1 or 0
        LD      A,B                     ; 0C0D 78       B=88 single 83 double
        LD      (DENLET),A              ; 0C0E 323C78   C6 enhanced
        RET                             ; 0C11 C9       88=A 83=b c6=C
                                        ;               for front led display
; this routine determins the FDC type and loads FDC commands to 780C,7810
Lb18:   CALL    Lb14                    ; 0C12 CD3509   .5.
        LD      HL,$0033                ; 0C15 213300   !3.
        LD      A,$D8                   ; 0C18 3ED8     >.
        LD      (COMMANDFDC),A          ; 0C1A 320060   2.`
        LD      B,$0A                   ; 0C1D 060A     ..
Lb192:  DJNZ    Lb192                   ; 0C1F 10FE     ..
        LD      A,(STAT2)               ; 0C21 3A0020   :. 
        AND     $80                     ; 0C24 E680     ..
        JR      Z,Lb193                 ; 0C26 2803     (.irq low
        LD      HL,$C37                 ; 0C28 21370C   !7.
Lb193:  LD      DE,RESTORE              ; 0C2B 110C78   ..x
        LD      BC,$05                  ; 0C2E 010500   ...
        LDIR                            ; 0C31 EDB0     ..
        CALL    Lb14                    ; 0C33 CD3509   .5.
        RET                             ; 0C36 C9       .
	;data..............................................FDC Commands 2797
        DB $00                          ; 0C37 00       Restore 
        DB $88                          ; 0C38 88       Read sector command, side = 0
        DB $A8                          ; 0C39 A8       Write sector command, side = 0
        DB $C0                          ; 0C3A C0       Read address command
        DB $F0                          ; 0C3B F0       Write track command, side = 0
;.................................................................................
; This routine makes sure sector required doesn't excede number of sectors on disk
CHKSECTNUM:
        LD      HL,(CAUX12)             ; 0C3C 2A2078   * x
        DEC     HL                      ; 0C3F 2B       +
        LD      DE,$2D0                 ; 0C40 11D002   ... total sectors on disk. single and double
        LD      A,(DENFLG)              ; 0C43 3A1778   :.x
        CP      $02                     ; 0C46 FE02     ..
        JR      NZ,Lb194                ; 0C48 2003      .
        LD      DE,$410                 ; 0C4A 111004   ... total sectors on disk enhanced 1040
Lb194:  OR      A                       ; 0C4D B7       .
        SBC     HL,DE                   ; 0C4E ED52     .R
        JR      C,Lb195                 ; 0C50 3803     8.
        OR      $FF                     ; 0C52 F6FF     ..
        RET                             ; 0C54 C9       .

Lb195:  XOR     A                       ; 0C55 AF       .
        RET                             ; 0C56 C9       .
; this routine get track and sector number of disk from total sector number
; In command frame
TRKSECT:
Lb87:   LD      HL,(CAUX12)             ; 0C57 2A2078   sector num from cmd frame
        DEC     HL                      ; 0C5A 2B       subtract 1
        LD      BC,$1012                ; 0C5B 011210   18 sectors per track in C
        LD      A,(DENFLG)              ; 0C5E 3A1778   :.x
        CP      $02                     ; 0C61 FE02     enhanced density?
        JR      NZ,Lb196                ; 0C63 2002      .
        LD      C,$1A                   ; 0C65 0E1A     Yes. 26 sectors per track in C
Lb196:  LD      D,$00                   ; 0C67 1600     ..
        XOR     A                       ; 0C69 AF       zero A
Lb198:  SLA     D                       ; 0C6A CB22     shift left to carry
        ADD     HL,HL                   ; 0C6C 29       double sector number
        RLA                             ; 0C6D 17       rotate left accumlator
        CP      C                       ; 0C6E B9       compare a with C
        JR      C,Lb197                 ; 0C6F 3802     8.
        SUB     C                       ; 0C71 91       .
        INC     D                       ; 0C72 14       .
Lb197:  DJNZ    Lb198                   ; 0C73 10F5     ..
        INC     A                       ; 0C75 3C       <
        LD      (SECTORN),A             ; 0C76 322378   2#x
        LD      A,D                     ; 0C79 7A       z
        ADD     A,A                     ; 0C7A 87       .
        LD      (TRACKNUM),A            ; 0C7B 322278   2"x
        RET                             ; 0C7E C9       .
; read track register, multiply out and add sector register. 18/26 sectors allowed for
Lb84:   LD      A,(TRACKFDC)            ; 0C7F 3A0160   :.`read track register
        LD      L,A                     ; 0C82 6F       o
        LD      H,$00                   ; 0C83 2600     &.
        ADD     HL,HL                   ; 0C85 29       )  +2
        LD      E,L                     ; 0C86 5D       ] keep +2
        LD      D,H                     ; 0C87 54       T
        ADD     HL,HL                   ; 0C88 29       ) double
        ADD     HL,HL                   ; 0C89 29       ) double *8
        PUSH    HL                      ; 0C8A E5       . keep *8
        ADD     HL,HL                   ; 0C8B 29       ) *16
        ADD     HL,DE                   ; 0C8C 19       . +2
        POP     DE                      ; 0C8D D1       .
        LD      A,(DENFLG)              ; 0C8E 3A1778   :.x density flag
        CP      $02                     ; 0C91 FE02     ..
        JR      NZ,Lb199                ; 0C93 2001      .
        ADD     HL,DE                   ; 0C95 19       . +8 for enhanced denisty
Lb199:  LD      A,(SECTORFDC)           ; 0C96 3A0260   :.`read sector register
        LD      E,A                     ; 0C99 5F       _
        LD      D,$00                   ; 0C9A 1600     ..get sect number?
        ADD     HL,DE                   ; 0C9C 19       . add it in
        RET                             ; 0C9D C9       .
;Countdown delay. load B with number and call here
CDOWNDELAY:
        DJNZ    CDOWNDELAY              ; 0C9E 10FE   8/13  
Lb169:  RET                             ; 0CA0 C9     10  .

; calls to rouitines. routine number held in C. legal entry points for CPM etc
Lb1:    PUSH    AF                      ; 0CA1 F5       .
        PUSH    DE                      ; 0CA2 D5       .
        LD      L,C                     ; 0CA3 69       i
        LD      H,$00                   ; 0CA4 2600     &.
        ADD     HL,HL                   ; 0CA6 29        X 2
        LD      DE,$CB2                 ; 0CA7 11B20C   ...
        ADD     HL,DE                   ; 0CAA 19       Add offset
        LD      E,(HL)                  ; 0CAB 5E       ^
        INC     HL                      ; 0CAC 23       #
        LD      D,(HL)                  ; 0CAD 56       V
        EX      DE,HL                   ; 0CAE EB       .
        POP     DE                      ; 0CAF D1       .
        POP     AF                      ; 0CB0 F1       .
        JP      (HL)                    ; 0CB1 E9       .
;------------------------------------------------------------------------------
; pointers to routines. Used mostly for INDUS CP/M and DIAG program. 
;	INDUS CP/M INIT disk jumps directly to routines in rom.
;------------------------------------------------------------------------------
        WORD VERNUM                     ; 0CB2 F40C  0  $cf4 version number
        WORD TRK0                       ; 0CB4 C107  1  $7c1 step to track zero?
        WORD STTRACK                    ; 0CB6 F007  2  $7F0 step to track?
        WORD XCMD1                      ; 0CB8 CF04  3  $4CF read sector
        WORD XCMD2                      ; 0CBA CB04  4  $4cb write sector
        WORD GSIOBYTE                   ; 0CBC D109  5  $9D1 Get sio byte at 19200 baud
        WORD SSIOBYTE                   ; 0CBE 230A  6  $A23 Send sio byte 
        WORD GSIOBLOCK                  ; 0CC0 7B09  7  $97B Get sio Block. de=Buffer. B=Number to get
        WORD SSIOBLOCK                  ; 0CC2 AB09  8  $9AB Send sio block. de=buffer. B=Number to send
        WORD GETLEDNUM                  ; 0CC4 ED0A  9  $AED Get led pattern num. A=Number
        WORD LEDNUM                     ; 0CC6 BE0A  a  $ABE Led NUM. What does it do?       .
        WORD G2LEDNUM                   ; 0CC8 D40A  b  $AD4 A= BCD LED NUM. DE=Led data returned
        WORD MONOFF                     ; 0CCA BC08  c  $8BC Motor on or off?
        WORD BUTTONS                    ; 0CCC 440B  d  $B44 Button status?
        WORD BC7824                     ; 0CCE DC0C  e  $CDC Returns sector buffer pointer
        WORD IX780C                     ; 0CD0 E00C  f  $CE0 returns FDC Restore command
        WORD beep                       ; 0CD2 DF0B  10  $BDF Send Beep to audio in line
        WORD UPLED-1-2-B-E              ; 0CD4 120B  11  $B12 Update front led display, Busy and Enpre
        WORD LBCDE                      ; 0CD6 E50C  12  $CE5 returns FDC read/write sector commands
        WORD SETDENFLG                  ; 0CD8 F20B  13  $BF2 set density Flags and DDEN
        WORD LDEIX                      ; 0CDA EC0C  14  $CEC DE=781F,IX=$7826. flags for ?
BC7824:
        LD      BC,SECTORBUF            ; 0CDC 012478   .$x
        RET                             ; 0CDF C9       .
IX780C:
        LD      IX,RESTORE              ; 0CE0 DD210C78 .!.x
        RET                             ; 0CE4 C9       .
LBCDE
        LD      BC,READSECT             ; 0CE5 010D78   ..x
        LD      DE,WRITESECT            ; 0CE8 110E78   ..x
        RET                             ; 0CEB C9       .
LDEIX
        LD      DE,$FDCSTA              ; 0CEC 111F78   ..x
        LD      IX,$7826                ; 0CEF DD212678 .!&x
        RET                             ; 0CF3 C9       .
VERNUM
        LD      DE,$120                 ; 0CF4 112001   . . version number
        RET                             ; 0CF7 C9       .
;----------------------------------------------------------------------------
;routines for startup test.
Lb218:  DI                              ; 0CF8 F3       .
        LD      SP,HL                   ; 0CF9 F9       .
Lb213:  DI                              ; 0CFA F3       .
        LD      A,$89                   ; 0CFB 3E89     >.
        LD      (LED2),A                ; 0CFD 320050   2. figure H
        LD      B,$70                   ; 0D00 0670     .p
        LD      C,$00                   ; 0D02 0E00     ..
Lb205:  LD      A,(STAT1R)              ; 0D04 3A0010   :.. front buttons
        LD      A,(STAT1)               ; 0D07 3A0110   :..
        AND     B                       ; 0D0A A0       .
        JR      Z,Lb204                 ; 0D0B 280D     (.
        DEC     L                       ; 0D0D 2D       -
        JR      NZ,Lb205                ; 0D0E 20F4      .
        LD      L,$90                   ; 0D10 2E90     ..
        LD      A,C                     ; 0D12 79       y
        XOR     $01                     ; 0D13 EE01     ..
        LD      C,A                     ; 0D15 4F       O
        IN      A,(C)                   ; 0D16 ED78     .x audio beep
        JR      Lb205                   ; 0D18 18EA     ..
Lb204:  LD      A,(STAT1R)              ; 0D1A 3A0010   :..
        LD      A,(STAT1)               ; 0D1D 3A0110   :..
        AND     B                       ; 0D20 A0       .
        CP      B                       ; 0D21 B8       .
        JR      Z,Lb206                 ; 0D22 280D     (.
        DEC     L                       ; 0D24 2D       -
        JR      NZ,Lb204                ; 0D25 20F3      .
        LD      L,$90                   ; 0D27 2E90     ..
        LD      A,C                     ; 0D29 79       y
        XOR     $01                     ; 0D2A EE01     .. audio beep
        LD      C,A                     ; 0D2C 4F       O
        IN      A,(C)                   ; 0D2D ED78     .x
        JR      Lb204                   ; 0D2F 18E9     ..
Lb206:  LD      A,$C6                   ; 0D31 3EC6     >. figure C
        LD      (LED2),A                ; 0D33 320050   2.P
        SBC     HL,HL                   ; 0D36 ED62     .b
        ADD     HL,SP                   ; 0D38 39       9
        JP      (HL)                    ; 0D39 E9       . jump somewhere

Lb207:  HALT                            ; 0D3A 76       v
;startup test routine------------------------------------------------------
Lb0:    DI                              ; 0D3B F3       .init routine
        IN      A,($03)                 ; 0D3C DB03     ip enable?
        IN      A,($04)                 ; 0D3E DB04     txd high
        IN      A,($06)                 ; 0D40 DB06     rxd high
        IN      A,($0A)                 ; 0D42 DB0A     motor off
        IN      A,($0C)                 ; 0D44 DB0C     ip on?
        XOR     A                       ; 0D46 AF       zero A
        JR      NZ,Lb207                ; 0D47 20F1     get out if A <>0
        JR      C,Lb207                 ; 0D49 38EF     8.
        JP      P0,Lb207                ; 0D4B E23A0D   .:.
        JP      M,Lb207                 ; 0D4E FA3A0D   .:.
        DEC     A                       ; 0D51 3D       =
        ADD     A,A                     ; 0D52 87       .
        JR      Z,Lb207                 ; 0D53 28E5     check zero flag
        JR      NC,Lb207                ; 0D55 30E3     check carry flag
        JP      PE,Lb207                ; 0D57 EA3A0D   check posative flag
        JP      P,Lb207                 ; 0D5A F23A0D   check paraity flag
        LD      A,$55                   ; 0D5D 3E55     >U
        CP      $55                     ; 0D5F FE55     .U
        JR      NZ,Lb207                ; 0D61 20D7      .
        RLCA                            ; 0D63 07       .
        CP      $AA                     ; 0D64 FEAA     ..
        JR      NZ,Lb207                ; 0D66 20D2      .
        LD      A,$80                   ; 0D68 3E80     >. Figure 8
        LD      (LED1),A                ; 0D6A 32FF4F   2.O
        LD      (LED2),A                ; 0D6D 320050   2.P
        XOR     A                       ; 0D70 AF       .
Lb208:  LD      B,A                     ; 0D71 47       check registers
        LD      C,B                     ; 0D72 48       H
        LD      D,C                     ; 0D73 51       Q
        LD      E,D                     ; 0D74 5A       Z
        LD      H,E                     ; 0D75 63       c
        LD      L,H                     ; 0D76 6C       l
        EX      AF,A'F'                 ; 0D77 08       .
        LD      A,L                     ; 0D78 7D       }
        LD      I,A                     ; 0D79 ED47     .G
        LD      A,I                     ; 0D7B ED57     .W
        EXX                             ; 0D7D D9       .
        LD      B,A                     ; 0D7E 47       G
        LD      C,B                     ; 0D7F 48       H
        LD      D,C                     ; 0D80 51       Q
        LD      E,D                     ; 0D81 5A       Z
        LD      H,E                     ; 0D82 63       c
        LD      L,H                     ; 0D83 6C       l
        EX      AF,A'F'                 ; 0D84 08       .
        CP      L                       ; 0D85 BD       .
        JR      NZ,Lb207                ; 0D86 20B2      .
        INC     A                       ; 0D88 3C       <
        JR      NZ,Lb208                ; 0D89 20E6      .
        LD      B,A                     ; 0D8B 47       G
        LD      C,A                     ; 0D8C 4F       O
Lb209:  DEC     C                       ; 0D8D 0D       .
        JR      NZ,Lb209                ; 0D8E 20FD      .
        DJNZ    Lb209                   ; 0D90 10FB     ..
        XOR     A                       ; 0D92 AF       .
        LD      E,A                     ; 0D93 5F       _
        LD      D,A                     ; 0D94 57       W
Lb210:  EX      DE,HL                   ; 0D95 EB       .
        LD      SP,HL                   ; 0D96 F9       .
        EX      DE,HL                   ; 0D97 EB       .
        LD      L,A                     ; 0D98 6F       o
        LD      H,A                     ; 0D99 67       g
        ADD     HL,SP                   ; 0D9A 39       9
        SBC     HL,DE                   ; 0D9B ED52     .R
        JR      NZ,Lb207                ; 0D9D 209B      .
        INC     E                       ; 0D9F 1C       .
        INC     D                       ; 0DA0 14       .
        JR      NZ,Lb210                ; 0DA1 20F2      end test processor
        XOR     A                       ; 0DA3 AF       zero A
        LD      I,A                     ; 0DA4 ED47     .G
        LD      A,(STAT1R)              ; 0DA6 3A0010   :..
        LD      A,(STAT1)               ; 0DA9 3A0110   :..
        LD      B,A                     ; 0DAC 47       G
        OR      $70                     ; 0DAD F670     .p
        SUB     B                       ; 0DAF 90       .
        JR      NZ,Lb211                ; 0DB0 2003      .
        DEC     A                       ; 0DB2 3D       =
        LD      I,A                     ; 0DB3 ED47     .G
Lb211:  LD      HL,$C6C0                ; 0DB5 21C0C6   front leds = C0
        LD      (LED1),HL               ; 0DB8 22FF4F   ".O
        LD      SP,$DDC                 ; 0DBB 31DC0D   1..
        LD      BC,$FFE                 ; 0DBE 01FE0F   rom to end chksum
        LD      DE,$00                  ; 0DC1 110000   ...
        LD      HL,$00                  ; 0DC4 210000   !..
Lb212:  LD      A,(HL)                  ; 0DC7 7E       ~
        ADD     A,E                     ; 0DC8 83       add up chksum
        LD      E,A                     ; 0DC9 5F       _
        LD      A,D                     ; 0DCA 7A       z
        ADC     A,$00                   ; 0DCB CE00     ..
        LD      D,A                     ; 0DCD 57       W test rom
        INC     HL                      ; 0DCE 23       #
        DEC     BC                      ; 0DCF 0B       .
        LD      A,B                     ; 0DD0 78       x
        OR      C                       ; 0DD1 B1       .
        JR      NZ,Lb212                ; 0DD2 20F3      .
        LD      HL,($FFE)               ; 0DD4 2AFE0F   *..
        SBC     HL,DE                   ; 0DD7 ED52     .R
        JP      NZ,Lb213                ; 0DD9 C2FA0C   jump if problem
        LD      A,$F9                   ; 0DDC 3EF9     1 in front led
        LD      (LED1),A                ; 0DDE 32FF4F   2.O
        LD      SP,$E08                 ; 0DE1 31080E   1..
        LD      A,$55                   ; 0DE4 3E55     >U
Lb216:  LD      HL,RINVEC               ; 0DE6 210078   ram start
        LD      BC,$800                 ; 0DE9 010008   ram length
Lb214:  LD      (HL),A                  ; 0DEC 77       w
        RLCA                            ; 0DED 07       .
        INC     HL                      ; 0DEE 23       #
        DEC     C                       ; 0DEF 0D       .
        JR      NZ,Lb214                ; 0DF0 20FA      .
        DJNZ    Lb214                   ; 0DF2 10F8     ..
        LD      HL,RINVEC               ; 0DF4 210078   !.x
        LD      BC,$800                 ; 0DF7 010008   ...
Lb215:  CP      (HL)                    ; 0DFA BE       .
        JP      NZ,Lb213                ; 0DFB C2FA0C   ...
        RLCA                            ; 0DFE 07       .ram quick test
        INC     HL                      ; 0DFF 23       #
        DEC     C                       ; 0E00 0D       .
        JR      NZ,Lb215                ; 0E01 20F7      .
        DJNZ    Lb215                   ; 0E03 10F5     ..
        RLCA                            ; 0E05 07       .
        JR      NC,Lb216                ; 0E06 30DE     0.
        LD      A,I                     ; 0E08 ED57     .W
        OR      A                       ; 0E0A B7       .
        JR      NZ,Lb217                ; 0E0B 2026      &
        LD      A,$A4                   ; 0E0D 3EA4     >. figure 2
        LD      (LED1),A                ; 0E0F 32FF4F   2.O
        LD      HL,$E33                 ; 0E12 21330E   !3.
        LD      SP,$8000                ; 0E15 310080   1..
        LD      DE,$00                  ; 0E18 110000   ...
Lb219:  PUSH    DE                      ; 0E1B D5       .
        POP     IX                      ; 0E1C DDE1     ..
        PUSH    IX                      ; 0E1E DDE5     ..
        POP     IY                      ; 0E20 FDE1     ..index register test
        PUSH    IY                      ; 0E22 FDE5     ..
        POP     BC                      ; 0E24 C1       .
        LD      A,D                     ; 0E25 7A       z
        CP      B                       ; 0E26 B8       .
        JP      NZ,Lb218                ; 0E27 C2F80C   ...
        LD      A,E                     ; 0E2A 7B       {
        CP      C                       ; 0E2B B9       .
        JP      NZ,Lb218                ; 0E2C C2F80C   ...
        INC     E                       ; 0E2F 1C       .
        INC     D                       ; 0E30 14       .
        JR      NZ,Lb219                ; 0E31 20E8      .
Lb217:  LD      A,$B0                   ; 0E33 3EB0     >. figure 3
        LD      (LED1),A                ; 0E35 32FF4F   2.O
        LD      SP,$EB1                 ; 0E38 31B10E   1..
        IN      A,($08)                 ; 0E3B DB08     ..dden low
        LD      A,$D8                   ; 0E3D 3ED8     >.
        LD      (COMMANDFDC),A          ; 0E3F 320060   2.`
        LD      B,$0F                   ; 0E42 060F     ..
Lb220:  DJNZ    Lb220                   ; 0E44 10FE     ..
        LD      A,(STAT2)               ; 0E46 3A0020   :. irq low
        AND     $80                     ; 0E49 E680     ..
        JP      Z,Lb213                 ; 0E4B CAFA0C   ... test fdc
        LD      A,$D0                   ; 0E4E 3ED0     >.
        LD      (COMMANDFDC),A          ; 0E50 320060   2.`
        LD      B,$0F                   ; 0E53 060F     ..
Lb221:  DJNZ    Lb221                   ; 0E55 10FE     ..
        LD      A,(STATUSFDC)           ; 0E57 3A0060   :.`
        LD      B,$0F                   ; 0E5A 060F     ..
Lb222:  DJNZ    Lb222                   ; 0E5C 10FE     ..
        LD      A,(STAT2)               ; 0E5E 3A0020   :. 
        AND     $80                     ; 0E61 E680     .. irq high
        JP      NZ,Lb213                ; 0E63 C2FA0C   ...
        XOR     A                       ; 0E66 AF       .
Lb225:  LD      HL,TRACKFDC             ; 0E67 210160   !.`
        LD      B,$03                   ; 0E6A 0603     ..
Lb223:  LD      (HL),A                  ; 0E6C 77       w
        INC     HL                      ; 0E6D 23       #
        INC     A                       ; 0E6E 3C       <
        DJNZ    Lb223                   ; 0E6F 10FB     ..
        LD      B,$03                   ; 0E71 0603     ..
Lb224:  DEC     HL                      ; 0E73 2B       +
        DEC     A                       ; 0E74 3D       =
        CP      (HL)                    ; 0E75 BE       .
        JP      NZ,Lb213                ; 0E76 C2FA0C   ...
        DJNZ    Lb224                   ; 0E79 10F8     ..
        INC     A                       ; 0E7B 3C       <
        JR      NZ,Lb225                ; 0E7C 20E9      .
        LD      A,(TRACKFDC)            ; 0E7E 3A0160   :.`
        LD      (DATAFDC),A             ; 0E81 320360   2.`
        LD      A,$10                   ; 0E84 3E10     >.
        LD      (COMMANDFDC),A          ; 0E86 320060   2.`
Lb226:  LD      A,(STAT2)               ; 0E89 3A0020   :. 
        AND     $80                     ; 0E8C E680     .. wait for irq to go low
        JR      Z,Lb226                 ; 0E8E 28F9     (.
        LD      A,(STATUSFDC)           ; 0E90 3A0060   :.`
        IN      A,($03)                 ; 0E93 DB03     ..ip enable
        IN      A,($0D)                 ; 0E95 DB0D     ..ip on
        LD      B,$07                   ; 0E97 0607     ..
Lb227:  DJNZ    Lb227                   ; 0E99 10FE     ..
        LD      A,(STATUSFDC)           ; 0E9B 3A0060   :.`
        AND     $02                     ; 0E9E E602     ..
        JP      Z,Lb213                 ; 0EA0 CAFA0C   ...
        IN      A,($0C)                 ; 0EA3 DB0C     ..ip off?
        LD      B,$07                   ; 0EA5 0607     ..
Lb228:  DJNZ    Lb228                   ; 0EA7 10FE     ..
        LD      A,(STATUSFDC)           ; 0EA9 3A0060   :.`
        AND     $02                     ; 0EAC E602     ..
        JP      NZ,Lb213                ; 0EAE C2FA0C   ...
        LD      A,I                     ; 0EB1 ED57     .W
        OR      A                       ; 0EB3 B7       .
        JR      Z,Lb229                 ; 0EB4 2837     (7
        LD      A,$99                   ; 0EB6 3E99     >figure 4
        LD      (LED1),A                ; 0EB8 32FF4F   2.O
        LD      SP,$EED                 ; 0EBB 31ED0E   1..
        LD      B,$3F                   ; 0EBE 063F     .?
        IN      A,($06)                 ; 0EC0 DB06     ..rxd high
        IN      A,($04)                 ; 0EC2 DB04     ..txd high
        LD      A,(STAT2)               ; 0EC4 3A0020   :. 
        AND     B                       ; 0EC7 A0       .
        CP      B                       ; 0EC8 B8       .
        JP      NZ,Lb213                ; 0EC9 C2FA0C   ...
        IN      A,($07)                 ; 0ECC DB07     ..rxd low
        LD      A,(STAT2)               ; 0ECE 3A0020   :. 
        AND     B                       ; 0ED1 A0       .
        CP      $1C                     ; 0ED2 FE1C     ..
        JP      NZ,Lb213                ; 0ED4 C2FA0C   ...
        IN      A,($05)                 ; 0ED7 DB05     ..txd low
        LD      A,(STAT2)               ; 0ED9 3A0020   :. 
        AND     B                       ; 0EDC A0       .
        JP      NZ,Lb213                ; 0EDD C2FA0C   ...
        IN      A,($06)                 ; 0EE0 DB06     ..rxd high
        LD      A,(STAT2)               ; 0EE2 3A0020   :. 
        AND     B                       ; 0EE5 A0       .
        CP      $23                     ; 0EE6 FE23     .#
        JP      NZ,Lb213                ; 0EE8 C2FA0C   ...
        IN      A,($04)                 ; 0EEB DB04     ..txd high
Lb229:  LD      A,I                     ; 0EED ED57     .W
        OR      A                       ; 0EEF B7       .
        JR      Z,Lb230                 ; 0EF0 2840     (@
        LD      A,$92                   ; 0EF2 3E92     figure 5
        LD      (LED1),A                ; 0EF4 32FF4F   2.O
        IM      1                       ; 0EF7 ED56     .V
        LD      A,$C3                   ; 0EF9 3EC3     >.
        LD      (RINVEC),A              ; 0EFB 320078   2.x
        LD      HL,$F2E                 ; 0EFE 212E0F   !..
        LD      ($7801),HL              ; 0F01 220178   ".x
        LD      SP,$8000                ; 0F04 310080   1..
        LD      HL,$F32                 ; 0F07 21320F   !2.
        LD      C,$06                   ; 0F0A 0E06     ..rxd high
        IN      B,(C)                   ; 0F0C ED40     .@??????
        EI                              ; 0F0E FB       .
        NOP                             ; 0F0F 00       .
        XOR     A                       ; 0F10 AF       .
        NOP                             ; 0F11 00       .test interupt circuit
        DI                              ; 0F12 F3       .
        OR      A                       ; 0F13 B7       .
        JP      NZ,Lb218                ; 0F14 C2F80C   ...
        INC     C                       ; 0F17 0C       .
        EI                              ; 0F18 FB       .
        IN      B,(C)                   ; 0F19 ED40     .@rxd low 
        NOP                             ; 0F1B 00       .
        DI                              ; 0F1C F3       .test sio bus
        OR      A                       ; 0F1D B7       .look for shorting plug
        JP      Z,Lb218                 ; 0F1E CAF80C   ...
        XOR     A                       ; 0F21 AF       .
        DEC     C                       ; 0F22 0D       .
        EI                              ; 0F23 FB       .
        IN      B,(C)                   ; 0F24 ED40     .@txd low
        NOP                             ; 0F26 00       .
        DI                              ; 0F27 F3       .
        OR      A                       ; 0F28 B7       .
        JP      NZ,Lb218                ; 0F29 C2F80C   ...
        JR      Lb230                   ; 0F2C 1804     ..
        LD      A,$FF                   ; 0F2E 3EFF     >.
        RETI                            ; 0F30 ED4D     .M

Lb230:  LD      A,I                     ; 0F32 ED57     .W
        OR      A                       ; 0F34 B7       .
        JR      Z,Lb231                 ; 0F35 2861     (a
        LD      A,$82                   ; 0F37 3E82     >. figure 6
        LD      (LED1),A                ; 0F39 32FF4F   2.O
        LD      SP,$F98                 ; 0F3C 31980F   1..
        LD      BC,$7FF                 ; 0F3F 01FF07   ...
        LD      DE,$7801                ; 0F42 110178   ..x
        LD      HL,RINVEC               ; 0F45 210078   !.x
        LD      (HL),$00                ; 0F48 3600     6.
        LDIR                            ; 0F4A EDB0     ..clear ram
        LD      E,$C6                   ; 0F4C 1EC6     ..
        LD      A,$01                   ; 0F4E 3E01     >.
Lb235:  LD      HL,RINVEC               ; 0F50 210078   !.x
        LD      BC,$800                 ; 0F53 010008   ...
        EXX                             ; 0F56 D9       .
        LD      DE,RINVEC               ; 0F57 110078   ..x
        EXX                             ; 0F5A D9       .
Lb234:  LD      (HL),A                  ; 0F5B 77       w
        EX      AF,A'F'                 ; 0F5C 08       .
        EXX                             ; 0F5D D9       .
        LD      HL,RINVEC               ; 0F5E 210078   !.x
        LD      BC,$800                 ; 0F61 010008   ...
        XOR     A                       ; 0F64 AF       .
Lb233:  CP      (HL)                    ; 0F65 BE       .
        JR      Z,Lb232                 ; 0F66 280A     (.
        LD      A,E                     ; 0F68 7B       {
        SUB     L                       ; 0F69 95       .
        JP      NZ,Lb213                ; 0F6A C2FA0C   ...
        LD      A,D                     ; 0F6D 7A       z
        SUB     H                       ; 0F6E 94       .
        JP      NZ,Lb213                ; 0F6F C2FA0C   ...
Lb232:  INC     HL                      ; 0F72 23       #
        DEC     C                       ; 0F73 0D       .
        JR      NZ,Lb233                ; 0F74 20EF      .
        DJNZ    Lb233                   ; 0F76 10ED     ..
        INC     DE                      ; 0F78 13       .
        EXX                             ; 0F79 D9       .
        EX      AF,A'F'                 ; 0F7A 08       .
        CP      (HL)                    ; 0F7B BE       .
        JP      NZ,Lb213                ; 0F7C C2FA0C   ...
        LD      (HL),$00                ; 0F7F 3600     6.
        INC     HL                      ; 0F81 23       #
        DEC     C                       ; 0F82 0D       .
        JR      NZ,Lb234                ; 0F83 20D6      .
        EX      AF,A'F'                 ; 0F85 08       .
        LD      A,E                     ; 0F86 7B       {
        XOR     $61                     ; 0F87 EE61     .a
        LD      E,A                     ; 0F89 5F       _
        LD      (LED2),A                ; 0F8A 320050   2.P
        EX      AF,A'F'                 ; 0F8D 08       .
        DJNZ    Lb234                   ; 0F8E 10CB     ..
        RLCA                            ; 0F90 07       .
        JR      NC,Lb235                ; 0F91 30BD     0.
        LD      A,$C6                   ; 0F93 3EC6     >.
        LD      (LED2),A                ; 0F95 320050   2.P
Lb231:  LD      HL,$86BF                ; 0F98 21BF86   !..
        LD      (LED1),HL               ; 0F9B 22FF4F   ".O
        LD      A,I                     ; 0F9E ED57     .W
        OR      A                       ; 0FA0 B7       .
        JP      Z,Lb236                 ; 0FA1 CA8400   ... jmp init
        LD      C,$00                   ; 0FA4 0E00     ..
Lb237:  DEC     L                       ; 0FA6 2D       -
        JR      NZ,Lb237                ; 0FA7 20FD      .
        LD      L,$90                   ; 0FA9 2E90     ..
        LD      A,C                     ; 0FAB 79       y
        XOR     $01                     ; 0FAC EE01     ..
        LD      C,A                     ; 0FAE 4F       O
        IN      A,(C)                   ; 0FAF ED78     .x audio?
        LD      B,$70                   ; 0FB1 0670     .p
        LD      A,(STAT1R)              ; 0FB3 3A0010   :..
        LD      A,(STAT1)               ; 0FB6 3A0110   :..
        AND     B                       ; 0FB9 A0       .
        CP      B                       ; 0FBA B8       .
        JR      NZ,Lb237                ; 0FBB 20E9      .
        JP      Lb0                     ; 0FBD C33B0D   .;.
        NOP                             ; 0FC0 00       .
        NOP                             ; 0FC1 00       .
        NOP                             ; 0FC2 00       .
        NOP                             ; 0FC3 00       .
        NOP                             ; 0FC4 00       .
        NOP                             ; 0FC5 00       .
        NOP                             ; 0FC6 00       .
        NOP                             ; 0FC7 00       .
        NOP                             ; 0FC8 00       .
        NOP                             ; 0FC9 00       .
        NOP                             ; 0FCA 00       .
        NOP                             ; 0FCB 00       .
        NOP                             ; 0FCC 00       .
        NOP                             ; 0FCD 00       .
        NOP                             ; 0FCE 00       .
        NOP                             ; 0FCF 00       .
        NOP                             ; 0FD0 00       .
        NOP                             ; 0FD1 00       .
        NOP                             ; 0FD2 00       .
        LD      BC,$704                 ; 0FD3 010407   ...
        LD      A,(BC)                  ; 0FD6 0A       .
        INC     H                       ; 0FD7 24       $
        LD      B,B                     ; 0FD8 40       @
        INC     L                       ; 0FD9 2C       ,
        RLA                             ; 0FDA 17       .
        SCF                             ; 0FDB 37       7
        ADD     HL,DE                   ; 0FDC 19       .
        INC     C                       ; 0FDD 0C       .
        LD      A,($383C)               ; 0FDE 3A3C38   :<8
        CCF                             ; 0FE1 3F       ?
        LD      A,$0D                   ; 0FE2 3E0D     >.
        LD      C,$0F                   ; 0FE4 0E0F     ..
        DB $10,$1E                      ; 0FE6 101E     ..
        RRA                             ; 0FE8 1F       .
        DEC     E                       ; 0FE9 1D       .
        LD      H,$2E                   ; 0FEA 262E     &.
        LD      ($2023),HL              ; 0FEC 222320   "# 
        LD      A,B                     ; 0FEF 78       x

        DB "(C)1983,KSB."    
       
        DB $20,$01                      ; version number
        DB $C9,$C2                      ; rom chksum


;⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
;≥ DISASSEMBLED FILE - DONE WITH DISASM 1.0· ≥
;≥ Date: 22-06-2008  Time: 16:41             ≥
;≥ (c) 1996 Channex aka Lasse S. Tassing     ≥
;≥ Email: ltassing.ite.dk                    ≥
;¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ

; ƒ[CODE]ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
; LABEL INSTR.  PARAMETER(s)              ADR/OPCODE    ASCII
; Indus syncromesh code loaded to drive from SDX. for version 1.2 rom
; included is routine that loads this code and sets $7809 to JP $78B4
; Code for firmware 1.1 is similar but starts starts 2 bytes lower and calls to
; firmware are different
; 
       
        ORG     7B84H

Lbb:    LD      HL,$00                  ; 7B84 210000   !..
        LD      ($782C),HL              ; 7B87 222C78   ",x
        LD      A,C                     ; 7B8A 79       Is High bit set in command?
        RLCA                            ; 7B8B 07       .
        RET     NC                      ; 7B8C D0       get out if not

        POP     HL                      ; 7B8D E1       .
        SBC     A,A                     ; 7B8E 9F       .
        LD      ($7814),A               ; 7B8F 321478   2.x
        RES     7,C                     ; 7B92 CBB9     clear the high bit
        LD      B,$08                   ; 7B94 0608     number of commands to check
        LD      HL,$7BB8                ; 7B96 21B87B   data where commands and pointers are
Lb1a:   LD      A,(HL)                  ; 7B99 7E       ~
        INC     HL                      ; 7B9A 23       #
        CP      C                       ; 7B9B B9       command match?
        JR      Z,Lb0a                  ; 7B9C 2806     jump if it is
        INC     HL                      ; 7B9E 23       point to next command
        INC     HL                      ; 7B9F 23       #
        DJNZ    Lb1a                    ; 7BA0 10F7     all 8 commands checked?
        JR      Lb2a                    ; 7BA2 1808     ..
Lb0a:   LD      A,(HL)                  ; 7BA4 7E       ~
        INC     HL                      ; 7BA5 23       #
        LD      H,(HL)                  ; 7BA6 66       f
        LD      L,A                     ; 7BA7 6F       o
        CALL    Lb3a                    ; 7BA8 CDB77B   go jump to command
        RET     Z                       ; 7BAB C8       jump if command success

Lb2a:   LD      BC,$82                  ; 7BAC 018200   load 82
        CALL    Lb4                     ; 7BAF CD1200   go delay
        LD      A,$4E                   ; 7BB2 3E4E     Load 'N'ak
        JP      SENDBYTEHS              ; 7BB4 C3CC7E   go send Nak and return to rom
Lb3a:   JP      (HL)                    ; 7BB7 E9       Jump to command

        DB $4E                          ; 7BB8 4E       N command
        WORD GETBLOCKHS                 ; 7BB9 777C  
        DB $4F                          ; 7BBB 4F       O command
        WORD PUTBLOCKHS                 ; 7BBC A97C      
        DB $50                          ; 7BBE 50       P put
        WORD PUTHS                      ; 7BBF 2E7C     
        DB $52                          ; 7BC1 52       R read
        WORD READHS                     ; 7BC2 1A7C     
        DB $53                          ; 7BC4 53       S status
        WORD STATUSHS                   ; 7BC5 D07B     
        DB $57                          ; 7BC7 57       W write
        WORD WRITEHS                    ; 7BC8 357C     
        DB $21                          ; 7BCA 21       ! format
        WORD FORMATHS                   ; 7BCB D27C
        DB $23                          ; 7BCD 23       # format skewed?
        WORD FORMATSPL                  ; 7BCE D87C

STATUSHS:
        CALL    SENDACK19               ; 7BD0 CDB87E   Send Ack at 19200
        CALL    Lb36                    ; 7BD3 CD6005   .`.
        CALL    Lb14                    ; 7BD6 CD3509   .5.

        LD      C,$08                   ; 7BD9 0E08     .. patched
        LD      A,($DENFLG)             ; 7BDB 3A1778   :.x
        OR      A                       ; 7BDE B7       .
        JR      Z,Lb9a                  ; 7BDF 2805     (.
        ADD     A,$FE                   ; 7BE1 C6FE     ..
        RRA                             ; 7BE3 1F       .
        AND     $A0                     ; 7BE4 E6A0     ..
Lb9a:   LD      B,A                     ; 7BE6 47       G
        NOP                             ; 7BE7 00       .
        NOP                             ; 7BE8 00       .
        NOP                             ; 7BE9 00       .
        NOP                             ; 7BEA 00       .
        NOP                             ; 7BEB 00       .
        NOP                             ; 7BEC 00       . end patched

;        LD      A,($6000)               ; 7BD9 3A0060   orignal version
;        AND     $40                     ; 7BDC E640     .@
;        ADD     A,$FF                   ; 7BDE C6FF     ..
;        SBC     A,A                     ; 7BE0 9F       .
;        AND     $08                     ; 7BE1 E608     ..
;        LD      C,A                     ; 7BE3 4F       O
;        LD      A,($7817)               ; 7BE4 3A1778   :.x
;        ADD     A,$FF                   ; 7BE7 C6FF     ..
;        SBC     A,A                     ; 7BE9 9F       .
;        AND     $20                     ; 7BEA E620     . 
;        LD      B,A                     ; 7BEC 47       end orignal version

        LD      A,(STATUS0)             ; 7BED 3A1E78   :.x
        AND     $57                     ; 7BF0 E657     .W
        OR      B                       ; 7BF2 B0       .
        OR      C                       ; 7BF3 B1       .
        LD      HL,BUFFER               ; 7BF4 214279   !By
        LD      (HL),A                  ; 7BF7 77       w
        INC     HL                      ; 7BF8 23       #
        CALL    SETDENFLG               ; 7BF9 CDF20B   ...
        LD      A,($781F)               ; 7BFC 3A1F78   :.x
        CPL                             ; 7BFF 2F       /
        LD      (HL),A                  ; 7C00 77       w
        INC     HL                      ; 7C01 23       #
        LD      A,($781D)               ; 7C02 3A1D78   :.x
        LD      (HL),A                  ; 7C05 77       w
        INC     HL                      ; 7C06 23       #
        LD      A,($7826)               ; 7C07 3A2678   :&x
        SRL     A                       ; 7C0A CB3F     .?
        LD      (HL),A                  ; 7C0C 77       w
        LD      A,$43                   ; 7C0D 3E43     >C
        LD      HL,BUFFER               ; 7C0F 214279   Buffer
        LD      B,$04                   ; 7C12 0604     number of bytes to send
        CALL    SIOHIGHSPEED            ; 7C14 CD9A7E   go send
        JP      Lb12a                   ; 7C17 C36F02   jump to rom status routine to finish off
READHS:
        CALL    CHKSECTNUM              ; 7C1A CD3C0C   .<. read
        JP      NZ,Lb14                 ; 7C1D C29A0A   ...
        CALL    SENDACK19               ; 7C20 CDB87E   ..~
        CALL    Lb36                    ; 7C23 CD6005   .`.
        CALL    Lb37                    ; 7C26 CD9504   ...
        CALL    Lb16a                   ; 7C29 CD927E   ..~
        XOR     A                       ; 7C2C AF       .
        RET                             ; 7C2D C9       .
PUTHS:
        CALL    Lb17a                   ; 7C2E CD287E   .(~ Put
        RET     NZ                      ; 7C31 C0       .
        JP      Lb18a                   ; 7C32 C3727C   .r|

WRITEHS:
        CALL    Lb17a                   ; 7C35 CD287E   .(~ write
        RET     NZ                      ; 7C38 C0       .

        CP      $45                     ; 7C39 FE45     .E
        JR      Z,Lb18a                 ; 7C3B 2835     (5
        CALL    DATAINVERT              ; 7C3D CD890A   ...
        CALL    Lb50                    ; 7C40 CDA60A   get bytes per sect in B 8 bit. $00 = 256
        LD      C,B                     ; 7C43 48       make 8 bit number
        LD      B,$00                   ; 7C44 0600     to a 16 bit number
        DEC     C                       ; 7C46 0D        where $00 =$0100
        INC     BC                      ; 7C47 03       in BC
        LD      HL,(SECTORBUF)          ; 7C48 2A2478   source sector buffer
        LD      DE,BUFFER               ; 7C4B 114279   dest general buffer
        LDIR                            ; 7C4E EDB0     copy bytes over
        CALL    Lb37                    ; 7C50 CD9504   ...
        CP      $45                     ; 7C53 FE45     .E
        JR      Z,Lb21a                 ; 7C55 2813     (.
        CALL    Lb50                    ; 7C57 CDA60A   ...
        LD      HL,(SECTORBUF)          ; 7C5A 2A2478   pointer to sector buffer
        LD      DE,BUFFER               ; 7C5D 114279   general buffer
Lb22a:  LD      A,(DE)                  ; 7C60 1A       Cannot work. see $02C1
        CP      (HL)                    ; 7C61 BE       
        JR      NZ,Lb21a                ; 7C62 2006     get out if no match
        DJNZ    Lb22a                   ; 7C64 10FA     
        LD      A,$43                   ; 7C66 3E43     Load 'C'omplete
        JR      Lb18a                   ; 7C68 1808     skip next 3 lines
Lb21a:  LD      HL,$8C98                ; 7C6A 21988C   Load 'P9' for front leds
        CALL    UPLED-1-2-B-E           ; 7C6D CD120B   update front leds
        LD      A,$45                   ; 7C70 3E45     load 'E'rror
Lb18a:  CALL    SENDBYTEHS              ; 7C72 CDCC7E   go send
        XOR     A                       ; 7C75 AF       .
        RET                             ; 7C76 C9       .
GETBLOCKHS:
        CALL    SENDACK19               ; 7C77 CDB87E   ..~ n command
        CALL    Lb36                    ; 7C7A CD6005   .`.
        LD      HL,$33E                 ; 7C7D 213E03   load table 
        LD      DE,BUFFER               ; 7C80 114279   to buffer
        LD      BC,$0C                  ; 7C83 010C00   number of bytes
        LDIR                            ; 7C86 EDB0     move BC bytes from HL to DE
        LD      HL,$7947                ; 7C88 214779   !Gy
        ADD     A,$FF                   ; 7C8B C6FF     ..
        SBC     A,A                     ; 7C8D 9F       .
        AND     $04                     ; 7C8E E604     ..
        LD      (HL),A                  ; 7C90 77       w
        INC     HL                      ; 7C91 23       #
        CALL    Lb58                    ; 7C92 CDB40A   Get bytes per sector
        DEC     B                       ; 7C95 05       .
        LD      C,B                     ; 7C96 48       H
        LD      B,$00                   ; 7C97 0600     ..
        INC     BC                      ; 7C99 03       .
        LD      (HL),B                  ; 7C9A 70       p
        INC     HL                      ; 7C9B 23       #
        LD      (HL),C                  ; 7C9C 71       q
        LD      A,$43                   ; 7C9D 3E43     Load 'C'omplete
        LD      HL,BUFFER               ; 7C9F 214279   load buffer
        LD      B,$0C                   ; 7CA2 060C     number of bytes to send
        CALL    SIOHIGHSPEED            ; 7CA4 CD9A7E   send bytes High speed
        XOR     A                       ; 7CA7 AF       .
        RET                             ; 7CA8 C9       .
PUTBLOCKHS:
        CALL    SENDACK19               ; 7CA9 CDB87E   ..~ O command
        LD      B,$0C                   ; 7CAC 060C     ..
        LD      HL,BUFFER               ; 7CAE 214279   !By
        CALL    Lb25a                   ; 7CB1 CD437E   .C~
        JP      NZ,Lb54                 ; 7CB4 C2A00A    
        CALL    Lb27a                   ; 7CB7 CDC47E   ..~
        CALL    Lb36                    ; 7CBA CD6005   .`.
        LD      A,($7947)               ; 7CBD 3A4779   :Gy
        OR      A                       ; 7CC0 B7       .
        JR      Z,Lb28a                 ; 7CC1 2801     (.
        INC     A                       ; 7CC3 3C       <
Lb28a:  LD      ($DENFLG),A             ; 7CC4 321778   2.x
        LD      ($7816),A               ; 7CC7 321678   2.x
        CALL    SETDENFLG               ; 7CCA CDF20B   ...lb10
        LD      A,$43                   ; 7CCD 3E43     >C
        JP      Lb18a                   ; 7CCF C3727C   .r|
FORMATHS:
        LD      A,$4E                   ; 7CD2 3E4E     format
        LD      L,$00                   ; 7CD4 2E00     .. 
        JR      Lb29a                   ; 7CD6 180E     ..
FORMATSPL:
        LD      L,$02                   ; 7CD8 2E02     .. # command
        LD      A,($DENFLG)             ; 7CDA 3A1778   :.x
        OR      A                       ; 7CDD B7       .
        LD      A,$04                   ; 7CDE 3E04     >.
        JR      Z,Lb29a                 ; 7CE0 2804     (.
        LD      A,$02                   ; 7CE2 3E02     >.
        JR      Lb29a                   ; 7CE4 1800     ..
Lb29a:  LD      ($7D86),A               ; 7CE6 32867D   
        PUSH    HL                      ; 7CE9 E5       .
        LD      HL,$DENFLG              ; 7CEA 211778   !.x
        LD      A,(HL)                  ; 7CED 7E       ~
        SUB     $02                     ; 7CEE D602     ..
        JR      NZ,Lb30a                ; 7CF0 2007      .
        LD      (HL),A                  ; 7CF2 77       w
        LD      ($7816),A               ; 7CF3 321678   2.x
        CALL    SETDENFLG               ; 7CF6 CDF20B   ...
Lb30a:  CALL    SENDACK19               ; 7CF9 CDB87E   ..~
        POP     HL                      ; 7CFC E1       .
        LD      A,($DENFLG)             ; 7CFD 3A1778   :.x
        PUSH    AF                      ; 7D00 F5       .
        ADD     A,L                     ; 7D01 85       .
        ADD     A,A                     ; 7D02 87       .
        LD      L,A                     ; 7D03 6F       o
        LD      H,$00                   ; 7D04 2600     &.
        LD      DE,$7D88                ; 7D06 11887D   ..}
        ADD     HL,DE                   ; 7D09 19       .
        LD      A,(HL)                  ; 7D0A 7E       ~
        INC     HL                      ; 7D0B 23       #
        LD      H,(HL)                  ; 7D0C 66       f
        LD      L,A                     ; 7D0D 6F       o
        LD      ($782C),HL              ; 7D0E 222C78   ",x
        CALL    Lb36                    ; 7D11 CD6005   .`.
        POP     AF                      ; 7D14 F1       .
        LD      ($DENFLG),A             ; 7D15 321778   2.x
        LD      ($7816),A               ; 7D18 321678   2.x
        CALL    SETDENFLG               ; 7D1B CDF20B   ...
        CALL    Lb15                    ; 7D1E CDBE08   ...
        LD      HL,$FFFF                ; 7D21 21FFFF   !..
        LD      (CAUX12),HL             ; 7D24 222078   " x
        CALL    Lb58                    ; 7D27 CDB40A   ...
        XOR     A                       ; 7D2A AF       .
        LD      (TRACKNUM),A            ; 7D2B 322278   2"x
        DEC     A                       ; 7D2E 3D       =
        LD      HL,BUFFER               ; 7D2F 214279   !By
Lb32a:  LD      (HL),A                  ; 7D32 77       w
        INC     HL                      ; 7D33 23       #
        DJNZ    Lb32a                   ; 7D34 10FC     ..
Lb43a:  CALL    Lb63                    ; 7D36 CDF407   ...
        LD      A,$05                   ; 7D39 3E05     >.
        LD      (CDLOOP2),A             ; 7D3B 322878   2(x
Lb38a:  CALL    BUTTONS                 ; 7D3E CD440B   .D.
        CALL    Lb64                    ; 7D41 CD1306   ...
        LD      ($781F),A               ; 7D44 321F78   2.x
        AND     $44                     ; 7D47 E644     .D
        JR      Z,Lb36a                 ; 7D49 281B     (.
        LD      B,A                     ; 7D4B 47       G
        AND     $40                     ; 7D4C E640     .@
        LD      A,B                     ; 7D4E 78       x
        JR      NZ,Lb37a                ; 7D4F 2006      .
        LD      HL,CDLOOP2              ; 7D51 212878   !(x
        DEC     (HL)                    ; 7D54 35       5
        JR      NZ,Lb38a                ; 7D55 20E7      .
Lb37a:  CALL    Lb68                    ; 7D57 CDF60A   ...
        LD      H,$8E                   ; 7D5A 268E     &.
        CALL    Lb69                    ; 7D5C CD050B   ...
        LD      HL,STATUS0              ; 7D5F 211E78   !.x
        SET     2,(HL)                  ; 7D62 CBD6     ..
        JR      Lb41a                   ; 7D64 1819     ..
Lb36a:  LD      A,($7D86)               ; 7D66 3A867D   :.}
        LD      HL,TRACKNUM             ; 7D69 212278   !"x
        CP      (HL)                    ; 7D6C BE       .
        JR      Z,Lb42a                 ; 7D6D 2804     (.
        INC     (HL)                    ; 7D6F 34       4
        INC     (HL)                    ; 7D70 34       4
        JR      Lb43a                   ; 7D71 18C3     ..
Lb42a:  CALL    Lb23                    ; 7D73 CD440B   .D.
        CALL    Lb44a                   ; 7D76 CDB67D   ..}
        JR      NZ,Lb41a                ; 7D79 2004      .
        LD      A,$43                   ; 7D7B 3E43     >C
        JR      Lb45a                   ; 7D7D 1802     ..
Lb41a:  LD      A,$45                   ; 7D7F 3E45     >E
Lb45a:  CALL    Lb46a                   ; 7D81 CD887E   ..~
        XOR     A                       ; 7D84 AF       .
        RET                             ; 7D85 C9       .

        NOP                             ; 7D86 00       .
        NOP                             ; 7D87 00       .
        SUB     B                       ; 7D88 90       pointer to first sector table.
        LD      A,L                     ; 7D89 7D       }
        AND     E                       ; 7D8A A3       pointer to 2nd sector table
        LD      A,L                     ; 7D8B 7D       }
        LD      (HL),$07                ; 7D8C 3607     6.
        LD      (HL),$07                ; 7D8E 3607     6.

        DB $04,$08,$0C                  ; 7D90 04080C  sector table single hs   
        DB $10,$01,$05                  ; 7D93 100105     
        DB $09,$0D,$11                  ; 7D96 090D11
        DB $02,$06,$0A                  ; 7D99 02060A
        DB $0E,$12,$03                  ; 7D9C 0E1203
        DB $07,$0B,$0F                  ; 7D9F 070B0F

        DB $80                          ; 7DA2 80 

        DB $01,$0E,$09                  ; 7DA3 010E09  sector table double hs
        DB $04,$11,$0C                  ; 7DA6 04110C
        DB $07,$02,$0F                  ; 7DA9 07020F
        DB $0A,$05,$12                  ; 7DAC 0A0512
        DB $0D,$08,$03                  ; 7DAF 0D0803
        DB $10,$0B,$06                  ; 7DB2 100B06 
    
        DB $80                          ; 7DB5 80     

Lb44a:  CALL    Lb58                    ; 7DB6 CDB40A   ...
        LD      A,B                     ; 7DB9 78       x
        SRL     A                       ; 7DBA CB3F     .?
        DEC     A                       ; 7DBC 3D       =
        LD      ($7829),A               ; 7DBD 322978   2)x
        XOR     A                       ; 7DC0 AF       .
        LD      (TRACKNUM),A            ; 7DC1 322278   2"x
        LD      IY,BUFFER               ; 7DC4 FD214279 .!By
Lb59a:  CALL    Lb63                    ; 7DC8 CDF407   ...
        CALL    Lb76                    ; 7DCB CDB807   ...
        LD      IX,($782C)              ; 7DCE DD2A2C78 .*,x
Lb580:  LD      A,(IX+$00)              ; 7DD2 DD7E00   .~.
        LD      (SECTORFDC),A           ; 7DD5 320260   2.`
        LD      A,$05                   ; 7DD8 3E05     >.
        LD      (CDLOOP2),A             ; 7DDA 322878   2(x
Lb55a:  LD      HL,(SECTORBUF)          ; 7DDD 2A2478   sector buf pointer
        CALL    Lb78                    ; 7DE0 CDD505   
        JR      Z,Lb51a                 ; 7DE3 2805     (.
        CALL    Lb80                    ; 7DE5 CD6809   .h.
        JR      Lb53a                   ; 7DE8 1805     ..
Lb51a:  CALL    Lb14                    ; 7DEA CD3509   .5.
        OR      $10                     ; 7DED F610     ..
Lb53a:  AND     $1C                     ; 7DEF E61C     ..
        JR      Z,Lb54a                 ; 7DF1 281F     (.
        LD      HL,CDLOOP2              ; 7DF3 212878   !(x
        DEC     (HL)                    ; 7DF6 35       5
        JR      NZ,Lb55a                ; 7DF7 20E4      .
        CALL    Lb84                    ; 7DF9 CD7F0C   
        LD      (IY+$00),L              ; 7DFC FD7500   .u.
        INC     IY                      ; 7DFF FD23     .#
        LD      (IY+$00),H              ; 7E01 FD7400   .t.
        INC     IY                      ; 7E04 FD23     .#
        LD      HL,$8E98                ; 7E06 21988E   load hl with F9 for leds
        CALL    Lb69                    ; 7E09 CD050B   ...
        LD      HL,$7829                ; 7E0C 212978   !)x
        DEC     (HL)                    ; 7E0F 35       5
        JR      Z,Lb57a                 ; 7E10 2813     (.
Lb54a:  INC     IX                      ; 7E12 DD23     .#
        LD      A,(IX+$00)              ; 7E14 DD7E00   .~.
        RLCA                            ; 7E17 07       .
        JR      NC,Lb580                ; 7E18 30B8     0.
        LD      HL,TRACKNUM             ; 7E1A 212278   !"x
        INC     (HL)                    ; 7E1D 34       4
        INC     (HL)                    ; 7E1E 34       4
        LD      A,($7D86)               ; 7E1F 3A867D   :.}
        CP      (HL)                    ; 7E22 BE       .
        JR      NC,Lb59a                ; 7E23 30A3     0.
Lb57a:  JP      Lb85                    ; 7E25 C38E04   

Lb17a:  CALL    CHKSECTNUM              ; 7E28 CD3C0C   .<.
        JP      NZ,Lb40                 ; 7E2B C29A0A   ...
        CALL    SENDACK19               ; 7E2E CDB87E   ..~
        CALL    Lb61a                   ; 7E31 CD3D7E   .=~
        JP      NZ,Lb26                 ; 7E34 C2A00A   ...
        CALL    Lb27a                   ; 7E37 CDC47E   ..~
        JP      Lb62a                   ; 7E3A C3B704   ...
Lb61a:  CALL    Lb50                    ; 7E3D CDA60A   ...
        LD      HL,(SECTORBUF)          ; 7E40 2A2478   sector buf pointer
;---------------------------------------------------------------------------------
; This section is for Highspeed Send/recieve. 58 t states used to send/recieve each bit
;  68965.5 baud. Pokey divisor 6=68209-pal, 68730-ntsc/68965
RECIEVEHS
Lb25a:  PUSH    BC                      ; 7E43 C5       number of bytes to get
        PUSH    HL                      ; 7E44 E5       buffer pointer

        EX      DE,HL                   ; 7E45 EB       .
        LD      A,B                     ; 7E46 78       load bytes to get to A
        EXX                             ; 7E47 D9       save bc,de,hl to 2ndary 
        LD      C,A                     ; 7E48 4F       load bytes to get to C
        DEC     C                       ; 7E49 0D       subtract 1
        LD      B,$00                   ; 7E4A 0600     load highbyte with 00
        INC     BC                      ; 7E4C 03       add 1
        INC     BC                      ; 7E4D 03       add 1 allow for chksum byte
        EXX                             ; 7E4E D9       .
        LD      HL,$2000                ; 7E4F 210020   !. 
        LD      A,(HL)                  ; 7E52 7E       ~
        AND     $FB                     ; 7E53 E6FB     mask out recieve bit
        OR      $03                     ; 7E55 F603     ignore clockin/out
        LD      B,A                     ; 7E57 47       load mask to B
        JR      Lb63a                   ; 7E58 1804     jump always

Lb65a:  LD      A,C                     ; 7E5A 79       move recieved byte to A
        LD      (DE),A                  ; 7E5B 12       Move A to buffer
        INC     DE                      ; 7E5C 13       Inc to next byte of buffer
        LD      A,B                     ; 7E5D 78       x
Lb63a:  CP      (HL)                    ; 7E5E BE       .
        JP      C,Lb63a                 ; 7E5F DA5E7E   wait for start bit
        EX      AF,A'F'                 ; 7E62 08       .
        EXX                             ; 7E63 D9       .
        DEC     BC                      ; 7E64 0B       dec number of bytes to get
        LD      A,B                     ; 7E65 78       x
        OR      C                       ; 7E66 B1       = to zero?
        EXX                             ; 7E67 D9       swap registers with 2ndary
        EX      AF,A'F'                 ; 7E68 08       swap a and F registers with 2ndary
        LD      C,$7F                   ; 7E69 0E7F     Bit pattern for 8 bits to recieve
        LD      I,A                     ; 7E6B ED47     timing
        LD      I,A                     ; 7E6D ED47     instructions
Lb64a:  CP      (HL)                    ; 7E6F BE      7 .
        CP      (HL)                    ; 7E70 BE      7 .
        NOP                             ; 7E71 00      4 .
        NOP                             ; 7E72 00      4 .
        LD      I,A                     ; 7E73 ED47    9 .58 t states for recieve loop one bit
        CP      (HL)                    ; 7E75 BE      7 .
        RR      C                       ; 7E76 CB19    8    rotate bit to carry to byte
        JR      C,Lb64a                 ; 7E78 38F5    7/12 get next bit till bit 8 then get out of loop
        EX      AF,A'F'                 ; 7E7A 08       .
        JP      NZ,Lb65a                ; 7E7B C25A7E   number of bytes to get = zero?
        LD      A,C                     ; 7E7E 79       yes
        POP     HL                      ; 7E7F E1       .
        POP     BC                      ; 7E80 C1       .
        PUSH    AF                      ; 7E81 F5       .
        CALL    caculate-chksum         ; 7E82 CD810A   caculate chksum
        POP     BC                      ; 7E85 C1       .
        CP      B                       ; 7E86 B8       .
        RET                             ; 7E87 C9       .

Lb46a:  PUSH    AF                      ; 7E88 F5       .
        CALL    Lb50                    ; 7E89 CDA60A   ...
        POP     AF                      ; 7E8C F1       .
        LD      HL,BUFFER               ; 7E8D 214279   !By
        JR      SIOHIGHSPEED            ; 7E90 1808     jump always

Lb16a:  PUSH    AF                      ; 7E92 F5       .
        CALL    Lb50                    ; 7E93 CDA60A   ...
        POP     AF                      ; 7E96 F1       .
        LD      HL,(SECTORBUF)          ; 7E97 2A2478   sector buff pointer
;
;--------------------------------------------------------------------------
;following 5 instructions have been swapped around by ICD for timing issues with SDX.
;orignal code follows
;-------------------------------------------------------------------------
;
SIOHIGHSPEED
        CALL    SENDBYTEHS              ; 7E9A CDCC7E   patched
        LD      C,B                     ; 7E9D 48       save B
        LD      B,$5A                   ; 7E9E 065A     count 5A
        CALL    CDOWNDELAY              ; 7EA0 CD9E0C   Count DOWN DELAY
        LD      B,C                     ; 7EA3 41       end patched

;SIOHIGHSPEED
;        LD      C,B                     ; 7E9A 48       orignal version
;        LD      B,$5A                   ; 7E9B 065A     .Z
;        CALL    CDOWNDELAY              ; 7E9D CD9E0C   ...
;        LD      B,C                     ; 7EA0 41       A
;        CALL    SENDBYTEHS              ; 7EA1 CDCC7E   end orignal version

        PUSH    BC                      ; 7EA4 C5       .
        PUSH    HL                      ; 7EA5 E5       .
        CALL    caculate-chksum         ; 7EA6 CD810A   ...
        POP     HL                      ; 7EA9 E1       .
        POP     BC                      ; 7EAA C1       .
        PUSH    AF                      ; 7EAB F5       .
Lb68a:  LD      A,(HL)                  ; 7EAC 7E     7  load byte to send
        CALL    SENDBYTEHS              ; 7EAD CDCC7E 17  send data
        INC     HL                      ; 7EB0 23     11  point to next byte 
        DJNZ    Lb68a                   ; 7EB1 10F9   13/8  all data?
        POP     AF                      ; 7EB3 F1       get chksum
        CALL    SENDBYTEHS              ; 7EB4 CDCC7E   send chksum
        RET                             ; 7EB7 C9       .
SENDACK19
Lb600:  LD      A,$41                   ; 7EB8 3E41     Load A for ack
        CALL    SSIOBYTE                ; 7EBA CD230A   Send byte at 19200 
        LD      A,($7814)               ; 7EBD 3A1478   :.x
        LD      ($7815),A               ; 7EC0 321578   2.x
        RET                             ; 7EC3 C9       .

Lb27a:  LD      BC,$82                  ; 7EC4 018200   ...
        CALL    Lb4                     ; 7EC7 CD1200   ...
        LD      A,$41                   ; 7ECA 3E41     >A
SENDBYTEHS
        EXX                             ; 7ECC D9     4  .
        CPL                             ; 7ECD 2F     4  invert data in A
        LD      D,A                     ; 7ECE 57     4  store byte to send in D
        LD      E,$02                   ; 7ECF 1E02   7  base byte divided by 2
        IN      A,($05)                 ; 7ED1 DB05   11   send start bit
        LD      B,$08                   ; 7ED3 0608   7    Number of bits
        NEG                             ; 7ED5 ED44   8    delay
Lb70a:  RR      D                       ; 7ED7 CB1A   8    rotate bit to carry
        LD      C,E                     ; 7ED9 4B     4    load base byte
        RL      C                       ; 7EDA CB11   8    rotate carry to base Byte.X base by 2
        IN      A,(C)                   ; 7EDC ED78   12   send bit to sio buss
        LD      I,A                     ; 7EDE ED47   9    timing. 58 t states to send each bit
        NOP                             ; 7EE0 00     4    instructions
        DJNZ    Lb70a                   ; 7EE1 10F4   8/13  dec B and jump if not zero
        LD      I,A                     ; 7EE3 ED47   4    timing
        LD      I,A                     ; 7EE5 ED47   4    instructions
        NEG                             ; 7EE7 ED44   8  
        IN      A,($04)                 ; 7EE9 DB04   11  send stop bit
        EXX                             ; 7EEB D9     4   
        RET                             ; 7EEC C9     10 



;⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
;≥ DISASSEMBLED FILE - DONE WITH DISASM 1.0· ≥
;≥ Date: 22-06-2008  Time: 15:16             ≥
;≥ (c) 1996 Channex aka Lasse S. Tassing     ≥
;≥ Email: ltassing.ite.dk                    ≥
;¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ
;The following is used by syncromesh loader to get the Indus GT Firmware version number.
;Syncromesh only works with Version 1.1 and version 1.2 Firmware
        ORG     7F00H
 
        LD      C,$00                   ; 7F00 0E00     ..
        CALL    Lba                     ; 7F02 CD0400   call routine 0. data returned in DE
        LD      (TEMP),DE               ; 7F05 ED53177F save contents of DE

					; add stuff in here
        LD      DE,TEMP                 ; 7F09 11177F   load location of data to DE
        LD      B,$02                   ; 7F0C 0602     Num of bytes to send
        LD      C,$08                   ; 7F0E 0E08     load routine number to C
        LD      A,$43                   ; 7F10 3E43     'C'omplete
        CALL    Lba                     ; 7F12 CD0400   Call routine 8
        OR      A                       ; 7F15 B7       set flags
        RET                             ; 7F16 C9       get out
TEMP:   BD $00,$00                      ; 7F17 0000     temp storage


; ƒ[CODE]ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
; LABEL INSTR.  PARAMETER(s)              ADR/OPCODE    ASCII
the following is placed at $7F00 by the X command.
;Starts at $7F00
;Loades both syncro code and ramcharger code (if ramcharger is present).
; SDX version only loads syncro code. several changes made to code for SDX version
; are noted. SDX version doesn't have ramcharger code segments.
        ORG     7F00H

        DI                              ; 7F00 F3       .
        LD      HL,($7FE3)              ; 7F01 2AE37F   reset ram
        LD      ($7804),HL              ; 7F04 220478   vectors
        LD      ($7807),HL              ; 7F07 220778   to $CA0
        LD      ($780A),HL              ; 7F0A 220A78   ".x
        LD      HL,($7FD7)              ; 7F0D 2AD77F   $7840 pointer to free ram
        LD      DE,($7FE1)              ; 7F10 ED5BE17F $7B84
        LD      (HL),E                  ; 7F14 73       s
        INC     HL                      ; 7F15 23       #
        LD      (HL),D                  ; 7F16 72       r
        EI                              ; 7F17 FB       .
        LD      HL,$7FCD                ; 7F18 21CD7F   syncro load flag
        LD      A,(HL)                  ; 7F1B 7E       ~
        INC     (HL)                    ; 7F1C 34       add 1 to syncro flag
        OR      A                       ; 7F1D B7       set flags
        JR      Z,Lb0b                  ; 7F1E 2864     go to syncro load
;the following 6 bytes have been NOP'ed for SDX version of syncromesh

        DEC     A                       ; 7F20 3D       nop     for sdx
        JR      Z,Lb888                 ; 7F21 2833     nop nop for sdx
        DEC     A                       ; 7F23 3D       nop     for sdx.
        JR      Z,Lb0b                  ; 7F24 285E     nop nop for sdx
        DI                              ; 7F26 F3       .
        LD      HL,($7FD7)              ; 7F27 2AD77F   $7840
        LD      DE,($7FD9)              ; 7F2A ED5BD97F $7eed
        LD      (HL),E                  ; 7F2E 73       s
        INC     HL                      ; 7F2F 23       #
        LD      (HL),D                  ; 7F30 72       r
        LD      A,($7FCE)               ; 7F31 3ACE7F   
        OR      A                       ; 7F34 B7       .
        JR      Z,Lb1b                  ; 7F35 2814     (.
        LD      HL,($7FDD)              ; 7F37 2ADD7F   FBD9
        LD      ($7807),HL              ; 7F3A 220778   ".x
        LD      HL,($7FDF)              ; 7F3D 2ADF7F   FC12
        LD      ($780A),HL              ; 7F40 220A78   ".x
        LD      HL,($7FDB)              ; 7F43 2ADB7F   FC31
        LD      ($7804),HL              ; 7F46 220478   ".x
        JR      Lb2c                    ; 7F49 1806     ..
Lb1b:   LD      HL,($7FE1)              ; 7F4B 2AE17F   7b84. Start of syncro memory
        LD      ($780A),HL              ; 7F4E 220A78   Place command tie in
Lb2c:   EI                              ; 7F51 FB       .
        LD      A,$43                   ; 7F52 3E43     >C
        SCF                             ; 7F54 37       7
        RET                             ; 7F55 C9       .

Lb888:  LD      HL,($7FD5)              ; 7F56 2AD57F   2f5 change pointers
        LD      ($7FD1),HL              ; 7F59 22D17F    to load the ramcharger
        LD      HL,($7FD3)              ; 7F5C 2AD37F   FBD9 code
        LD      ($7FCF),HL              ; 7F5F 22CF7F   "..
        LD      A,(STAT1R)              ; 7F62 3A0010   :..
        LD      A,(STAT1)               ; 7F65 3A0110   :..
        AND     $10                     ; 7F68 E610     Track button
        JR      NZ,Lb3c                 ; 7F6A 2010      if track button held, dont load
        LD      HL,$FFFF                ; 7F6C 21FFFF   !..
        LD      B,(HL)                  ; 7F6F 46       F
        XOR     A                       ; 7F70 AF       zero A
Lb4c:   LD      (HL),A                  ; 7F71 77       test if ramcharger is present
        CP      (HL)                    ; 7F72 BE       .
        JR      NZ,Lb3c                 ; 7F73 2007      .
        INC     A                       ; 7F75 3C       <
        JR      NZ,Lb4c                 ; 7F76 20F9      .
        LD      (HL),B                  ; 7F78 70       p
        DEC     A                       ; 7F79 3D       set a to $FF
        JR      Lb5c                    ; 7F7A 1801     ..
Lb3c:   XOR     A                       ; 7F7C AF       zero a
Lb5c:   LD      ($7FCE),A               ; 7F7D 32CE7F   save a to ram present flag
        LD      A,$43                   ; 7F80 3E43     >C
        SCF                             ; 7F82 37       Set Carry Flag
        RET                             ; 7F83 C9       .

Lb0b:   LD      DE,($7FD1)              ; 7F84 ED5BD17F  369 
        LD      HL,($7FCF)              ; 7F88 2ACF7F   B784
        PUSH    HL                      ; 7F8B E5       .
        LD      A,E                     ; 7F8C 7B       {
        OR      A                       ; 7F8D B7       .
        JR      Z,Lb6c                  ; 7F8E 280B     (.
        LD      B,A                     ; 7F90 47       G
        LD      E,$00                   ; 7F91 1E00     ..
        ADD     A,L                     ; 7F93 85       .
        LD      L,A                     ; 7F94 6F       o
        LD      A,H                     ; 7F95 7C       |
        ADC     A,$00                   ; 7F96 CE00     ..
        LD      H,A                     ; 7F98 67       g
        JR      Lb7c                    ; 7F99 1804     ..
Lb6c:   LD      B,$00                   ; 7F9B 0600     ..
        DEC     D                       ; 7F9D 15       .
        INC     H                       ; 7F9E 24       $
Lb7c:   EX      (SP),HL                 ; 7F9F E3       .
        PUSH    DE                      ; 7FA0 D5       .
        EX      DE,HL                   ; 7FA1 EB       .
        LD      C,$07                   ; 7FA2 0E07     de=buffer,b=number to get. c= routine number
        CALL    Lba                     ; 7FA4 CD0400   Jump to routine #7 Get sio Block. de=Buffer. B=Number to get
        POP     BC                      ; 7FA7 C1       .
        POP     HL                      ; 7FA8 E1       .
        JR      Z,Lb9c                  ; 7FA9 2808     (.
        LD      A,($7FCE)               ; 7FAB 3ACE7F   :..
        OR      A                       ; 7FAE B7       set flags
        LD      A,$4E                   ; 7FAF 3E4E     Nak
        JR      NZ,Lb10a                ; 00B1 2018      .
Lb9c:   LD      ($7FCF),HL              ; 7FB3 22CF7F   "..
        LD      ($7FD1),BC              ; 7FB6 ED43D17F .C..
        LD      A,B                     ; 7FBA 78       x
        OR      C                       ; 7FBB B1       .
        JR      Z,Lb11c                 ; 7FBC 2804     finished loading syncro code?
        LD      HL,$7FCD                ; 7FBE 21CD7F   no
        DEC     (HL)                    ; 7FC1 35       dec flag back to one
Lb11c:  LD      A,$41                   ; 7FC2 3E41     yes load 'A'ck
        LD      C,$06                   ; 7FC4 0E06     routine 6 send byte
        CALL    Lba                     ; 7FC6 CD0400   go do do it
        LD      A,$43                   ; 7FC9 3E43     load 'C'omplete
Lb10a   SCF                             ; 7FCB 37       set carry flag
        RET                             ; 7FCC C9       .

        NOP                             ; 7FCD 00       flag for syncro code or ramcharger code 
        NOP                             ; 7FCE 00       ramcharger ram present flag
        DB $84,$7B                      ; 7FCF 847B     start of syncro code  .
        DB $69,$03                      ; 7FD1 6903     length of syncro code
        DB $D9,$FB                      ; 7FD3 D9FB     start of ramcharger code.
        DB $F5,$02                      ; 7FD5 F502     length for ramcharger code. zeroed in SDX
        DB $40,$78                      ; 7FD7 4078     word Pointer for free ram start
        DB $ED,$7E                      ; 7FD9 ED7E     word end of syncro code +1. free ram start address
        DB $31,$FC                      ; 7FDB 31FC     word jump to ram
        DB $D9,$FB                      ; 7FDD D9FB     word Jump address Main wait loop tie in
        DB $12,$FC                      ; 7FDF 12FC     Word Jump address for ram vector command tie in
					;               over writes one below if ramcharger is present
        DB $84,$7B                      ; 7FE1 847B     word Jump address for ram vector command tie in
        DB $A0,$0C                      ; 7FE3 A00C     word Points to RET instruction in firmware
Lb12:


;⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø
;≥ DISASSEMBLED FILE - DONE WITH DISASM 1.0· ≥
;≥ Date: 30-07-2008  Time: 18:20             ≥
;≥ (c) 1996 Channex aka Lasse S. Tassing     ≥
;≥ Email: ltassing.ite.dk                    ≥
;¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ

; ƒ[CODE]ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
; LABEL INSTR.  PARAMETER(s)              ADR/OPCODE    ASCII
;This code is loaded in to the ramcharger ram.
        ORG     FBD9H

; 7807 external main loop extra code
        LD      L,$60                   ; FBD9 2E60     .`
        LD      A,(STAT1)               ; FBDB 3A0110   :..
        AND     L                       ; FBDE A5       .
        CP      L                       ; FBDF BD       id and error button
        JR      NZ,Lb0d                 ; FBE0 200F      .
        LD      A,($7836)               ; FBE2 3A3678   :6x
        OR      L                       ; FBE5 B5       .
        LD      ($7836),A               ; FBE6 323678   26x
        LD      A,$FF                   ; FBE9 3EFF     >.
        LD      ($7819),A               ; FBEB 321978   2.x
        LD      ($781A),A               ; FBEE 321A78   2.x
Lb0d:   LD      HL,$FECD                ; FBF1 21CDFE   !..
        LD      A,(HL)                  ; FBF4 7E       ~
        INC     A                       ; FBF5 3C       <
        JR      Z,Lb1d                  ; FBF6 2810     (.
        DEC     A                       ; FBF8 3D       =
        JR      NZ,Lb2d                 ; FBF9 2006      .
        LD      A,($7819)               ; FBFB 3A1978   :.x
        OR      A                       ; FBFE B7       .
        JR      Z,Lb3d                  ; FBFF 2810     (.
Lb2d:   LD      (HL),$FF                ; FC01 36FF     6.
        LD      A,$00                   ; FC03 3E00     >.
        LD      ($7837),A               ; FC05 323778   27x
Lb1d:   LD      HL,$838E                ; FC08 218E83       bF for front leds = track BuFfer?
        LD      (TLEDNUM1),HL           ; FC0B 223A78   ":x
        CALL    UPLED-1-2-B-E           ; FC0E CD120B   ...
Lb3d:   RET                             ; FC11 C9       .
;--------------------------------------------------------------------------------
;    780a external command tie in
        LD      A,C                     ; FC12 79       y
        AND     $7F                     ; FC13 E67F     remove high bit
        CP      $4F                     ; FC15 FE4F     .O command O
        JR      Z,Lb5d                  ; FC17 280C     (.
        CP      $24                     ; FC19 FE24     .$
        JR      C,Lb5d                  ; FC1B 3808     8.
        CP      $57                     ; FC1D FE57     .WRITE
        JR      NZ,Lb6d                 ; FC1F 2009      .
        LD      A,$FF                   ; FC21 3EFF     >.
        JR      Lb7d                    ; FC23 1806     ..
Lb5d:   LD      A,$FF                   ; FC25 3EFF     >.
        LD      ($FECD),A               ; FC27 32CDFE   2..
Lb6d:   XOR     A                       ; FC2A AF       zero A
Lb7d:   LD      ($FED0),A               ; FC2B 32D0FE   set flag
        JP      Lbb                     ; FC2E C3847B   jump to syncro code
;-------------------------------------------------------------------------------
;tie in for something 7803
        POP     HL                      ; FC31 E1       .
        LD      ($FECE),HL              ; FC32 22CEFE   "..
        PUSH    AF                      ; FC35 F5       .
        LD      A,($FECD)               ; FC36 3ACDFE   :..
        OR      A                       ; FC39 B7       .
        JR      Z,Lb9d                  ; FC3A 284D     (M
        CALL    Lb36                    ; FC3C CD6005   .`.
        CALL    Lb58                    ; FC3F CDB40A   get bytes per sector in B
        LD      L,B                     ; FC42 68       h
        DEC     L                       ; FC43 2D       -1
        LD      H,$00                   ; FC44 2600     &.
        INC     HL                      ; FC46 23       make 8 bit number into 16bit number
        LD      ($FED1),HL              ; FC47 22D1FE   "..
        ADD     HL,HL                   ; FC4A 29       *2
        LD      E,L                     ; FC4B 5D       save *2
        LD      D,H                     ; FC4C 54       T
        ADD     HL,HL                   ; FC4D 29       *4
        ADD     HL,HL                   ; FC4E 29       *8
        ADD     HL,HL                   ; FC4F 29       *16
        ADD     HL,DE                   ; FC50 19       add *2 for total of * 18
        LD      ($FED3),HL              ; FC51 22D3FE   "..
        LD      A,$12                   ; FC54 3E12     sect per track
        LD      ($FED5),A               ; FC56 32D5FE   2..
        XOR     A                       ; FC59 AF       zero A
        LD      ($FED6),A               ; FC5A 32D6FE   2..
        LD      ($FF69),A               ; FC5D 3269FF   2i.
        EX      DE,HL                   ; FC60 EB       .
        LD      HL,$FBD9                ; FC61 21D9FB   start of this code 
        LD      IX,$FED8                ; FC64 DD21D8FE end of this code 
        LD      BC,$03                  ; FC68 010300   ...
Lb13d:  SBC     HL,DE                   ; FC6B ED52     .R
        JR      C,Lb12d                 ; FC6D 3813     8.
        LD      (IX+$00),$FF            ; FC6F DD3600FF .6..
        INC     IX                      ; FC73 DD23     .#
        LD      (IX+$00),L              ; FC75 DD7500   .u.
        INC     IX                      ; FC78 DD23     .#
        LD      (IX+$00),H              ; FC7A DD7400   .t.
        ADD     IX,BC                   ; FC7D DD09     ..
        INC     A                       ; FC7F 3C       <
        JR      Lb13d                   ; FC80 18E9     ..
Lb12d:  LD      ($FED7),A               ; FC82 32D7FE   2..
        XOR     A                       ; FC85 AF       .
        LD      ($FECD),A               ; FC86 32CDFE   2..
Lb9d:   POP     AF                      ; FC89 F1       .
        OR      A                       ; FC8A B7       .
        JR      NZ,Lb14d                ; FC8B 2005      .
        CALL    Lb15d                   ; FC8D CD96FC   ...
        JR      Lb16d                   ; FC90 1803     ..
Lb14d:  CALL    Lb17d                   ; FC92 CDABFC   ...
Lb16d:  RET                             ; FC95 C9       .

Lb15d:  LD      A,($FED0)               ; FC96 3AD0FE   :..
        OR      A                       ; FC99 B7       .
        JR      NZ,Lb18d                ; FC9A 200A      .
        CALL    Lb19d                   ; FC9C CDC1FC   ...
        JR      NZ,Lb18d                ; FC9F 2005      .
        LDIR                            ; FCA1 EDB0     ..
        XOR     A                       ; FCA3 AF       .
        JR      Lb20d                   ; FCA4 1804     ..
Lb18d:  XOR     A                       ; FCA6 AF       zero A
        CALL    Lb21d                   ; FCA7 CDC9FE   ...
Lb20d:  RET                             ; FCAA C9       .

Lb17d:  CALL    Lb21d                   ; FCAB CDC9FE   ...
        JR      NZ,Lb22d                ; FCAE 2010      .
        CALL    Lb19d                   ; FCB0 CDC1FC   ...
        JR      NZ,Lb23d                ; FCB3 200A      .
Lb24d:  LD      A,(DE)                  ; FCB5 1A       .
        CPL                             ; FCB6 2F       /
        LD      (HL),A                  ; FCB7 77       w
        INC     DE                      ; FCB8 13       .
        INC     HL                      ; FCB9 23       #
        DEC     BC                      ; FCBA 0B       .
        LD      A,B                     ; FCBB 78       x
        OR      C                       ; FCBC B1       .
        JR      NZ,Lb24d                ; FCBD 20F6      .
Lb23d:  XOR     A                       ; FCBF AF       .
Lb22d:  RET                             ; FCC0 C9       .

Lb19d:  LD      A,(TRACKNUM)            ; FCC1 3A2278   :"x
        OR      A                       ; FCC4 B7       .
        JR      NZ,Lb25d                ; FCC5 200D      .
        LD      A,(SECTORN)             ; FCC7 3A2378   :#x
        DEC     A                       ; FCCA 3D       =
        JR      NZ,Lb25d                ; FCCB 2007      .
        LD      A,($FF69)               ; FCCD 3A69FF   :i.
        OR      A                       ; FCD0 B7       .
        JP      NZ,Lb26                 ; FCD1 C2D9FD   ...
Lb25d:  CALL    Lb27d                   ; FCD4 CDEEFD   ...
        JR      Z,Lb28d                 ; FCD7 2861     (a
        LD      HL,$FED6                ; FCD9 21D6FE   !..
        LD      A,(HL)                  ; FCDC 7E       ~
        OR      A                       ; FCDD B7       .
        JR      NZ,Lb29d                ; FCDE 2001      .
        INC     (HL)                    ; FCE0 34       4
Lb29d:  LD      A,($FED8)               ; FCE1 3AD8FE   :..
        INC     A                       ; FCE4 3C       <
        JR      Z,Lb30d                 ; FCE5 284B     (K
        LD      A,($FED7)               ; FCE7 3AD7FE   :..
        LD      C,A                     ; FCEA 4F       O
        LD      B,$00                   ; FCEB 0600     ..
        LD      L,C                     ; FCED 69       i
        LD      H,B                     ; FCEE 60       `
        ADD     HL,HL                   ; FCEF 29       )
        ADD     HL,HL                   ; FCF0 29       )
        ADD     HL,BC                   ; FCF1 09       .
        LD      C,L                     ; FCF2 4D       M
        LD      B,H                     ; FCF3 44       D
        LD      DE,$FED7                ; FCF4 11D7FE   ...
        ADD     HL,DE                   ; FCF7 19       .
        PUSH    HL                      ; FCF8 E5       .
        LD      DE,$05                  ; FCF9 110500   ...
        ADD     HL,DE                   ; FCFC 19       .
        EX      DE,HL                   ; FCFD EB       .
        POP     HL                      ; FCFE E1       .
        PUSH    HL                      ; FCFF E5       .
        DI                              ; FD00 F3       .
        LDDR                            ; FD01 EDB8     ..
        INC     HL                      ; FD03 23       #
        LD      (HL),$FF                ; FD04 36FF     6.
        INC     HL                      ; FD06 23       #
        EX      DE,HL                   ; FD07 EB       .
        POP     HL                      ; FD08 E1       .
        INC     HL                      ; FD09 23       #
        INC     HL                      ; FD0A 23       #
        LDI                             ; FD0B EDA0     ..
        LDI                             ; FD0D EDA0     ..
        LD      HL,$FED6                ; FD0F 21D6FE   !..
        LD      A,($FED7)               ; FD12 3AD7FE   :..
        DEC     A                       ; FD15 3D       =
        CP      (HL)                    ; FD16 BE       .
        JR      C,Lb31d                 ; FD17 3801     8.
        INC     (HL)                    ; FD19 34       4
Lb31d:  LD      HL,($FEDE)              ; FD1A 2ADEFE   *..HL=source,DE= dest
        LD      DE,($FED9)              ; FD1D ED5BD9FE .[..BC=bytes to move for LDIR
        LD      ($FED9),HL              ; FD21 22D9FE   "..
        LD      ($FEDE),DE              ; FD24 ED53DEFE .S..
        LD      BC,$FED3                ; FD28 ED4BD3FE .K..
        OUT     ($0F),A                 ; FD2C D30F     enable ram $0000,$7FFF
        LDIR                            ; FD2E EDB0     ..
        OUT     ($0E),A                 ; FD30 D30E     disable ram $0000,$7FFF
Lb30d:  CALL    Lb32d                   ; FD32 CD06FE   ...
        JP      NZ,Lb33d                ; FD35 C2EDFD   ...
        JR      Lb34d                   ; FD38 184C     .L

Lb28d:  PUSH    HL                      ; FD3A E5       .
        CALL    Lb35d                   ; FD3B CDBAFE   ...
        POP     HL                      ; FD3E E1       .
        LD      A,($FED8)               ; FD3F 3AD8FE   :..
        LD      B,A                     ; FD42 47       G
        LD      A,(TRACKNUM)            ; FD43 3A2278   :"x
        CP      B                       ; FD46 B8       .
        JR      Z,Lb36d                 ; FD47 2844     (D
        LD      E,L                     ; FD49 5D       ]
        LD      D,H                     ; FD4A 54       T
        DEC     DE                      ; FD4B 1B       .
        INC     HL                      ; FD4C 23       #
        LD      C,(HL)                  ; FD4D 4E       N
        INC     HL                      ; FD4E 23       #
        LD      B,(HL)                  ; FD4F 46       F
        PUSH    BC                      ; FD50 C5       .
        INC     HL                      ; FD51 23       #
        LD      C,(HL)                  ; FD52 4E       N
        INC     HL                      ; FD53 23       #
        LD      B,(HL)                  ; FD54 46       F
        PUSH    BC                      ; FD55 C5       .
        PUSH    HL                      ; FD56 E5       .
        LD      BC,$FEDC                ; FD57 01DCFE   ...
        OR      A                       ; FD5A B7       .
        SBC     HL,BC                   ; FD5B ED42     .B
        LD      C,L                     ; FD5D 4D       M
        LD      B,H                     ; FD5E 44       D
        POP     HL                      ; FD5F E1       .
        EX      DE,HL                   ; FD60 EB       .
        DI                              ; FD61 F3       .
        LDDR                            ; FD62 EDB8     ..
        POP     HL                      ; FD64 E1       .
        LD      ($FEDB),HL              ; FD65 22DBFE   "..
        POP     HL                      ; FD68 E1       .
        PUSH    HL                      ; FD69 E5       .
        POP     IX                      ; FD6A DDE1     ..
        LD      ($FEDE),HL              ; FD6C 22DEFE   "..
        LD      DE,($FED9)              ; FD6F ED5BD9FE .[..
        LD      BC,$FED3                ; FD73 ED4BD3FE .K..
        OUT     ($0F),A                 ; FD77 D30F     ..
Lb37d:  LD      A,(DE)                  ; FD79 1A       .
        LDI                             ; FD7A EDA0     ..
        LD      (IX+$00),A              ; FD7C DD7700   .w.
        INC     IX                      ; FD7F DD23     .#
        JP      PE,Lb37d                ; FD81 EA79FD   .y.
        OUT     ($0E),A                 ; FD84 D30E     ..
Lb34d:  LD      A,(TRACKNUM)            ; FD86 3A2278   :"x
        LD      ($FED8),A               ; FD89 32D8FE   2..
        EI                              ; FD8C FB       .
Lb36d:  LD      A,($FED5)               ; FD8D 3AD5FE   :..
        LD      B,A                     ; FD90 47       G
        LD      HL,($FEDB)              ; FD91 2ADBFE   *..
        LD      IX,($FED9)              ; FD94 DD2AD9FE .*..
        LD      DE,($FED1)              ; FD98 ED5BD1FE .[..
        LD      A,(SECTORN)             ; FD9C 3A2378   :#x
        LD      C,A                     ; FD9F 4F       O
Lb40d:  LD      A,(HL)                  ; FDA0 7E       ~
        CP      C                       ; FDA1 B9       .
        JR      Z,Lb38d                 ; FDA2 2819     (.
        RLCA                            ; FDA4 07       .
        JR      C,Lb39d                 ; FDA5 3807     8.
        ADD     IX,DE                   ; FDA7 DD19     ..
        INC     HL                      ; FDA9 23       #
        DJNZ    Lb40d                   ; FDAA 10F4     ..
        JR      Lb33d                   ; FDAC 183F     .?
Lb39d:  LD      A,($FED5)               ; FDAE 3AD5FE   :..
        LD      E,A                     ; FDB1 5F       _
        LD      D,$00                   ; FDB2 1600     ..
        OR      A                       ; FDB4 B7       .
        SBC     HL,DE                   ; FDB5 ED52     .R
        LD      DE,($FED1)              ; FDB7 ED5BD1FE .[..
        JR      Lb40d                   ; FDBB 18E3     ..
Lb38d:  LD      A,(TRACKNUM)            ; FDBD 3A2278   :"x
        OR      A                       ; FDC0 B7       .
        JR      NZ,Lb41d                ; FDC1 2020       
        LD      A,(SECTORN)             ; FDC3 3A2378   :#x
        DEC     A                       ; FDC6 3D       =
        JR      NZ,Lb41d                ; FDC7 201A      .
        PUSH    IX                      ; FDC9 DDE5     ..
        POP     HL                      ; FDCB E1       .
        LD      BC,$80                  ; FDCC 018000   ...
        LD      DE,$FF6A                ; FDCF 116AFF   .j.
        LDIR                            ; FDD2 EDB0     ..
        LD      A,$FF                   ; FDD4 3EFF     >.
        LD      ($FF69),A               ; FDD6 3269FF   2i.
Lb26d:  CALL    Lb35d                   ; FDD9 CDBAFE   ...
        LD      IX,$FF6A                ; FDDC DD216AFF .!j.
        LD      DE,$80                  ; FDE0 118000   ...
Lb41d:  PUSH    IX                      ; FDE3 DDE5     ..
        POP     HL                      ; FDE5 E1       .
        LD      C,E                     ; FDE6 4B       K
        LD      B,D                     ; FDE7 42       B
        LD      DE,(SECTORBUF)          ; FDE8 ED5B2478 .[$x
        XOR     A                       ; FDEC AF       .
Lb33d:  RET                             ; FDED C9       .

Lb27d:  LD      DE,$05                  ; FDEE 110500   ...
        LD      HL,$FED8                ; FDF1 21D8FE   !..
        LD      A,($FED6)               ; FDF4 3AD6FE   :..
        LD      B,A                     ; FDF7 47       G
        ADD     A,$FF                   ; FDF8 C6FF     ..
        JR      NC,Lb42d                ; FDFA 3009     0.
        LD      A,(TRACKNUM)            ; FDFC 3A2278   :"x
Lb43d:  CP      (HL)                    ; FDFF BE       .
        JR      Z,Lb42d                 ; FE00 2803     (.
        ADD     HL,DE                   ; FE02 19       .
        DJNZ    Lb43d                   ; FE03 10FA     ..
Lb42d:  RET                             ; FE05 C9       .

Lb32d:  CALL    Lb15                    ; FE06 CDBE08   turn motor on
        CALL    Lb63                    ; FE09 CDF407   step to track
        LD      A,$05                   ; FE0C 3E05     >.
        LD      (CDLOOP2),A             ; FE0E 322878   2(x
Lb52d:  LD      A,($780F)               ; FE11 3A0F78   :.x
        LD      HL,$FFEA                ; FE14 21EAFF   !..
        CALL    Lb111                   ; FE17 CDD805   read sector data
        JR      NZ,Lb47d                ; FE1A 2005      .
        CALL    Lb14                    ; FE1C CD3509   reset FDC
        JR      Lb49d                   ; FE1F 1878     .x
Lb47d:  CALL    Lb80                    ; FE21 CD6809   wait for FDC
        AND     $1C                     ; FE24 E61C     ..
        JR      Z,Lb51d                 ; FE26 2808     (.
        LD      HL,CDLOOP2              ; FE28 212878   !(x
        DEC     (HL)                    ; FE2B 35       5
        JR      NZ,Lb52d                ; FE2C 20E3      .
        JR      Lb49d                   ; FE2E 1869     .i
Lb51d:  LD      A,($7815)               ; FE30 3A1578   :.x
        CPL                             ; FE33 2F       /
        AND     $04                     ; FE34 E604     ..
        LD      B,A                     ; FE36 47       G
        LD      A,($DENFLG)             ; FE37 3A1778   :.x
        ADD     A,A                     ; FE3A 87       .
        OR      B                       ; FE3B B0       .
        LD      L,A                     ; FE3C 6F       o
        LD      H,$00                   ; FE3D 2600     &.
        LD      DE,$7D88                ; FE3F 11887D   ..}
        ADD     HL,DE                   ; FE42 19       .
        LD      E,(HL)                  ; FE43 5E       ^
        INC     HL                      ; FE44 23       #
        LD      D,(HL)                  ; FE45 56       V
        EX      DE,HL                   ; FE46 EB       .
        LD      A,($FFEC)               ; FE47 3AECFF   :..
        LD      B,A                     ; FE4A 47       G
Lb54d:  LD      A,(HL)                  ; FE4B 7E       ~
        INC     HL                      ; FE4C 23       #
        CP      B                       ; FE4D B8       .
        JR      Z,Lb53d                 ; FE4E 2805     (.
        RLCA                            ; FE50 07       .
        JR      NC,Lb54d                ; FE51 30F8     0.
        JR      Lb49d                   ; FE53 1844     .D
Lb53d:  LD      ($FEDB),HL              ; FE55 22DBFE   "..
        PUSH    HL                      ; FE58 E5       .
        CALL    Lb76                    ; FE59 CDB807   load track to FDC
        POP     IX                      ; FE5C DDE1     ..
        LD      HL,($FED9)              ; FE5E 2AD9FE   *..
Lb57d:  LD      A,(IX+$00)              ; FE61 DD7E00   .~.
        BIT     7,A                     ; FE64 CB7F     ..
        JR      Z,Lb56d                 ; FE66 280C     (.
        LD      A,($FED5)               ; FE68 3AD5FE   :..
        CPL                             ; FE6B 2F       /
        LD      E,A                     ; FE6C 5F       _
        LD      D,$FF                   ; FE6D 16FF     ..
        INC     DE                      ; FE6F 13       .
        ADD     IX,DE                   ; FE70 DD19     ..
        JR      Lb57d                   ; FE72 18ED     ..
Lb56d:  LD      (SECTORFDC),A           ; FE74 320260   2.`
        LD      A,$05                   ; FE77 3E05     >.
        LD      (CDLOOP2),A             ; FE79 322878   2(x
        PUSH    HL                      ; FE7C E5       .
Lb62d:  POP     HL                      ; FE7D E1       .
        PUSH    HL                      ; FE7E E5       .
        CALL    Lb78                    ; FE7F CDD505   read sector
        JR      Z,Lb59d                 ; FE82 2805     (.
        CALL    Lb80                    ; FE84 CD6809   wait for fdc
        JR      Lb60d                   ; FE87 1805     ..
Lb59d:  CALL    Lb14                    ; FE89 CD3509   reset FDC
        OR      $10                     ; FE8C F610     ..
Lb60d:  AND     $1C                     ; FE8E E61C     ..
        JR      Z,Lb61d                 ; FE90 280B     (.
        LD      HL,CDLOOP2              ; FE92 212878   !(x
        DEC     (HL)                    ; FE95 35       5
        JR      NZ,Lb62d                ; FE96 20E5      .
        POP     HL                      ; FE98 E1       .
Lb49d:  OR      $FF                     ; FE99 F6FF     ..
        JR      Lb63d                   ; FE9B 181C     ..
Lb61d:  POP     BC                      ; FE9D C1       .
        LD      B,(IX+$00)              ; FE9E DD4600   .F.
        INC     IX                      ; FEA1 DD23     .#
        LD      A,($FFEC)               ; FEA3 3AECFF   :..
        CP      B                       ; FEA6 B8       .
        JR      NZ,Lb57d                ; FEA7 20B8      .
        LD      BC,$FED3                ; FEA9 ED4BD3FE .K..
        LD      HL,($FED9)              ; FEAD 2AD9FE   *..
Lb64d:  LD      A,(HL)                  ; FEB0 7E       ~
        CPL                             ; FEB1 2F       /
        LD      (HL),A                  ; FEB2 77       w
        INC     HL                      ; FEB3 23       #
        DEC     BC                      ; FEB4 0B       .
        LD      A,B                     ; FEB5 78       x
        OR      C                       ; FEB6 B1       .
        JR      NZ,Lb64d                ; FEB7 20F7      .
Lb63d:  RET                             ; FEB9 C9       .

Lb35d:  LD      A,(TRACKNUM)            ; FEBA 3A2278   :"x
        SRL     A                       ; FEBD CB3F     .?
        CALL    Lb134                   ; FEBF CDC30A   update track led display
        LD      (TLEDNUM1),HL           ; FEC2 223A78   ":x
        CALL    UPLED-1-2-B-E           ; FEC5 CD120B   ...
        RET                             ; FEC8 C9       .

Lb21d:  LD      HL,($FECE)              ; FEC9 2ACEFE   *..
        JP      (HL)                    ; FECC E9       .

        DB $FE                          ; FECD FE
