Version 31
This commit is contained in:
parent
78b40062e7
commit
85f890a30e
|
@ -13,6 +13,10 @@
|
||||||
5. `BLOAD TUT.DHGR`
|
5. `BLOAD TUT.DHGR`
|
||||||
6. `BRUN DHGR.BYTE`
|
6. `BRUN DHGR.BYTE`
|
||||||
|
|
||||||
|
Ver 31.
|
||||||
|
- Added `:` to save a sprite to mem
|
||||||
|
- Added `;` to copy a sprite from to the DHGR screen
|
||||||
|
|
||||||
Ver 30.
|
Ver 30.
|
||||||
- Added beep for illegal keys
|
- Added beep for illegal keys
|
||||||
- Added sprite info
|
- Added sprite info
|
||||||
|
|
BIN
bin/dhgr.byte
BIN
bin/dhgr.byte
Binary file not shown.
BIN
hgrbyte.dsk
BIN
hgrbyte.dsk
Binary file not shown.
145
src/dhgr.byte.s
145
src/dhgr.byte.s
|
@ -6,7 +6,7 @@ CONFIG_BIOS = 0 ; 1=Use slow ROM for text, 0=Use native code for COUT, HOME
|
||||||
; DHGR Byte Inspector
|
; DHGR Byte Inspector
|
||||||
; Michael Pohoreski
|
; Michael Pohoreski
|
||||||
; https://github.com/Michaelangel007/apple2_hgrbyte/
|
; https://github.com/Michaelangel007/apple2_hgrbyte/
|
||||||
; Version 30
|
; Version 31
|
||||||
;
|
;
|
||||||
; TL:DR;
|
; TL:DR;
|
||||||
; IJKL to move
|
; IJKL to move
|
||||||
|
@ -189,7 +189,7 @@ __MAIN = $900
|
||||||
ORG __MAIN
|
ORG __MAIN
|
||||||
|
|
||||||
DhgrByte
|
DhgrByte
|
||||||
LDA #30 ; Version - copy HGR1 to aux, HGR2 to HGR1
|
LDA #31 ; Version - copy HGR1 to aux, HGR2 to HGR1
|
||||||
JSR Init_Exit ; FEATURE: Set to 00 if you don't want to copy AUX $2000 to MAIN $4000
|
JSR Init_Exit ; FEATURE: Set to 00 if you don't want to copy AUX $2000 to MAIN $4000
|
||||||
CLC
|
CLC
|
||||||
BCC _Center
|
BCC _Center
|
||||||
|
@ -537,10 +537,10 @@ GotoInputCancel
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
OnResetRegion
|
OnResetRegion
|
||||||
JSR ZeroRegion
|
JSR ZeroRegion
|
||||||
STA tSprite1 + SPRITE_X
|
STA gSprite1X
|
||||||
STA tSprite1 + SPRITE_Y
|
STA gSprite1Y
|
||||||
STA tSprite2 + SPRITE_X
|
STA gSprite2X
|
||||||
STA tSprite2 + SPRITE_Y
|
STA gSprite2Y
|
||||||
|
|
||||||
LDA flags
|
LDA flags
|
||||||
AND #$FF - {FLAG_REGION_1 + FLAG_REGION_2 + FLAG_REG_EVEN}
|
AND #$FF - {FLAG_REGION_1 + FLAG_REGION_2 + FLAG_REG_EVEN}
|
||||||
|
@ -551,8 +551,8 @@ RegionTrampoline1
|
||||||
ZeroRegion
|
ZeroRegion
|
||||||
LDA #0
|
LDA #0
|
||||||
SetSprite1WH
|
SetSprite1WH
|
||||||
STA tSprite1 + SPRITE_W
|
STA gSprite1W
|
||||||
STA tSprite1 + SPRITE_H
|
STA gSprite1H
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
; ---------
|
; ---------
|
||||||
|
@ -579,8 +579,8 @@ NoRegion1
|
||||||
STA flags
|
STA flags
|
||||||
LDX cursor_col
|
LDX cursor_col
|
||||||
LDY cursor_row
|
LDY cursor_row
|
||||||
STX tSprite1 + SPRITE_X
|
STX gSprite1X
|
||||||
STY tSprite1 + SPRITE_Y
|
STY gSprite1Y
|
||||||
DoneSprite
|
DoneSprite
|
||||||
JMP Status
|
JMP Status
|
||||||
|
|
||||||
|
@ -590,40 +590,44 @@ NoRegion2
|
||||||
STA flags
|
STA flags
|
||||||
LDX cursor_col
|
LDX cursor_col
|
||||||
LDY cursor_row
|
LDY cursor_row
|
||||||
STX tSprite2 + SPRITE_X
|
STX gSprite2X
|
||||||
STY tSprite2 + SPRITE_Y
|
STY gSprite2Y
|
||||||
|
|
||||||
CalcWidth
|
CalcWidth
|
||||||
TXA
|
TXA
|
||||||
SEC
|
SEC
|
||||||
SBC tSprite1 + SPRITE_X
|
SBC gSprite1X
|
||||||
BCS SaveWidth
|
BCS SaveWidth
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
SaveWidth
|
SaveWidth
|
||||||
TAX
|
TAX
|
||||||
INX
|
INX
|
||||||
STX tSprite1 + SPRITE_W
|
STX gSprite1W
|
||||||
|
|
||||||
CalcHeight
|
CalcHeight
|
||||||
TYA
|
TYA
|
||||||
SEC
|
SEC
|
||||||
SBC tSprite1 + SPRITE_Y
|
SBC gSprite1Y
|
||||||
BCS SaveHeight
|
BCS SaveHeight
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
SaveHeight
|
SaveHeight
|
||||||
TAY
|
TAY
|
||||||
INY
|
INY
|
||||||
STY tSprite1 + SPRITE_H
|
STY gSprite1H
|
||||||
BRA DoneSprite
|
BRA DoneSprite
|
||||||
|
|
||||||
|
SetSpriteBase
|
||||||
|
LDX #>SPRITE_BASE
|
||||||
|
LDY #<SPRITE_BASE
|
||||||
|
STX zSpritePtr+1
|
||||||
|
STY zSpritePtr+0
|
||||||
|
RTS
|
||||||
|
|
||||||
; --- Save Sprite ---
|
; --- Save Sprite ---
|
||||||
OnSaveSprite
|
OnSaveSprite
|
||||||
LDA tSprite1 + SPRITE_W
|
LDA gSprite1W
|
||||||
ORA tSprite1 + SPRITE_H
|
ORA gSprite1H
|
||||||
BNE ValidDimensions
|
BEQ InvalidSprite ; v- Below
|
||||||
JSR SoftBeep
|
|
||||||
BRA DoneSprite
|
|
||||||
ValidDimensions
|
ValidDimensions
|
||||||
|
|
||||||
; Copy from interleaved memory to linear format
|
; Copy from interleaved memory to linear format
|
||||||
|
@ -632,17 +636,14 @@ ValidDimensions
|
||||||
LDA gSprite1H
|
LDA gSprite1H
|
||||||
STA gSpriteH
|
STA gSpriteH
|
||||||
|
|
||||||
LDX #>SPRITE_BASE
|
JSR SetSpriteBase
|
||||||
LDY #<SPRITE_BASE
|
|
||||||
STX zSpritePtr+1
|
|
||||||
STY zSpritePtr+0
|
|
||||||
|
|
||||||
LDX #0
|
LDX #0
|
||||||
CopySpriteMeta
|
CopySpriteMeta
|
||||||
LDA tSprite1,X
|
LDA gSprite1X,X
|
||||||
JSR PutSpriteData
|
JSR PutSpriteData
|
||||||
INX
|
INX
|
||||||
CPX #tSprite2 - tSprite1
|
CPX #1 + gSprite1H - gSprite1X ; X,Y,W,H
|
||||||
BNE CopySpriteMeta
|
BNE CopySpriteMeta
|
||||||
|
|
||||||
SaveRows
|
SaveRows
|
||||||
|
@ -686,9 +687,60 @@ SaveCols
|
||||||
; Re-load the scanline addr
|
; Re-load the scanline addr
|
||||||
JMP GetByte
|
JMP GetByte
|
||||||
|
|
||||||
|
; ----------
|
||||||
|
InvalidSprite
|
||||||
|
JMP BadInput
|
||||||
|
; JSR SoftBeep
|
||||||
|
; BRA DoneSprite
|
||||||
|
; ----------
|
||||||
|
|
||||||
; --- Save Sprite ---
|
; --- Save Sprite ---
|
||||||
OnLoadSprite
|
OnLoadSprite
|
||||||
JMP DoneSprite
|
JSR SetSpriteBase
|
||||||
|
|
||||||
|
JSR GetSpriteData ; skip X
|
||||||
|
JSR GetSpriteData ; skip Y
|
||||||
|
|
||||||
|
JSR GetSpriteData ; get W
|
||||||
|
CMP #0
|
||||||
|
BEQ InvalidSprite
|
||||||
|
STA gSpriteW
|
||||||
|
CLC
|
||||||
|
ADC cursor_col
|
||||||
|
STA gSpriteX2 ; end col
|
||||||
|
|
||||||
|
JSR GetSpriteData ; get H
|
||||||
|
CMP #0
|
||||||
|
BEQ InvalidSprite
|
||||||
|
STA gSpriteH
|
||||||
|
|
||||||
|
LDA cursor_row
|
||||||
|
STA gSpriteY
|
||||||
|
|
||||||
|
LoadRows
|
||||||
|
; Y -> Source Address
|
||||||
|
LDA gSpriteY
|
||||||
|
JSR GetHgrBaseAddr
|
||||||
|
|
||||||
|
LDA cursor_col
|
||||||
|
STA gSpriteX
|
||||||
|
LoadCols
|
||||||
|
JSR GetSpriteData
|
||||||
|
TAX
|
||||||
|
LDA gSpriteX
|
||||||
|
JSR PutCursorByteX ; X=Byte, A=Col
|
||||||
|
|
||||||
|
INC gSpriteX
|
||||||
|
LDA gSpriteX
|
||||||
|
CMP gSpriteX2
|
||||||
|
BNE LoadCols
|
||||||
|
|
||||||
|
INC gSpriteY
|
||||||
|
DEC gSpriteH
|
||||||
|
LDA gSpriteH
|
||||||
|
BNE LoadRows
|
||||||
|
|
||||||
|
JMP GetByte
|
||||||
|
|
||||||
; --- Sprite ---
|
; --- Sprite ---
|
||||||
PutSpriteData
|
PutSpriteData
|
||||||
|
@ -794,11 +846,11 @@ DrawStatus
|
||||||
AND #FLAG_REGION_1
|
AND #FLAG_REGION_1
|
||||||
BEQ PrintNoRegion1
|
BEQ PrintNoRegion1
|
||||||
|
|
||||||
LDA tSprite1 + SPRITE_X
|
LDA gSprite1X
|
||||||
LDX #'X'+$80
|
LDX #'X'+$80
|
||||||
LDY #'1'+$80
|
LDY #'1'+$80
|
||||||
JSR PrintSpriteMeta
|
JSR PrintSpriteMeta
|
||||||
LDA tSprite1 + SPRITE_Y
|
LDA gSprite1Y
|
||||||
LDX #'Y'+$80
|
LDX #'Y'+$80
|
||||||
LDY #'1'+$80
|
LDY #'1'+$80
|
||||||
JSR PrintSpriteMeta
|
JSR PrintSpriteMeta
|
||||||
|
@ -882,11 +934,11 @@ HaveMemType
|
||||||
AND #FLAG_REGION_2
|
AND #FLAG_REGION_2
|
||||||
BEQ PrintNoRegion2
|
BEQ PrintNoRegion2
|
||||||
|
|
||||||
LDA tSprite2 + SPRITE_X
|
LDA gSprite2X
|
||||||
LDX #'X'+$80
|
LDX #'X'+$80
|
||||||
LDY #'2'+$80
|
LDY #'2'+$80
|
||||||
JSR PrintSpriteMeta
|
JSR PrintSpriteMeta
|
||||||
LDA tSprite2 + SPRITE_Y
|
LDA gSprite2Y
|
||||||
LDX #'Y'+$80
|
LDX #'Y'+$80
|
||||||
LDY #'2'+$80
|
LDY #'2'+$80
|
||||||
JMP PrintSpriteMeta
|
JMP PrintSpriteMeta
|
||||||
|
@ -909,11 +961,11 @@ PrintStatusLine3
|
||||||
LDY #>sTextFooter3
|
LDY #>sTextFooter3
|
||||||
JSR PrintStringZ
|
JSR PrintStringZ
|
||||||
|
|
||||||
LDA tSprite1 + SPRITE_W
|
LDA gSprite1W
|
||||||
LDX #' '+$80
|
LDX #' '+$80
|
||||||
LDY #'W'+$80
|
LDY #'W'+$80
|
||||||
JSR PrintSpriteMeta
|
JSR PrintSpriteMeta
|
||||||
LDA tSprite1 + SPRITE_H
|
LDA gSprite1H
|
||||||
LDX #' '+$80
|
LDX #' '+$80
|
||||||
LDY #'H'+$80
|
LDY #'H'+$80
|
||||||
JSR PrintSpriteMeta
|
JSR PrintSpriteMeta
|
||||||
|
@ -1145,6 +1197,9 @@ SetCursorByte
|
||||||
TAX ; push byte
|
TAX ; push byte
|
||||||
|
|
||||||
LDA cursor_col
|
LDA cursor_col
|
||||||
|
; X = Byte
|
||||||
|
; A = Col
|
||||||
|
PutCursorByteX
|
||||||
CLC
|
CLC
|
||||||
ROR
|
ROR
|
||||||
TAY
|
TAY
|
||||||
|
@ -1157,6 +1212,9 @@ SetCursorByte
|
||||||
_set_main
|
_set_main
|
||||||
ELSE
|
ELSE
|
||||||
LDY cursor_col
|
LDY cursor_col
|
||||||
|
; A = Byte
|
||||||
|
; Y = Column
|
||||||
|
PutCursorByteX
|
||||||
FIN
|
FIN
|
||||||
STA (GBASL),Y ; Write to AUX or MAIN
|
STA (GBASL),Y ; Write to AUX or MAIN
|
||||||
STA SW_AUXWROFF ; Write MAIN
|
STA SW_AUXWROFF ; Write MAIN
|
||||||
|
@ -1462,20 +1520,23 @@ sPixelFooter
|
||||||
; === Sprite/Region ===
|
; === Sprite/Region ===
|
||||||
; X,Y
|
; X,Y
|
||||||
; W,H
|
; W,H
|
||||||
tSprite1
|
|
||||||
gSprite1X DB 0
|
gSprite1X DB 0
|
||||||
gSprite1Y DB 0
|
gSprite1Y DB 0
|
||||||
gSprite1W DB 0
|
gSprite1W DB 0
|
||||||
gSprite1H DB 0
|
gSprite1H DB 0
|
||||||
|
|
||||||
gSprite1End DW 0
|
gSprite1End DW 0
|
||||||
gSprite1Len DW 0
|
gSprite1Len DW 0
|
||||||
|
|
||||||
tSprite2
|
gSprite2X DB 0 ; W = 2X - 1X + 1
|
||||||
DB 0, 0
|
gSprite2Y DB 0 ; H = 2Y - 1Y + 1
|
||||||
DB 0, 0
|
|
||||||
|
gSpriteX DB 0 ; temp - for copying
|
||||||
gSpriteY DB 0
|
gSpriteY DB 0
|
||||||
gSpriteW DB 0 ; temp - for copy
|
gSpriteW DB 0 ; temp - for copying
|
||||||
gSpriteH DB 0 ; temp - for copy
|
gSpriteH DB 0 ; temp - for copying
|
||||||
|
gSpriteX2 DB 0
|
||||||
|
gSpriteY2 DB 0
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Keys are searched in reverse order
|
; Keys are searched in reverse order
|
||||||
|
@ -1513,8 +1574,8 @@ aKeys
|
||||||
ASC '&' ; _Bit6 Toggle bit 6
|
ASC '&' ; _Bit6 Toggle bit 6
|
||||||
ASC '*' ; _Bit7 Toggle bit 7
|
ASC '*' ; _Bit7 Toggle bit 7
|
||||||
|
|
||||||
ASC ';' ; _SaveSprite
|
ASC ':' ; _SaveSprite :
|
||||||
DB "'" & $3F ; _LoadSprite
|
ASC ';' ; _LoadSprite ;
|
||||||
|
|
||||||
ASC 'M' ; _ResetRegion
|
ASC 'M' ; _ResetRegion
|
||||||
ASC ' ' ; _MarkRegion Changed from Toggle high bit of byte (bit 7) is useless in DHGR mode
|
ASC ' ' ; _MarkRegion Changed from Toggle high bit of byte (bit 7) is useless in DHGR mode
|
||||||
|
|
Loading…
Reference in New Issue