mirror of
https://github.com/Michaelangel007/apple2_hgrbyte.git
synced 2024-12-26 16:30:04 +00:00
Ver. 32 fix cursor location after sprite copy
This commit is contained in:
parent
335fbc1a68
commit
ba6b7d0d05
@ -4,6 +4,7 @@
|
||||
![dhgr byte inspector screenshot](screenshots/dhgrbyte.png?raw=true)
|
||||
![view screenshot](screenshots/viewdhgr.png?raw=true)
|
||||
|
||||
|
||||
# Instructions
|
||||
|
||||
1. Start AppleWin
|
||||
@ -11,7 +12,13 @@
|
||||
3. Open: `hgrbyte.dsk`
|
||||
4. Select BASIC.SYSTEM
|
||||
5. `BLOAD TUT.DHGR`
|
||||
6. `BRUN DHGR.BYTE`
|
||||
6. `-DHGR.BYTE`
|
||||
|
||||
|
||||
# History
|
||||
|
||||
Ver 32.
|
||||
- Fixed bug: Restore cursor position after when using sprite copy
|
||||
|
||||
Ver 31.
|
||||
- Added `:` to save a sprite to mem
|
||||
|
BIN
bin/dhgr.byte
BIN
bin/dhgr.byte
Binary file not shown.
212
dhgr.symbols
Normal file
212
dhgr.symbols
Normal file
@ -0,0 +1,212 @@
|
||||
sym CONFIG_DHGR = 0001 // # 6
|
||||
sym CH = 0024 // # 83
|
||||
sym CV = 0025 // # 84
|
||||
sym CH80 = 057B // # 85
|
||||
sym BASL = 0028 // # 86
|
||||
sym GBASL = 0026 // # 88
|
||||
sym GBASH = 0027 // # 89
|
||||
sym SCREEN_W = 0080 // # 93
|
||||
sym SCREEN_H = 0192 // # 96
|
||||
sym HPOSN = F411 // # 99
|
||||
sym TABV = FB5B // # 100
|
||||
sym HOME = FC58 // # 102
|
||||
sym SETTXT = FB39 // # 103
|
||||
sym SW_STORE80 = C000 // # 118
|
||||
sym SW_STORE81 = C001 // # 119
|
||||
sym SW_SET40COL = C00C // # 121
|
||||
sym SW_SET80COL = C00D // # 122
|
||||
sym SW_AUXRDOFF = C002 // # 124
|
||||
sym SW_AUXWROFF = C004 // # 125
|
||||
sym SW_ALTCHAR0 = C00E // # 127
|
||||
sym KEYBOARD = C000 // # 129
|
||||
sym KEYSTROBE = C010 // # 130
|
||||
sym SW_TXTCLR = C050 // # 132
|
||||
sym SW_TXTSET = C051 // # 133
|
||||
sym MIXCLR = C052 // # 134
|
||||
sym MIXSET = C053 // # 135
|
||||
sym PAGE1 = C054 // # 136
|
||||
sym HIRES = C057 // # 137
|
||||
sym SW_DHGR = C05E // # 138
|
||||
sym SW_SHGR = C05F // # 139
|
||||
sym SQUEEKER = C030 // # 141
|
||||
sym F8_Wait = FCA8 // # 142
|
||||
sym cursor_row = 00E2 // # 144
|
||||
sym SPRITE_BASE = 6000 // # 146
|
||||
sym zSpritePtr = 00F4 // # 147
|
||||
sym tempByte = 00F6 // # 148
|
||||
sym aux_ptr = 00F7 // # 149
|
||||
sym lastkey = 00F9 // # 150
|
||||
sym cursor_org = 00FA // # 151
|
||||
sym cursor_tmp = 00FB // # 152
|
||||
sym cursor_val = 00FC // # 153
|
||||
sym INPUT_X = 0002 // # 157
|
||||
sym INPUT_Y = 0007 // # 158
|
||||
sym SPRITE_Y = 0001 // # 162
|
||||
sym SPRITE_W = 0002 // # 163
|
||||
sym SPRITE_H = 0003 // # 164
|
||||
sym FLAG_FULL = 0001 // # 166
|
||||
sym FLAG_REGION_1 = 0002 // # 168
|
||||
sym FLAG_REGION_2 = 0004 // # 169
|
||||
sym FLAG_REG_EVEN = 0008 // # 170
|
||||
sym flags = 00FD // # 171
|
||||
sym temp = 00FE // # 173
|
||||
sym cursor_col = 00FF // # 174
|
||||
sym HGRPAGE = 00E6 // # 175
|
||||
sym MOV_SRC = 003C // # 178
|
||||
sym MOV_END = 003E // # 179
|
||||
sym MOV_DST = 0042 // # 180
|
||||
sym AUXMOVE = C311 // # 181
|
||||
sym MOVE = FE2C // # 182
|
||||
sym DhgrByte = 0900 // # 190
|
||||
sym GetByte = 0960 // # 247
|
||||
sym PutByte = 0968 // # 251
|
||||
sym Status = 096C // # 255
|
||||
sym BadInput = 0971 // # 258
|
||||
sym FlashByte = 0974 // # 260
|
||||
sym GetKey = 0977 // # 262
|
||||
sym LoadKeys = 0981 // # 267
|
||||
sym FindKey = 0983 // # 269
|
||||
sym GotKey = 098B // # 274
|
||||
sym TogBit = 09CA // # 337
|
||||
sym PutBits = 09D0 // # 343
|
||||
sym GotoPutByte = 09D4 // # 345
|
||||
sym ozunid_1 = 09D8 // # 358
|
||||
sym Nibble = 09DD // # 364
|
||||
sym NibbleInput = 09E7 // # 373
|
||||
sym Digit = 09F5 // # 384
|
||||
sym OldCursor = 09FA // # 388
|
||||
sym FLASH_TIME = 0018 // # 393
|
||||
sym UpdateInputCursor = 09FB // # 395
|
||||
sym NewCursor = 0A0A // # 402
|
||||
sym DisplayCursor = 0A17 // # 408
|
||||
sym DisplayInput = 0A24 // # 414
|
||||
sym OnGoto = 0A2F // # 423
|
||||
sym UpdateX = 0A47 // # 439
|
||||
sym ResetTimer = 0A4A // # 441
|
||||
sym GotoWaitKey = 0A52 // # 446
|
||||
sym GotoBadInput = 0A6E // # 464
|
||||
sym GotoInputNib = 0A74 // # 469
|
||||
sym GotoInputNextField = 0A89 // # 494
|
||||
sym GotoFieldY = 0A94 // # 502
|
||||
sym GotoInputAccept = 0AAB // # 515
|
||||
sym GotoInputCancel = 0AC3 // # 534
|
||||
sym OnResetRegion = 0AC5 // # 538
|
||||
sym RegionTrampoline1 = 0ADA // # 548
|
||||
sym ZeroRegion = 0ADC // # 551
|
||||
sym SetSprite1WH = 0ADE // # 553
|
||||
sym OnMarkRegion = 0AE5 // # 559
|
||||
sym NoRegion1 = 0AF7 // # 576
|
||||
sym DoneSprite = 0B06 // # 584
|
||||
sym NoRegion2 = 0B09 // # 587
|
||||
sym CalcWidth = 0B18 // # 596
|
||||
sym SaveWidth = 0B21 // # 602
|
||||
sym CalcHeight = 0B26 // # 607
|
||||
sym SaveHeight = 0B2F // # 613
|
||||
sym SetSpriteBase = 0B36 // # 619
|
||||
sym OnSaveSprite = 0B3F // # 627
|
||||
sym ValidDimensions = 0B47 // # 631
|
||||
sym CopySpriteMeta = 0B58 // # 642
|
||||
sym SaveRows = 0B63 // # 649
|
||||
sym SaveCols = 0B6F // # 656
|
||||
sym InvalidSprite = 0BA9 // # 691
|
||||
sym OnLoadSprite = 0BAC // # 698
|
||||
sym LoadRows = 0BD6 // # 721
|
||||
sym LoadCols = 0BE1 // # 728
|
||||
sym PutSpriteData = 0C08 // # 749
|
||||
sym GetSpriteData = 0C0E // # 754
|
||||
sym IncSpriteData = 0C13 // # 758
|
||||
sym SamePage = 0C19 // # 762
|
||||
sym IsHexInput = 0C1B // # 770
|
||||
sym NotHex = 0C3A // # 787
|
||||
sym HaveHex = 0C3B // # 789
|
||||
sym SoftBeep = 0C3D // # 794
|
||||
sym SoftCycle = 0C3F // # 796
|
||||
sym DrawStatus = 0C53 // # 811
|
||||
sym PrintNoRegion1 = 0CB7 // # 863
|
||||
sym DoneStatusLine1 = 0CBE // # 868
|
||||
sym PrintSpriteMeta = 0CC4 // # 878
|
||||
sym PrintSpace = 0CD8 // # 889
|
||||
sym PrintStatusLine2 = 0CDD // # 894
|
||||
sym HaveAuxMem = 0CF5 // # 909
|
||||
sym HaveMainMem = 0CFB // # 913
|
||||
sym HaveMemType = 0CFF // # 916
|
||||
sym PrintNoRegion2 = 0D3B // # 949
|
||||
sym DoneStatusLine3 = 0D42 // # 953
|
||||
sym PrintStatusLine3 = 0D42 // # 957
|
||||
sym PrintStatusLine4 = 0D67 // # 980
|
||||
sym PrintFooter2 = 0D7B // # 994
|
||||
sym PrintStringZ = 0DC7 // # 1043
|
||||
sym PrintString2 = 0DCF // # 1047
|
||||
sym PrintString3 = 0DDA // # 1053
|
||||
sym ReverseByte = 0DDB // # 1057
|
||||
sym ReverseBit = 0DE1 // # 1061
|
||||
sym PrintBitsNormal = 0DEC // # 1071
|
||||
sym PrintBitsReverse = 0DFB // # 1081
|
||||
sym PrintBitsReverse1 = 0DFF // # 1084
|
||||
sym PrintInverseByte = 0E0F // # 1096
|
||||
sym NibToInvTxt = 0E18 // # 1112
|
||||
sym PrintSave = 0E22 // # 1118
|
||||
sym Bit2Asc = 0E26 // # 1124
|
||||
sym FlipBit = 0E2C // # 1128
|
||||
sym GetHgrBaseAddr = 0E31 // # 1139
|
||||
sym GetCursorByte = 0E45 // # 1160
|
||||
sym GetCursorByteX = 0E47 // # 1169
|
||||
sym FlashCursorByte = 0E54 // # 1187
|
||||
sym SetCursorByte = 0E5A // # 1195
|
||||
sym PutCursorByteX = 0E5D // # 1205
|
||||
sym ClearText80 = 0E6E // # 1225
|
||||
sym ClearText40 = 0E77 // # 1229
|
||||
sym ClearTextPage = 0E7A // # 1232
|
||||
sym PrintDollar = 0E98 // # 1246
|
||||
sym PR_HEX = 0E9C // # 1249
|
||||
sym PRBYTE = 0EA3 // # 1254
|
||||
sym PR_NIB = 0EAC // # 1262
|
||||
sym COUT = 0EAF // # 1265
|
||||
sym Aux = 0EBA // # 1276
|
||||
sym Main = 0EBD // # 1278
|
||||
sym NibToAscTxt = 0EC8 // # 1294
|
||||
sym Init_Exit = 0ED3 // # 1305
|
||||
sym OnInit = 0EE7 // # 1331
|
||||
sym OnExit = 0F27 // # 1374
|
||||
sym DoneCopy = 0F49 // # 1396
|
||||
sym VTAB_COL0 = 0F5A // # 1418
|
||||
sym HTAB00 = 0F5D // # 1420
|
||||
sym HTAB = 0F5F // # 1422
|
||||
sym SetDst00 = 0F63 // # 1430
|
||||
sym DoneDst00 = 0F70 // # 1437
|
||||
sym gState = 0F71 // # 1443
|
||||
sym gCursor = 0F72 // # 1444
|
||||
sym gGotoNextX = 0F73 // # 1447
|
||||
sym gGotoNextY = 0F74 // # 1448
|
||||
sym gGotoField = 0F75 // # 1449
|
||||
sym gGotoTimer1 = 0F76 // # 1450
|
||||
sym gGotoTimer2 = 0F77 // # 1451
|
||||
sym gKeyGotoNextField = 0F78 // # 1453
|
||||
sym gKeyGotoCancel = 0F79 // # 1454
|
||||
sym gKeyGotoAccept = 0F7A // # 1455
|
||||
sym sTextSprite1 = 0F7B // # 1473
|
||||
sym sTextSprite2 = 0F87 // # 1476
|
||||
sym sTextSprite3 = 0F93 // # 1479
|
||||
sym sTextFooter2 = 0F9F // # 1483
|
||||
sym sTextFooter3 = 0FA5 // # 1487
|
||||
sym sMemTypeBeg = 0FBC // # 1498
|
||||
sym sMemTypeEnd = 0FC0 // # 1502
|
||||
sym sPixelFooter = 0FC4 // # 1519
|
||||
sym gSprite1X = 0FE4 // # 1533
|
||||
sym gSprite1Y = 0FE5 // # 1534
|
||||
sym gSprite1W = 0FE6 // # 1535
|
||||
sym gSprite1H = 0FE7 // # 1536
|
||||
sym gSprite1End = 0FE8 // # 1538
|
||||
sym gSprite1Len = 0FEA // # 1539
|
||||
sym gSprite2X = 0FEC // # 1541
|
||||
sym gSprite2Y = 0FED // # 1542
|
||||
sym gSpriteX = 0FEE // # 1544
|
||||
sym gSpriteY = 0FEF // # 1545
|
||||
sym gSpriteW = 0FF0 // # 1546
|
||||
sym gSpriteH = 0FF1 // # 1547
|
||||
sym gSpriteX2 = 0FF2 // # 1548
|
||||
sym gSpriteY2 = 0FF3 // # 1549
|
||||
sym aKeys = 0FF4 // # 1554
|
||||
sym eKeys = 101E // # 1607
|
||||
sym nKeys = 002E // # 1608
|
||||
sym aFuncLo = 101E // # 1612
|
BIN
hgrbyte.dsk
BIN
hgrbyte.dsk
Binary file not shown.
@ -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 31
|
||||
; Version 32
|
||||
;
|
||||
; TL:DR;
|
||||
; IJKL to move
|
||||
@ -189,7 +189,7 @@ __MAIN = $900
|
||||
ORG __MAIN
|
||||
|
||||
DhgrByte
|
||||
LDA #31 ; Version - copy HGR1 to aux, HGR2 to HGR1
|
||||
LDA #32 ; 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
|
||||
@ -716,6 +716,7 @@ OnLoadSprite
|
||||
|
||||
LDA cursor_row
|
||||
STA gSpriteY
|
||||
STA temp ; saved cursor_row since HPOSN updates it
|
||||
|
||||
LoadRows
|
||||
; Y -> Source Address
|
||||
@ -740,6 +741,8 @@ LoadCols
|
||||
LDA gSpriteH
|
||||
BNE LoadRows
|
||||
|
||||
LDA temp ; move cursor back up to the original location
|
||||
STA cursor_row ; before we were called
|
||||
JMP GetByte
|
||||
|
||||
; --- Sprite ---
|
||||
|
Loading…
Reference in New Issue
Block a user