diff --git a/desk.acc/calculator.s b/desk.acc/calculator.s index 18948ce..ed8d440 100644 --- a/desk.acc/calculator.s +++ b/desk.acc/calculator.s @@ -1,58 +1,70 @@ .setcpu "65C02" .org $800 + .include "apple2.inc" .include "../inc/prodos.inc" .include "../inc/auxmem.inc" .include "../inc/applesoft.inc" + .include "a2d.inc" L0020 := $0020 L00B1 := $00B1 -L4015 := $4015 -ROMIN := $C082 +ROMIN2 := $C082 - jmp L0804 -L0803: .byte 0 +start: jmp copy2aux -L0804: tsx - stx L0803 - lda ROMIN - lda #$46 - sta $3C - lda #$08 - sta $3D - lda #$E4 - sta $3E - lda #$13 - sta $3F - lda #$46 - sta $42 - lda #$08 - sta $43 - sec +save_stack: .byte 0 + +.proc copy2aux + tsx + stx save_stack + + start := call_init + end := da_end + dest := start + + lda ROMIN2 + lda #start + sta STARTHI + lda #end + sta ENDHI + lda #dest + sta DESTINATIONHI + sec ; main>aux jsr AUXMOVE - lda #$46 - sta $03ED - lda #$08 - sta $03EE + lda #start + sta XFERSTARTHI php pla - ora #$40 + ora #$40 ; set overflow: use aux zp/stack pha plp - sec + sec ; control main>aux jmp XFER +.endproc -L083B: lda LCBANK1 +.proc exit_da lda LCBANK1 - ldx L0803 + lda LCBANK1 + ldx save_stack txs rts +.endproc - lda ROMIN +call_init: + lda ROMIN2 jmp L0D18 L084C: lda LCBANK1 @@ -63,7 +75,7 @@ L0854: lda L088D,x dex bpl L0854 jsr L0020 - lda ROMIN + lda ROMIN2 lda #$34 jsr L089E lda LCBANK1 @@ -73,16 +85,17 @@ L0854: lda L088D,x jsr UNKNOWN_CALL .byte $0C .addr 0 + L0878: lda #$00 sta L089D - lda ROMIN + lda ROMIN2 A2D_CALL $3C, L08D1 A2D_CALL A2D_TEXT_BOX1, L0C6E rts L088D: sta RAMRDOFF sta RAMWRTOFF - jsr L4015 + jsr JUMP_TABLE_15 sta RAMRDON sta RAMWRTON rts @@ -218,12 +231,19 @@ L0BC9: .byte $00 L0BCA: .byte $00 L0BCB: .byte $00 L0BCC: .byte $01,$00,$00,$00,$81,$00,$60,$00 -L0BD4: .byte $77,$DD,$77,$DD,$77,$DD,$77,$DD + +background_pattern: + .byte $77,$DD,$77,$DD,$77,$DD,$77,$DD .byte $00 -L0BDD: .byte $00,$00,$00,$00,$00,$00,$00,$00 + +black_pattern: + .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00 -L0BE6: .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + +white_pattern: + .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .byte $00 + L0BEF: .byte $7F L0BF0: .byte $0A,$00,$05,$00,$78,$00,$11,$00 L0BF8: .byte $0B,$00,$06,$00,$77,$00,$10,$00 @@ -286,6 +306,7 @@ L0CE6: .byte $00,$00,$02,$00,$06,$00,$0E,$00 .byte $3F,$00,$7F,$00,$7F,$01,$7F,$00 .byte $78,$00,$78,$00,$70,$01,$70,$01 .byte $01,$01 + L0D18: sta ALTZPON lda LCBANK1 lda LCBANK1 @@ -298,7 +319,7 @@ L0D18: sta ALTZPON sta L08C5 A2D_CALL $2D, L08C5 A2D_CALL A2D_GET_BUTTON, L08C5 - lda ROMIN + lda ROMIN2 jsr L128E lda #$34 jsr L089E @@ -361,7 +382,7 @@ L0DDC: cmp #$03 L0DE6: lda LCBANK1 lda LCBANK1 A2D_CALL A2D_GET_MOUSE, L08C6 - lda ROMIN + lda ROMIN2 lda L08CA cmp #$02 bcc L0E03 @@ -388,7 +409,7 @@ L0E22: lda LCBANK1 jsr UNKNOWN_CALL .byte $0C .addr 0 - lda ROMIN + lda ROMIN2 A2D_CALL $1A, L08D5 ldx #$09 L0E3F: lda L0E4A,x @@ -399,7 +420,7 @@ L0E3F: lda L0E4A,x L0E4A: sta RAMRDOFF sta RAMWRTOFF - jmp L083B + jmp exit_da L0E53: cmp #$03 bne L0E03 @@ -408,7 +429,7 @@ L0E53: cmp #$03 lda LCBANK1 lda LCBANK1 A2D_CALL $44, L08C5 - lda ROMIN + lda ROMIN2 jsr L084C rts @@ -895,7 +916,7 @@ L120A: stx L122F sty L122F+1 sty L1253+1 sty L1273+1 - A2D_CALL A2D_SET_PATTERN, L0BDD + A2D_CALL A2D_SET_PATTERN, black_pattern A2D_CALL $07, L0CA6 sec ror $FC @@ -976,11 +997,11 @@ L12C0: stx L0C40 rts L12E8: A2D_CALL $26, 0 - A2D_CALL A2D_SET_PATTERN, L0BD4 + A2D_CALL A2D_SET_PATTERN, background_pattern A2D_CALL A2D_CLEAR_BOX, L0BCC - A2D_CALL A2D_SET_PATTERN, L0BDD + A2D_CALL A2D_SET_PATTERN, black_pattern A2D_CALL $12, L0BF0 - A2D_CALL A2D_SET_PATTERN, L0BE6 + A2D_CALL A2D_SET_PATTERN, white_pattern A2D_CALL A2D_CLEAR_BOX, L0BF8 A2D_CALL $0C, L0BEF lda #$D6 @@ -1066,3 +1087,5 @@ L13D2: lda $EA60 sec sbc #$D0 L13E3: rts + +da_end := * diff --git a/desk.acc/go.sh b/desk.acc/go.sh index 6283c1c..47b497d 100755 --- a/desk.acc/go.sh +++ b/desk.acc/go.sh @@ -6,7 +6,18 @@ set -e make all function verify { - diff "$1.bin" "$1.F1" && echo "$1: files match" + diff "$1.bin" "$1.F1" \ + && echo "$1: files match" \ + || ( + tput setaf 1 # red + tput blink + echo "************************************" + echo "*" + echo "* Bad: $1" + echo "*" + echo "************************************" + tput sgr0 # res + ) } # Verify original and output match diff --git a/desk.acc/show_image_file.s b/desk.acc/show_image_file.s index 72fdc31..05a31fe 100644 --- a/desk.acc/show_image_file.s +++ b/desk.acc/show_image_file.s @@ -1,6 +1,7 @@ .setcpu "65C02" .org $800 + .include "apple2.inc" .include "../inc/prodos.inc" .include "../inc/auxmem.inc" .include "a2d.inc" diff --git a/desk.acc/show_text_file.s b/desk.acc/show_text_file.s index 034defa..b4746c6 100644 --- a/desk.acc/show_text_file.s +++ b/desk.acc/show_text_file.s @@ -1,6 +1,7 @@ .setcpu "65C02" .org $800 + .include "apple2.inc" .include "../inc/prodos.inc" .include "../inc/auxmem.inc" .include "a2d.inc" diff --git a/inc/auxmem.inc b/inc/auxmem.inc index be517ec..5e0418a 100644 --- a/inc/auxmem.inc +++ b/inc/auxmem.inc @@ -15,8 +15,6 @@ PAGE2ON := $C055 HIRESON := $C056 HIRESOFF := $C057 -LCBANK1 := $C08B - ;;; Routines AUXMOVE := $C311 ; carry set main>aux, carry clear aux>main XFER := $C314 @@ -27,3 +25,6 @@ ENDLO := $3E ENDHI := $3F DESTINATIONLO := $42 DESTINATIONHI := $43 + +XFERSTARTLO := $03ED +XFERSTARTHI := $03EE