.INCLUDE ".\head\graph.asm" ;就是我原来发的那个与平台无关的函数库
;******************************************
;函数说明:将数字或字母打印到屏幕或缓存
;入参:A屏幕0,缓存1;$80~$81:屏幕位置x,y,$3007:状态1:copy 2:not
;character->$92
;******************************************
CharacterData:
.DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.DB $00,$00,$20,$20,$20,$20,$20,$20,$00,$20,$00,$00,$00,$28,$50,$50
.DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$28,$28,$FC,$28,$50,$FC
.DB $50,$50,$00,$00,$00,$20,$78,$A8,$A0,$60,$30,$28,$A8,$F0,$20,$00
.DB $00,$00,$48,$A8,$B0,$50,$28,$34,$54,$48,$00,$00,$00,$00,$20,$50
.DB $50,$78,$A8,$A8,$90,$6C,$00,$00,$00,$40,$40,$80,$00,$00,$00,$00
.DB $00,$00,$00,$00,$00,$04,$08,$10,$10,$10,$10,$10,$10,$08,$04,$00
.DB $00,$40,$20,$10,$10,$10,$10,$10,$10,$20,$40,$00,$00,$00,$00,$20
.DB $A8,$70,$70,$A8,$20,$00,$00,$00,$00,$00,$20,$20,$20,$F8,$20,$20
.DB $20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$40,$80
.DB $00,$00,$00,$00,$00,$F8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.DB $00,$00,$00,$00,$00,$40,$00,$00,$00,$08,$10,$10,$10,$20,$20,$40
.DB $40,$40,$80,$00,$00,$00,$70,$88,$88,$88,$88,$88,$88,$70,$00,$00
.DB $00,$00,$20,$60,$20,$20,$20,$20,$20,$70,$00,$00,$00,$00,$70,$88
.DB $88,$10,$20,$40,$80,$F8,$00,$00,$00,$00,$70,$88,$08,$30,$08,$08
.DB $88,$70,$00,$00,$00,$00,$10,$30,$50,$50,$90,$78,$10,$18,$00,$00
.DB $00,$00,$F8,$80,$80,$F0,$08,$08,$88,$70,$00,$00,$00,$00,$70,$90
.DB $80,$F0,$88,$88,$88,$70,$00,$00,$00,$00,$F8,$90,$10,$20,$20,$20
.DB $20,$20,$00,$00,$00,$00,$70,$88,$88,$70,$88,$88,$88,$70,$00,$00
.DB $00,$00,$70,$88,$88,$88,$78,$08,$48,$70,$00,$00,$00,$00,$00,$00
.DB $20,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00
.DB $00,$20,$20,$00,$00,$04,$08,$10,$20,$40,$20,$10,$08,$04,$00,$00
.DB $00,$00,$00,$00,$F8,$00,$00,$F8,$00,$00,$00,$00,$00,$40,$20,$10
.DB $08,$04,$08,$10,$20,$40,$00,$00,$00,$00,$70,$88,$88,$10,$20,$20
.DB $00,$20,$00,$00,$00,$00,$70,$88,$98,$A8,$A8,$B8,$80,$78,$00,$00
.DB $00,$00,$20,$20,$30,$50,$50,$78,$48,$CC,$00,$00,$00,$00,$F0,$48
.DB $48,$70,$48,$48,$48,$F0,$00,$00,$00,$00,$78,$88,$80,$80,$80,$80
.DB $88,$70,$00,$00,$00,$00,$F0,$48,$48,$48,$48,$48,$48,$F0,$00,$00
.DB $00,$00,$F8,$48,$50,$70,$50,$40,$48,$F8,$00,$00,$00,$00,$F8,$48
.DB $50,$70,$50,$40,$40,$E0,$00,$00,$00,$00,$38,$48,$80,$80,$9C,$88
.DB $48,$30,$00,$00,$00,$00,$CC,$48,$48,$78,$48,$48,$48,$CC,$00,$00
.DB $00,$00,$F8,$20,$20,$20,$20,$20,$20,$F8,$00,$00,$00,$00,$7C,$10
.DB $10,$10,$10,$10,$10,$90,$E0,$00,$00,$00,$EC,$48,$50,$60,$50,$50
.DB $48,$EC,$00,$00,$00,$00,$E0,$40,$40,$40,$40,$40,$44,$FC,$00,$00
.DB $00,$00,$D8,$D8,$D8,$D8,$A8,$A8,$A8,$A8,$00,$00,$00,$00,$DC,$48
.DB $68,$68,$58,$58,$48,$E8,$00,$00,$00,$00,$70,$88,$88,$88,$88,$88
.DB $88,$70,$00,$00,$00,$00,$F0,$48,$48,$70,$40,$40,$40,$E0,$00,$00
.DB $00,$00,$70,$88,$88,$88,$88,$E8,$98,$70,$18,$00,$00,$00,$F0,$48
.DB $48,$70,$50,$48,$48,$EC,$00,$00,$00,$00,$78,$88,$80,$60,$10,$08
.DB $88,$F0,$00,$00,$00,$00,$F8,$A8,$20,$20,$20,$20,$20,$70,$00,$00
.DB $00,$00,$CC,$48,$48,$48,$48,$48,$48,$30,$00,$00,$00,$00,$CC,$48
.DB $48,$50,$50,$30,$20,$20,$00,$00,$00,$00,$A8,$A8,$A8,$70,$50,$50
.DB $50,$50,$00,$00,$00,$00,$D8,$50,$50,$20,$20,$50,$50,$D8,$00,$00
.DB $00,$00,$D8,$50,$50,$20,$20,$20,$20,$70,$00,$00,$00,$00,$F8,$90
.DB $10,$20,$20,$40,$48,$F8,$00,$00,$00,$38,$20,$20,$20,$20,$20,$20
.DB $20,$20,$38,$00,$00,$40,$40,$40,$20,$20,$10,$10,$10,$08,$00,$00
.DB $00,$70,$10,$10,$10,$10,$10,$10,$10,$10,$70,$00,$00,$20,$50,$00
.DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.DB $00,$00,$00,$FC,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.DB $00,$00,$00,$00,$00,$30,$48,$38,$48,$3C,$00,$00,$00,$00,$C0,$40
.DB $40,$70,$48,$48,$48,$70,$00,$00,$00,$00,$00,$00,$00,$38,$48,$40
.DB $40,$38,$00,$00,$00,$00,$18,$08,$08,$38,$48,$48,$48,$3C,$00,$00
.DB $00,$00,$00,$00,$00,$30,$48,$78,$40,$38,$00,$00,$00,$00,$1C,$20
.DB $20,$78,$20,$20,$20,$78,$00,$00,$00,$00,$00,$00,$00,$3C,$48,$30
.DB $40,$78,$44,$38,$00,$00,$C0,$40,$40,$70,$48,$48,$48,$EC,$00,$00
.DB $00,$00,$20,$00,$00,$60,$20,$20,$20,$70,$00,$00,$00,$00,$10,$00
.DB $00,$30,$10,$10,$10,$10,$10,$E0,$00,$00,$C0,$40,$40,$5C,$50,$70
.DB $48,$EC,$00,$00,$00,$00,$E0,$20,$20,$20,$20,$20,$20,$F8,$00,$00
.DB $00,$00,$00,$00,$00,$F0,$A8,$A8,$A8,$A8,$00,$00,$00,$00,$00,$00
.DB $00,$F0,$48,$48,$48,$EC,$00,$00,$00,$00,$00,$00,$00,$30,$48,$48
.DB $48,$30,$00,$00,$00,$00,$00,$00,$00,$F0,$48,$48,$48,$70,$40,$E0
.DB $00,$00,$00,$00,$00,$38,$48,$48,$48,$38,$08,$1C,$00,$00,$00,$00
.DB $00,$D8,$60,$40,$40,$E0,$00,$00,$00,$00,$00,$00,$00,$78,$40,$30
.DB $08,$78,$00,$00,$00,$00,$00,$20,$20,$70,$20,$20,$20,$18,$00,$00
.DB $00,$00,$00,$00,$00,$D8,$48,$48,$48,$3C,$00,$00,$00,$00,$00,$00
.DB $00,$EC,$48,$50,$30,$20,$00,$00,$00,$00,$00,$00,$00,$A8,$A8,$70
.DB $50,$50,$00,$00,$00,$00,$00,$00,$00,$D8,$50,$20,$50,$D8,$00,$00
.DB $00,$00,$00,$00,$00,$EC,$48,$50,$30,$20,$20,$C0,$00,$00,$00,$00
.DB $00,$78,$10,$20,$20,$78,$00,$00,$00,$18,$10,$10,$10,$20,$10,$10
.DB $10,$10,$18,$00,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10
.DB $00,$60,$20,$20,$20,$10,$20,$20,$20,$20,$60,$00,$40,$A4,$18,$00
.DB $00,$00,$00,$00,$00,$00,$00,$00
CLsrData1:
.DB $03,$81,$c0,$e0,$f0,$f8,$fc,$fe
CLsrData2:
.DB $ff,$ff,$ff,$7f,$3f,$1f,$0f,$07
;*****************************************
DrawCharacter:
JMP CharacterCode0
;code 1:条件0280~$028b为点阵数据;作用...
CharacterCode1:
LDX #$0b
LDA #$00
ChCodeLoop1:
STA $028c,x
DEX
BPL ChCodeLoop1
LDX $84
LDY $85
LDA $86
JSR GetxyIndex
STX $82
STX $40
LDY $82
ChCodeLoop3:
DEY
BMI ChCodeLabel1
LDX #$0b
ChCodeLoop2:
LSR $0280,x
ROR $028c,x
DEX
BPL ChCodeLoop2
JMP ChCodeLoop3
ChCodeLabel1:
LDA $3007
CMP #$01
BNE ChCodeLabel2
JMP ChType1
ChCodeLabel2:
CMP #$02
BNE ChCodeLabel3
JMP ChType2
ChCodeLabel3:
JMP ChReturn
;***************************
ChType1:
JMP CharacterCode2
ChType2:
LDY $82
LDA CLsrData1,y
EOR #$ff
TAY
LDX #$0b
ChType2Loop1:
TYA
EOR $0280,x
STA $0280,x
DEX
BPL ChType2Loop1
LDY $82
LDA CLsrData2,y
EOR #$ff
TAY
LDX #$0b
ChType2Loop2:
TYA
EOR $028c,x
STA $028c,x
DEX
BPL ChType2Loop2
JMP CharacterCode2
;************************************
CharacterCode2:
LDA $80
STA $82
LDA $81
STA $83
ChCode2Loop1:
LDA #$50
SEC
SBC $85
STA $fe
LDA $84
CMP #$a0
BCC ChCode2Label10
JMP ChReturn
ChCode2Label10:
LDA $85
CMP #$50
BCC ChCode2Label1
JMP ChReturn
ChCode2Label1:
LDY #$00
LDX $40
LDA CLsrData1,x
TAX
ChCode2Loop2:
TXA
AND ($80),y
ORA $0280,y
STA ($80),y
DEC $fe
BNE ChCode2Label20
JMP ChCode2Label2
ChCode2Label20:
INY
CPY #$0c
BEQ ChCode2Label2
CLC
LDA #$13
ADC $80
STA $80
LDA #$00
ADC $81
STA $81
JMP ChCode2Loop2
ChCode2Label2:
INC $82
LDA $82
STA $80
BNE ChCode2Label3
INC $83
ChCode2Label3:
LDA $83
STA $81
LDA #$50
SEC
SBC $85
STA $fe
LDA $84
CLC
ADC #$06
CMP #$a0
BCC ChCode2Label4
JMP ChReturn
ChCode2Label4:
LDY #$00
LDX $40
LDA CLsrData2,x
TAX
ChCode2Loop3:
TXA
AND ($80),y
ORA $028c,y
STA ($80),y
DEC $fe
BNE ChCode2Label40
JMP ChReturn
ChCode2Label40:
INY
CPY #$0c
BEQ ChCode2Label5
CLC
LDA #$13
ADC $80
STA $80
LDA #$00
ADC $81
STA $81
JMP ChCode2Loop3
ChCode2Label5:
JMP ChReturn
;*****************************
ChA =$86
ChX =$84
ChY =$85
CharacterCode0:
TAY
LDA $84
PHA
LDA $85
PHA
LDA $86
PHA
LDA $40
PHA
STY $86
LDA $80
STA $84
LDA $81
STA $85
LDA $92
sec
sbc #$20
STA $80
LDA #$00
STA $81
ASL $80
ROL $81
ASL $80
ROL $81
LDX $80
LDY $81
ASL $80
ROL $81
CLC
TXA
ADC $80
STA $80
TYA
ADC $81
STA $81
CLC
LDA #<CharacterData
ADC $80
STA $80
LDA #>CharacterData
ADC $81
STA $81
LDY #$0b
ChCode0Loop1:
LDA ($80),y
STA $0280,y
DEY
BPL ChCode0Loop1
JMP CharacterCode1
ChReturn:
PLA
STA $40
PLA
STA $86
PLA
STA $85
PLA
STA $84
RTS
;******************************************
;函数说明:TextOut,将一以00结尾的英文字符串。。
;入参:A,$3000,$3001:x,y;$3007,$80,$81:数据地址
;******************************************
TextOut:
TAY
LDA $40
PHA
LDA $41
PHA
LDA $42
PHA
STY $42
LDA $80
STA $40
LDA $81
STA $41
TextOutLoop1:
LDA $3000
CMP #$a0
BCC TextOutLabel1
JMP TextOutReturn
TextOutLabel1:
STA $80
LDA $3001
CMP #$50
BCC TextOutLabel2
JMP TextOutReturn
TextOutLabel2:
STA $81
LDY #$00
LDA ($40),y
BNE TextOutLabel3
JMP TextOutReturn
TextOutLabel3:
STA $92
LDA $42
JSR DrawCharacter
CLC
LDA #$06
ADC $3000
STA $3000
INC $40
BNE TextOutLabel4
INC $41
TextOutLabel4:
JMP TextOutLoop1
TextOutReturn:
PLA
STA $42
PLA
STA $41
PLA
STA $40
RTS
|