From 85f890a30e6836c83981b4bd7e78632c12b0a887 Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Sun, 29 Oct 2017 20:27:05 -0700 Subject: [PATCH] Version 31 --- README.md | 4 ++ bin/dhgr.byte | Bin 1772 -> 1858 bytes hgrbyte.dsk | Bin 143360 -> 143360 bytes src/dhgr.byte.s | 145 ++++++++++++++++++++++++++++++++++-------------- 4 files changed, 107 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 15fde52..16dd3e5 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,10 @@ 5. `BLOAD TUT.DHGR` 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. - Added beep for illegal keys - Added sprite info diff --git a/bin/dhgr.byte b/bin/dhgr.byte index edce408e7baf626ed713da04ab9c2e10b481c0d2..739454657bef07f0f0450ab622c1263207712ec5 100644 GIT binary patch delta 1202 zcmYjQZA=?w9B)etT)EzVF0h@`nJ4jubc=DHwC*Ly_65jo!HF?O(Z*z^fdRvpPkd;X zw2dLXrn8CShw0_ABRma<-J<)j3{s{hfOffP$Ts6jL0(!5aZx&N)ZZVAowDUue%Sf^HWTN9VhrnF+aHB=O1Z%HpWr5~Kqic@N7kj5`HA3t_j zAT2^@H}r^{=3_PFC7zrSbW3W_L(;@2-&POJ9Vy)31mhv)+9t(4ZQ3sB5>$(q2Bh?* zFW>QB0AuI&AQ)SU7#W1kUeJ5NZIye$a7_$AE;{7U&x1q-eE{SkhgOm<3$&4R!D#u) zQn*BI@&Hf*khHaz6S-&>Mm!q}m27M#vIqe~^(vO|R`7vW&w^_a z%=dH@&x5`QaskMT4XR}_1H{JXvUX!j&jUFuOk`m^10$qW!1~Ob;osWK!|ej-1u!zB z53X!Qmmu;xM3*750v>$@@?Lob^kv9f$j>~z$C9OL zLOvC=W(>7*hj{Kef`f2_b$2mBD6aD^Tv@5;wwe3%45)XNt7MADV^Qx_qClPcu>xe; zMegv@aaX7`jPMbBs#GOEV^wh6XcNvD{hE=LJF4;+Bx}{{3dHQ{jS30n$(x{lQHix3 z!c}bS{NIM%Y}8kojcd%t8nbatn&Q=q3P{r~x{rx8GLo+EXg$~s9`e|C z)EhhzY6+k6kZw?337-hI1W$>iJAT#i^ppQq!mI)amid(YZc2VNMSOA7F&6*4_6gh3 KWASflJ%0nrlK+kX delta 1116 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 M#A&)XGfaQ?4=&u~fB*mh diff --git a/src/dhgr.byte.s b/src/dhgr.byte.s index 68607cd..21554da 100644 --- a/src/dhgr.byte.s +++ b/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 ; Michael Pohoreski ; https://github.com/Michaelangel007/apple2_hgrbyte/ -; Version 30 +; Version 31 ; ; TL:DR; ; IJKL to move @@ -189,7 +189,7 @@ __MAIN = $900 ORG __MAIN 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 CLC BCC _Center @@ -537,10 +537,10 @@ GotoInputCancel ; ------------------------------------------------------------------------ OnResetRegion JSR ZeroRegion - STA tSprite1 + SPRITE_X - STA tSprite1 + SPRITE_Y - STA tSprite2 + SPRITE_X - STA tSprite2 + SPRITE_Y + STA gSprite1X + STA gSprite1Y + STA gSprite2X + STA gSprite2Y LDA flags AND #$FF - {FLAG_REGION_1 + FLAG_REGION_2 + FLAG_REG_EVEN} @@ -551,8 +551,8 @@ RegionTrampoline1 ZeroRegion LDA #0 SetSprite1WH - STA tSprite1 + SPRITE_W - STA tSprite1 + SPRITE_H + STA gSprite1W + STA gSprite1H RTS ; --------- @@ -579,8 +579,8 @@ NoRegion1 STA flags LDX cursor_col LDY cursor_row - STX tSprite1 + SPRITE_X - STY tSprite1 + SPRITE_Y + STX gSprite1X + STY gSprite1Y DoneSprite JMP Status @@ -590,40 +590,44 @@ NoRegion2 STA flags LDX cursor_col LDY cursor_row - STX tSprite2 + SPRITE_X - STY tSprite2 + SPRITE_Y + STX gSprite2X + STY gSprite2Y CalcWidth TXA SEC - SBC tSprite1 + SPRITE_X + SBC gSprite1X BCS SaveWidth EOR #$FF SaveWidth TAX INX - STX tSprite1 + SPRITE_W + STX gSprite1W CalcHeight TYA SEC - SBC tSprite1 + SPRITE_Y + SBC gSprite1Y BCS SaveHeight EOR #$FF SaveHeight TAY INY - STY tSprite1 + SPRITE_H + STY gSprite1H BRA DoneSprite +SetSpriteBase + LDX #>SPRITE_BASE + LDY #SPRITE_BASE - LDY # 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 --- PutSpriteData @@ -794,11 +846,11 @@ DrawStatus AND #FLAG_REGION_1 BEQ PrintNoRegion1 - LDA tSprite1 + SPRITE_X + LDA gSprite1X LDX #'X'+$80 LDY #'1'+$80 JSR PrintSpriteMeta - LDA tSprite1 + SPRITE_Y + LDA gSprite1Y LDX #'Y'+$80 LDY #'1'+$80 JSR PrintSpriteMeta @@ -882,11 +934,11 @@ HaveMemType AND #FLAG_REGION_2 BEQ PrintNoRegion2 - LDA tSprite2 + SPRITE_X + LDA gSprite2X LDX #'X'+$80 LDY #'2'+$80 JSR PrintSpriteMeta - LDA tSprite2 + SPRITE_Y + LDA gSprite2Y LDX #'Y'+$80 LDY #'2'+$80 JMP PrintSpriteMeta @@ -909,11 +961,11 @@ PrintStatusLine3 LDY #>sTextFooter3 JSR PrintStringZ - LDA tSprite1 + SPRITE_W + LDA gSprite1W LDX #' '+$80 LDY #'W'+$80 JSR PrintSpriteMeta - LDA tSprite1 + SPRITE_H + LDA gSprite1H LDX #' '+$80 LDY #'H'+$80 JSR PrintSpriteMeta @@ -1145,6 +1197,9 @@ SetCursorByte TAX ; push byte LDA cursor_col +; X = Byte +; A = Col +PutCursorByteX CLC ROR TAY @@ -1157,6 +1212,9 @@ SetCursorByte _set_main ELSE LDY cursor_col +; A = Byte +; Y = Column +PutCursorByteX FIN STA (GBASL),Y ; Write to AUX or MAIN STA SW_AUXWROFF ; Write MAIN @@ -1462,20 +1520,23 @@ sPixelFooter ; === Sprite/Region === ; X,Y ; W,H -tSprite1 gSprite1X DB 0 gSprite1Y DB 0 gSprite1W DB 0 gSprite1H DB 0 + gSprite1End DW 0 gSprite1Len DW 0 -tSprite2 - DB 0, 0 - DB 0, 0 +gSprite2X DB 0 ; W = 2X - 1X + 1 +gSprite2Y DB 0 ; H = 2Y - 1Y + 1 + +gSpriteX DB 0 ; temp - for copying gSpriteY DB 0 -gSpriteW DB 0 ; temp - for copy -gSpriteH DB 0 ; temp - for copy +gSpriteW DB 0 ; temp - for copying +gSpriteH DB 0 ; temp - for copying +gSpriteX2 DB 0 +gSpriteY2 DB 0 ; ------------------------------------------------------------------------ ; Keys are searched in reverse order @@ -1513,8 +1574,8 @@ aKeys ASC '&' ; _Bit6 Toggle bit 6 ASC '*' ; _Bit7 Toggle bit 7 - ASC ';' ; _SaveSprite - DB "'" & $3F ; _LoadSprite + ASC ':' ; _SaveSprite : + ASC ';' ; _LoadSprite ; ASC 'M' ; _ResetRegion ASC ' ' ; _MarkRegion Changed from Toggle high bit of byte (bit 7) is useless in DHGR mode