| 
 
注册时间2005-5-25最后登录1970-1-1 
 | 
 
| ;4灰度格式转为16灰度格式 ;图片数据在$3380
 ;结果放在$2000
 4GrayTo16:
 LDA #$00
 STA $80
 LDA #$20
 STA $81
 LDA #$80
 STA $82
 LDA #$33
 STA $83
 grayto4:
 LDX #$02
 LDA #$00
 STA $84
 TAY
 LDA ($82),Y
 STA $85
 grayto1:
 LDA #$00
 STA $84
 TAY
 ASL $85
 ROL $84
 ASL $85
 ROL $84
 LDA $84
 TAY
 LDA GTT1,Y
 STA $86
 LDA #$00
 STA $84
 TAY
 ASL $85
 ROL $84
 ASL $85
 ROL $84
 LDA $84
 TAY
 LDA GTT2,Y
 ORA $86
 LDY #$00
 STA ($80),Y
 INC $80
 BNE grayto2
 INC $81
 grayto2:
 DEX
 BNE grayto1
 INC $82
 BNE grayto3
 INC $83
 grayto3:
 LDA $83
 CMP #$40
 BNE grayto4
 RTS
 GTT1:
 .DB $F0,$A0,$50,$00
 GTT2:
 .DB $0F,$0A,$05,$00
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;用背景色清除屏幕
 BgColor=$03d0
 ClearScreen:
 LDA #$80
 STA $80
 LDA #$13
 STA $81
 LDA #$00
 LDY #$00
 CLC
 LDX BgColor
 BEQ color0
 DEX
 BEQ color1
 DEX
 BEQ color2
 ADC #$55
 color2:
 ADC #$55
 color1:
 ADC #$55
 color0:
 STA ($80),Y
 INC $80
 BNE cl1
 INC $81
 cl1:
 LDX $81
 CPX #$20
 BNE color0
 RTS
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;16灰度的dat数据转化为16灰度bmp数据
 ;入参:$2100-$38FF
 ;出参:$208A-$38FF
 DatToBmp:
 LDA #$00
 STA $80
 LDA #$21
 STA $81
 LDA #$B0
 STA $82
 LDA #$39
 STA $83
 DTB4:
 LDY #$00
 DTB1:
 LDA ($80),Y
 STA $3A00,Y
 INY
 CPY #$50
 BNE DTB1
 LDY #$00
 DTB2:
 LDA ($82),Y
 STA ($80),Y
 INY
 CPY #$50
 BNE DTB2
 LDY #$00
 DTB3:
 LDA $3A00,Y
 STA ($82),Y
 INY
 CPY #$50
 BNE DTB3
 CLC
 LDA $80
 ADC #$50
 STA $80
 LDA $81
 ADC #$00
 STA $81
 SEC
 LDA $82
 SBC #$50
 STA $82
 LDA $83
 SBC #$00
 STA $83
 CMP #$2D
 BNE DTB4
 LDA $82
 CMP #$30
 BNE DTB4
 LDX #$00
 DTB5:
 LDA Bmp16Head,X
 STA $208A,X
 INX
 CPX #$76
 BNE DTB5
 RTS
 ;16灰度bmp文件头
 ;数据个数:76H
 Bmp16Head:
 .DB 66,77,118,25,0,0,0,0,0,0,118,0,0,0,40,0,0,0,160,0,0,0,80,0,0,0,1,0,4,0,0,0,0,0,0,25,0,0,100,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,0,34,34,34,0,51,51,51,0,68,68,68,0,85,85,85,0,102,102,102,0,119,119,119,0,136,136,136,0,153,153,153,0,170,170,170,0,187,187,187,0,204,204,204,0,221,221,221,0,238,238,238,0,255,255,255,0
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;$03c9 =$00:用背景色画
 ;$03c9 =$01:用前景色画
 ;$03c9 =$02:反显
 ;$03d0,$03d1:背景色,前景色
 Graph_x1=$03c3
 Graph_y1=$03c4
 Graph_x2=$03c5
 Graph_y2=$03c6
 
 Graph_x=$03c7
 Graph_y=$03c8
 GraphType=$03c9
 BgColor=$03d0
 FgColor=$03d1
 ;画填充方块
 GrayBox:
 LDX Graph_y1
 DEX
 box1:
 STX Graph_y
 TXA
 PHA
 JSR LineX
 PLA
 TAX
 INX
 CPX Graph_y2
 BNE box1
 RTS
 ;画横线
 LineX:
 LDA Graph_x1
 CMP #$A1
 BCC line1
 LDA #$A0
 STA Graph_x1
 line1:
 LDA Graph_x2
 CMP #$A1
 BCC line2
 LDA #$A0
 STA Graph_x2
 line2:
 LDA Graph_y
 CMP #$51
 BCC line3
 LDA #$50
 STA Graph_y
 line3
 LDA Graph_x2
 CMP Graph_x1
 BCS line4
 RTS
 line4:
 LDA Graph_x1
 BNE line18
 INC Graph_x1
 line18:
 LDA #$80
 STA $80
 LDA #$13
 STA $81
 LDX #$28
 line5:
 CLC
 LDA Graph_y
 ADC $80
 STA $80
 LDA $81
 ADC #$00
 STA $81
 DEX
 BNE line5
 LDA Graph_x1
 LSR
 LSR
 CLC
 ADC $80
 STA $80
 
 LDA $81
 ADC #$00
 STA $81
 LDA Graph_x1
 AND #$03
 TAX
 JSR geta
 STA $82
 CPX #$00
 BEQ line9
 line6:
 LSR
 LSR
 DEX
 BNE line6
 LDY #$00
 JSR line11
 INC $80
 BNE line9
 INC $81
 line9:
 LDA Graph_x2
 SEC
 SBC Graph_x1
 LSR
 LSR
 TAY
 TAX
 CMP #$00
 BNE line14
 LDA Graph_x2
 AND #$03
 CMP #$00
 BNE line15
 JMP line13
 line15:
 RTS
 line14:
 CMP #$01
 BNE line16
 LDA Graph_x2
 AND #$03
 BEQ line7
 JMP line13
 line16:
 LDA Graph_x2
 AND #$03
 BEQ line7
 DEY
 line7:
 DEY
 LDA $82
 JSR line11
 CPY #$00
 BNE line7
 line13:
 LDA Graph_x2
 AND #$03
 TAY
 LDA $82
 CPY #$03
 BEQ line17
 
 CPY #$00
 BNE line8
 INX
 line8:
 ASL
 ASL
 INY
 CPY #$03
 BNE line8
 
 line17:
 PHA
 TXA
 TAY
 DEY
 PLA
 JSR line11
 RTS
 line11:
 PHA
 
 LDA GraphType
 CMP #$02
 BEQ line12
 PLA
 STA ($80),Y
 RTS
 line12:
 PLA
 EOR ($80),Y
 STA ($80),Y
 RTS
 geta:
 LDY GraphType
 BEQ Bg
 LDY FgColor
 JSR geta1
 RTS
 Bg:
 LDY BgColor
 JSR geta1
 RTS
 geta1:
 LDA #$00
 CLC
 CPY #$00
 BEQ geta2
 DEY
 BEQ geta3
 DEY
 BEQ geta4
 ADC #$55
 geta4:
 ADC #$55
 geta3:
 ADC #$55
 geta2:
 TAY
 DEY
 TYA
 RTS
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;$03c3~$03c6:x1,y1,x2,y2
 ;$92,$93:图片地址
 Graph_x1=$03c3
 Graph_y1=$03c4
 Graph_x2=$03c5
 Graph_y2=$03c6
 
 
 GrayGraph:
 LDA Graph_x1
 CMP #$A1
 BCC x1
 LDA #$A0
 STA Graph_x1
 x1:
 LSR
 LSR
 STA $80
 LDA Graph_x2
 CMP #$A1
 BCC x2
 LDA #$A0
 STA Graph_x2
 x2:
 LSR
 LSR
 STA $81
 SEC
 SBC $80
 STA $81
 LDA #$80
 STA $82
 LDA #$13
 STA $83
 CLC
 LDA $80
 ADC $82
 STA $82
 LDA $83
 ADC #$00
 STA $83
 LDX Graph_y1
 BNE draw3
 INX
 draw3:
 CLC
 LDA $82
 ADC #$28
 STA $82
 LDA $83
 ADC #$00
 STA $83
 DEX
 BNE draw3
 SEC
 LDA Graph_y2
 SBC Graph_y1
 TAX
 draw2:
 LDY #$00
 draw1:
 LDA ($92),Y
 STA ($82),Y
 INY
 CPY $81
 BNE draw1
 DEX
 BEQ drawend
 CLC
 LDA $82
 ADC #$28
 STA $82
 LDA $83
 ADC #$00
 STA $83
 TYA
 CLC
 ADC $92
 STA $92
 LDA #$00
 ADC $93
 STA $93
 JMP draw2
 drawend:
 RTS
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;若四灰下使用INT $C006,按热键后没恢复为二色
 ;四灰度下用JSR Inkey代替INT $C006
 Inkey:
 LDA $C7
 BMI inkey1
 LDA #$00
 STA $03F6
 CLC
 BCC Inkey
 inkey1:
 LDA $C7
 CMP #$A1
 BEQ inkey2
 CMP #$98
 BEQ inkey2
 CMP #$80
 BCC inkey3
 CMP #$8D
 BCS inkey3
 inkey2:
 LDA $C7
 PHA
 JSR Regain
 PLA
 STA $C7
 inkey3:
 INT $C006
 RTS
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;将显存$19C0的内容发送到$1380
 ;$03d0:背景色0~3,$03d1:前景色0~3
 ;若背景色大于3,则背景色为0
 ;若前景色大于3,则前景色为3
 ToGrayBuffer:
 LDA $03D0
 CMP #$04
 BCC qjs
 LDA #$00
 STA $03D0
 qjs:
 LDA $03D1
 CMP #$04
 BCC send
 LDA #$03
 STA $03D1
 send:
 LDA #$C0
 STA $80
 LDA #$19
 STA $81
 LDA #$80
 STA $82
 LDA #$13
 STA $83
 LDY #$00
 LDA $03D0
 ASL
 ASL
 ASL
 ASL
 ASL
 ASL
 STA $84
 LDA $03D1
 ASL
 ASL
 ASL
 ASL
 ASL
 ASL
 STA $85
 LDA #$00
 STA $86
 STA $87
 send7:
 LDX #$08
 LDA ($80),Y
 STA $88
 send1:
 ASL $88
 BCC send2
 LDA $85
 ASL
 ROL $87
 ROL $86
 ASL
 ROL $87
 ROL $86
 CLC
 BCC send3
 send2:
 LDA $84
 ASL
 ROL $87
 ROL $86
 ASL
 ROL $87
 ROL $86
 send3:
 DEX
 BNE send1
 LDA $86
 STA ($82),Y
 INC $82
 BNE send4
 INC $83
 send4:
 LDA $87
 STA ($82),Y
 INC $82
 BNE send5
 INC $83
 send5:
 INC $80
 BNE send6
 INC $81
 send6:
 LDA $81
 CMP #$20
 BNE send8
 RTS
 send8:
 JMP send7
 | 
 |