diff --git a/clock.system.s b/clock.system.s index 2a05104..e7df442 100644 --- a/clock.system.s +++ b/clock.system.s @@ -120,7 +120,7 @@ L2099 := * + 1 lsr a sta L22C7 jsr L222B - sta $11FF + sta L11FF ldx DEVCNT L20AF: lda DEVLST,x and #$0F @@ -142,7 +142,7 @@ L20C8: lda DEVLST,x L20CB: and #%01110000 ; slot ora #$80 sta L22E3 ; Set $C0nn address - lda $11FE + lda L11FE and #$03 beq L20E3 cmp #$02 @@ -150,13 +150,14 @@ L20CB: and #%01110000 ; slot lda $07 bne L20EE beq L20FE -L20E3: ldy #$38 +L20E3: ldy #$38 ; offset into patch #1 lda $07 beq L20F0 - ldy #$00 + ldy #$00 ; offset into patch #2 jmp L20F0 -L20EE: ldy #$70 + ;; Patch bytes on top of driver +L20EE: ldy #$70 ; offset into patch #3 L20F0: ldx #$00 L20F2: lda L22E2,y sta L2269,x @@ -164,6 +165,7 @@ L20F2: lda L22E2,y inx cpx #$38 bne L20F2 + L20FE: lda #$02 sta L210F L2103: jsr L223F @@ -183,7 +185,7 @@ L2111: lda $07 iny sty L226A sty L2274 - lda $11FE + lda L11FE and #$03 beq L20FE sty L229F @@ -196,6 +198,8 @@ L2135: ldy #$07 jsr MON_HOME jmp L1000 + ;; -------------------------------------------------- + L2145: lda #$00 sta DATELO sta DATELO+1 @@ -213,7 +217,7 @@ L2156: lda #OPC_JMP_abs lda $0A cmp #$0B bcc L2176 - bit $11FE + bit L11FE bpl L2176 sta $1204 L2176: lda $1204 @@ -226,13 +230,13 @@ L2176: lda $1204 sbc $1204 bcs L21DF L218C: bit KBDSTRB - rol $11FE + rol L11FE lda #$03 cmp $0A - ror $11FE + ror L11FE L2199: ldy #$05 jsr L10EF - lda $11FF + lda L11FF jsr PRBYTE ldy #$06 jsr L10EF @@ -249,11 +253,11 @@ L21A9: jsr RDKEY asl a asl a asl a - sta $11FF + sta L11FF jsr L238E and #$0F - ora $11FF - sta $11FF + ora L11FF + sta L11FF jmp L2199 L21D3: lda $1204 @@ -269,7 +273,7 @@ L21DF: lda RWRAM1 sta L22B1 lda DATETIME+2 sta L2203 - adc #$00 + adc #0 sta L22B2 ;; Relocate clock driver @@ -285,7 +289,7 @@ L2203 := * + 2 lda ROMIN2 jmp L1000 -L2210: lda $11FF +L2210: lda L11FF pha lsr a lsr a @@ -427,6 +431,15 @@ L22DB := * + 1 .byte $63 .byte $FF .byte $62 + + ;; End of relocated clock driver + +;;; ============================================================ + + ;; Patches applied to driver (length $38, at offset 0) + + ;; Patch #1 +patch1: L22E2: L22E3 := * + 1 lda $C0E0 ; Set to $C0x0, n=slot+8 @@ -458,6 +471,13 @@ L2307: lda MOUSE_BTN ldy #$04 dex bpl L2300 + .assert * - patch1 = $38, error, "Patch length" + + ;; -------------------------------------------------- + ;; Patch #2 +patch2: + .assert * - $38 = L22E2, error, "Offset changed" + lda PORT2_ACIA_COMMAND nop ldy #$03 @@ -489,8 +509,17 @@ L233A: lda PORT2_ACIA_STATUS ldy #$04 dex bpl L2335 + nop nop + + .assert * - patch2 = $38, error, "Patch length" + + ;; -------------------------------------------------- + ;; Patch #3 +patch3: + .assert * - $70 = L22E2, error, "Offset changed" + lda ENVBL sta ENBXY sta X0EDGE1 @@ -521,13 +550,18 @@ L236B: lda MOUSE_BTN dex bpl L2369 lda DISVBL + .assert * - patch3 = $38, error, "Patch length" + +;;; ============================================================ + + L238A: jsr L2265 rts L238E: jsr RDKEY - cmp #$B0 + cmp #'0' | $80 bcc L238E - cmp #$BA + cmp #('9'+1) | $80 bcs L238E jmp COUT @@ -547,11 +581,11 @@ L239E: L1000: ldy #$00 - sty $11E8 + sty L11E8 iny sty $04 iny - sty $11E7 + sty L11E7 jsr L119F lda $1C23 sta $02 @@ -573,16 +607,16 @@ L1021: ldy #$10 and #$0F sta $05 tay - ldx #$06 + ldx #strlen_str_system - 1 L103A: lda ($00),y - cmp $122E,x + cmp str_system,x bne L10A8 dey dex bpl L103A - ldy #$0C + ldy #strlen_str_clock_system L1047: lda ($00),y - cmp $1235,y + cmp str_clock_system,y bne L1053 dey bne L1047 @@ -637,9 +671,9 @@ L10A8: clc cmp $03 bne L10E2 ldy $1C02 - sty $11E7 + sty L11E7 lda $1C03 - sta $11E8 + sta L11E8 bne L10D3 tya bne L10D3 @@ -655,22 +689,25 @@ L10D3: jsr L119F sta $01 L10E2: jmp L1021 -L10E5: lda $11FE +L10E5: lda L11FE and #$03 bne L10EE ldy #$09 L10EE: rts L10EF: lda $1242,y - sta $1109 - lda $124E,y - sta $110A + sta L1109 + lda L124E,y + sta L1109+1 cpy #$06 beq L1106 cpy #$08 beq L1106 jsr MON_HOME L1106: ldy #$00 + + L1109 := *+1 + L1108: lda $F000,y beq L1119 cmp #$E0 @@ -682,7 +719,7 @@ L1113: jsr COUT L1119: rts L111A: lda #$07 - sta $11F9 + sta L11F9 ldy #$03 L1121: lda DATELO,y sta $1203,y @@ -690,7 +727,7 @@ L1121: lda DATELO,y bpl L1121 lda #OPC_RTS sta DATETIME - PRODOS_CALL MLI_SET_FILE_INFO, $11F9 + PRODOS_CALL MLI_SET_FILE_INFO, L11F9 bne :+ lda #OPC_JMP_abs @@ -707,8 +744,8 @@ L1121: lda DATELO,y L114F: PRODOS_CALL MLI_OPEN, $11E9 bne L11A8 - lda $11EE - sta $11F0 + lda L11EE + sta L11F0 PRODOS_CALL MLI_READ, $11EF bne L11A8 @@ -718,8 +755,8 @@ L114F: PRODOS_CALL MLI_OPEN, $11E9 rts L116E: lda DEVNUM - sta $11DD - sta $11E4 + sta L11DD + sta L11E4 PRODOS_CALL MLI_ON_LINE, $11DC bne L11A8 @@ -735,7 +772,7 @@ L116E: lda DEVNUM PRODOS_CALL MLI_SET_PREFIX, $11E0 bne L11A8 - PRODOS_CALL MLI_GET_FILE_INFO, $11F9 + PRODOS_CALL MLI_GET_FILE_INFO, L11F9 bne L11A8 rts @@ -769,24 +806,43 @@ L11C7: lda #$02 rts .byte $02 - rts +L11DD: .byte $60 .byte $0C .byte $12 - ora ($0B,x) - .byte $12,$03,$60,$00,$1C,$00,$00,$03 - .byte $1D,$12,$00,$1C,$00,$04,$00,$00 - .byte $20,$00,$9F,$00,$00,$01,$00,$0A + .byte $01,$0B + .byte $12,$03 +L11E4: .byte $60 + .byte $00,$1C +L11E7: .byte $00 +L11E8: .byte $00 + .byte $03 + .byte $1D,$12,$00,$1C +L11EE: .byte $00 + .byte $04 +L11F0: .byte $00 + .byte $00 + .byte $20,$00,$9F,$00,$00,$01,$00 +L11F9: .byte $0A .byte $35,$12 - .res 50, 0 +L11FC: .byte 0 +L11FD: .byte 0 +L11FE: .byte 0 +L11FF: .byte 0 + .res 46, 0 +str_system: .byte ".SYSTEM" + strlen_str_system = .strlen(".SYSTEM") +str_clock_system: PASCAL_STRING "CLOCK.SYSTEM" + strlen_str_clock_system = .strlen("CLOCK.SYSTEM") .byte $5A,$AC,$08,$30,$4D,$64,$77,$87 - .byte $AA,$2A,$47,$CD,$12,$12,$13,$13 + .byte $AA,$2A,$47,$CD +L124E: .byte $12,$12,$13,$13 .byte $13,$13,$13,$13,$13,$13,$13,$12 HIASCII "Install Clock Driver 1.5"