diff --git a/applecorn.po b/applecorn.po index e7e7f0c..be615f9 100644 Binary files a/applecorn.po and b/applecorn.po differ diff --git a/mainmem.shr.s b/mainmem.shr.s index 5e00024..22b9e08 100644 --- a/mainmem.shr.s +++ b/mainmem.shr.s @@ -74,7 +74,7 @@ SHRUSERCHAR >>> ENTMAIN STA A3L ; .. start of table to write LDA #>SHRFONTXPLD STA A3H - LDA #$E1 + LDA #$E1 ; Bank $E1 STA A4L LDA SHRVDUQ+0 ; Character number @@ -217,14 +217,33 @@ SHRCHAR640 PHY ; Preserve Y * SHRPLOT >>> ENTMAIN JSR SHRCOORD ; Convert coordinates + LDX A2L ; Screen row (Y-coord) + LDA SHRROWSL,X ; Look up addr (LS byte) + STA A3L ; Stash in A3L + LDA SHRROWSH,X ; Look up addr (MS byte) + STA A3H ; Stash in A3H + LDA #$E1 ; Bank $E1 + STA A4L + + LDX A1L ; Store X-coord for later + LSR A1H ; Divide by 4 + ROR A1L + LSR A1H + ROR A1L + LDY A1L ; Index into row of pixels * ... +* TODO Handle the bits +* ... + + LDA #$FF ; TEMP + STA [A3L],Y ; Write to screen >>> XF2AUX,GFXPLOTRET RTS * Convert high-resolution screen coordinates * from 1280x1024 to 620x200 or 320x200 -* TODO: Totally untested ... +* On return: X-coordinate in A1L/H, Y-coordinate in A2L (A2H=0) SHRCOORD PHP ; Disable interrupts SEI CLC ; 65816 native mode @@ -240,11 +259,11 @@ SHRCOORD PHP ; Disable interrupts LDA SHRVDUQ+5 LSR ; /2 LSR ; /4 - STA A1L ; TODO: Store somewhere sensible + STA A1L ; Result in A1L/H BRA :Y :MODE0 LDA SHRVDUQ+5 LSR ; /2 - STA A1L ; TODO: Store somewhere sensible + STA A1L ; Resulr in A1L/H * Y-coordinate in SHRVDUQ+7,+8 1024*3/16=192, 1024/128=8, 192+8=200 :Y LDA SHRVDUQ+7 @@ -255,7 +274,7 @@ SHRCOORD PHP ; Disable interrupts LSR ; *3/4 LSR ; *3/8 LSR ; *3/16 - STA A1L ; (A1L and A1H) + STA A2L ; (A1L and A1H) LDA SHRVDUQ+7 LSR ; /2 LSR ; /4 @@ -265,8 +284,8 @@ SHRCOORD PHP ; Disable interrupts LSR ; /64 LSR ; /128 CLC - ADC A1L ; Result - STA A1L ; TODO: Store somewhere sensible + ADC A2L ; Result + STA A2L ; Into A2L/H SEC ; Back to emulation mode XCE @@ -275,406 +294,405 @@ SHRCOORD PHP ; Disable interrupts RTS -* Table of addresses of SHR rows -SHRROWSL DB <$2000 - DB <$20a0 - DB <$2140 - DB <$21e0 - DB <$2280 - DB <$2320 - DB <$23c0 - DB <$2460 - DB <$2500 - DB <$25a0 - DB <$2640 - DB <$26e0 - DB <$2780 - DB <$2820 - DB <$28c0 - DB <$2960 - DB <$2a00 - DB <$2aa0 - DB <$2b40 - DB <$2be0 - DB <$2c80 - DB <$2d20 - DB <$2dc0 - DB <$2e60 - DB <$2f00 - DB <$2fa0 - DB <$3040 - DB <$30e0 - DB <$3180 - DB <$3220 - DB <$32c0 - DB <$3360 - DB <$3400 - DB <$34a0 - DB <$3540 - DB <$35e0 - DB <$3680 - DB <$3720 - DB <$37c0 - DB <$3860 - DB <$3900 - DB <$39a0 - DB <$3a40 - DB <$3ae0 - DB <$3b80 - DB <$3c20 - DB <$3cc0 - DB <$3d60 - DB <$3e00 - DB <$3ea0 - DB <$3f40 - DB <$3fe0 - DB <$4080 - DB <$4120 - DB <$41c0 - DB <$4260 - DB <$4300 - DB <$43a0 - DB <$4440 - DB <$44e0 - DB <$4580 - DB <$4620 - DB <$46c0 - DB <$4760 - DB <$4800 - DB <$48a0 - DB <$4940 - DB <$49e0 - DB <$4a80 - DB <$4b20 - DB <$4bc0 - DB <$4c60 - DB <$4d00 - DB <$4da0 - DB <$4e40 - DB <$4ee0 - DB <$4f80 - DB <$5020 - DB <$50c0 - DB <$5160 - DB <$5200 - DB <$52a0 - DB <$5340 - DB <$53e0 - DB <$5480 - DB <$5520 - DB <$55c0 - DB <$5660 - DB <$5700 - DB <$57a0 - DB <$5840 - DB <$58e0 - DB <$5980 - DB <$5a20 - DB <$5ac0 - DB <$5b60 - DB <$5c00 - DB <$5ca0 - DB <$5d40 - DB <$5de0 - DB <$5e80 - DB <$5f20 - DB <$5fc0 - DB <$6060 - DB <$6100 - DB <$61a0 - DB <$6240 - DB <$62e0 - DB <$6380 - DB <$6420 - DB <$64c0 - DB <$6560 - DB <$6600 - DB <$66a0 - DB <$6740 - DB <$67e0 - DB <$6880 - DB <$6920 - DB <$69c0 - DB <$6a60 - DB <$6b00 - DB <$6ba0 - DB <$6c40 - DB <$6ce0 - DB <$6d80 - DB <$6e20 - DB <$6ec0 - DB <$6f60 - DB <$7000 - DB <$70a0 - DB <$7140 - DB <$71e0 - DB <$7280 - DB <$7320 - DB <$73c0 - DB <$7460 - DB <$7500 - DB <$75a0 - DB <$7640 - DB <$76e0 - DB <$7780 - DB <$7820 - DB <$78c0 - DB <$7960 - DB <$7a00 - DB <$7aa0 - DB <$7b40 - DB <$7be0 - DB <$7c80 - DB <$7d20 - DB <$7dc0 - DB <$7e60 - DB <$7f00 - DB <$7fa0 - DB <$8040 - DB <$80e0 - DB <$8180 - DB <$8220 - DB <$82c0 - DB <$8360 - DB <$8400 - DB <$84a0 - DB <$8540 - DB <$85e0 - DB <$8680 - DB <$8720 - DB <$87c0 - DB <$8860 - DB <$8900 - DB <$89a0 - DB <$8a40 - DB <$8ae0 - DB <$8b80 - DB <$8c20 - DB <$8cc0 - DB <$8d60 - DB <$8e00 - DB <$8ea0 - DB <$8f40 - DB <$8fe0 - DB <$9080 - DB <$9120 - DB <$91c0 - DB <$9260 - DB <$9300 - DB <$93a0 - DB <$9440 - DB <$94e0 - DB <$9580 - DB <$9620 - DB <$96c0 - DB <$9760 - DB <$9800 - DB <$98a0 - DB <$9940 - DB <$99e0 - DB <$9a80 - DB <$9b20 - DB <$9bc0 - DB <$9c60 +* Table of addresses of SHR rows (in reverse order) +SHRROWSL DB <$9c60 + DB <$9bc0 + DB <$9b20 + DB <$9a80 + DB <$99e0 + DB <$9940 + DB <$98a0 + DB <$9800 + DB <$9760 + DB <$96c0 + DB <$9620 + DB <$9580 + DB <$94e0 + DB <$9440 + DB <$93a0 + DB <$9300 + DB <$9260 + DB <$91c0 + DB <$9120 + DB <$9080 + DB <$8fe0 + DB <$8f40 + DB <$8ea0 + DB <$8e00 + DB <$8d60 + DB <$8cc0 + DB <$8c20 + DB <$8b80 + DB <$8ae0 + DB <$8a40 + DB <$89a0 + DB <$8900 + DB <$8860 + DB <$87c0 + DB <$8720 + DB <$8680 + DB <$85e0 + DB <$8540 + DB <$84a0 + DB <$8400 + DB <$8360 + DB <$82c0 + DB <$8220 + DB <$8180 + DB <$80e0 + DB <$8040 + DB <$7fa0 + DB <$7f00 + DB <$7e60 + DB <$7dc0 + DB <$7d20 + DB <$7c80 + DB <$7be0 + DB <$7b40 + DB <$7aa0 + DB <$7a00 + DB <$7960 + DB <$78c0 + DB <$7820 + DB <$7780 + DB <$76e0 + DB <$7640 + DB <$75a0 + DB <$7500 + DB <$7460 + DB <$73c0 + DB <$7320 + DB <$7280 + DB <$71e0 + DB <$7140 + DB <$70a0 + DB <$7000 + DB <$6f60 + DB <$6ec0 + DB <$6e20 + DB <$6d80 + DB <$6ce0 + DB <$6c40 + DB <$6ba0 + DB <$6b00 + DB <$6a60 + DB <$69c0 + DB <$6920 + DB <$6880 + DB <$67e0 + DB <$6740 + DB <$66a0 + DB <$6600 + DB <$6560 + DB <$64c0 + DB <$6420 + DB <$6380 + DB <$62e0 + DB <$6240 + DB <$61a0 + DB <$6100 + DB <$6060 + DB <$5fc0 + DB <$5f20 + DB <$5e80 + DB <$5de0 + DB <$5d40 + DB <$5ca0 + DB <$5c00 + DB <$5b60 + DB <$5ac0 + DB <$5a20 + DB <$5980 + DB <$58e0 + DB <$5840 + DB <$57a0 + DB <$5700 + DB <$5660 + DB <$55c0 + DB <$5520 + DB <$5480 + DB <$53e0 + DB <$5340 + DB <$52a0 + DB <$5200 + DB <$5160 + DB <$50c0 + DB <$5020 + DB <$4f80 + DB <$4ee0 + DB <$4e40 + DB <$4da0 + DB <$4d00 + DB <$4c60 + DB <$4bc0 + DB <$4b20 + DB <$4a80 + DB <$49e0 + DB <$4940 + DB <$48a0 + DB <$4800 + DB <$4760 + DB <$46c0 + DB <$4620 + DB <$4580 + DB <$44e0 + DB <$4440 + DB <$43a0 + DB <$4300 + DB <$4260 + DB <$41c0 + DB <$4120 + DB <$4080 + DB <$3fe0 + DB <$3f40 + DB <$3ea0 + DB <$3e00 + DB <$3d60 + DB <$3cc0 + DB <$3c20 + DB <$3b80 + DB <$3ae0 + DB <$3a40 + DB <$39a0 + DB <$3900 + DB <$3860 + DB <$37c0 + DB <$3720 + DB <$3680 + DB <$35e0 + DB <$3540 + DB <$34a0 + DB <$3400 + DB <$3360 + DB <$32c0 + DB <$3220 + DB <$3180 + DB <$30e0 + DB <$3040 + DB <$2fa0 + DB <$2f00 + DB <$2e60 + DB <$2dc0 + DB <$2d20 + DB <$2c80 + DB <$2be0 + DB <$2b40 + DB <$2aa0 + DB <$2a00 + DB <$2960 + DB <$28c0 + DB <$2820 + DB <$2780 + DB <$26e0 + DB <$2640 + DB <$25a0 + DB <$2500 + DB <$2460 + DB <$23c0 + DB <$2320 + DB <$2280 + DB <$21e0 + DB <$2140 + DB <$20a0 + DB <$2000 -SHRROWSH DB >$2000 - DB >$20a0 - DB >$2140 - DB >$21e0 - DB >$2280 - DB >$2320 - DB >$23c0 - DB >$2460 - DB >$2500 - DB >$25a0 - DB >$2640 - DB >$26e0 - DB >$2780 - DB >$2820 - DB >$28c0 - DB >$2960 - DB >$2a00 - DB >$2aa0 - DB >$2b40 - DB >$2be0 - DB >$2c80 - DB >$2d20 - DB >$2dc0 - DB >$2e60 - DB >$2f00 - DB >$2fa0 - DB >$3040 - DB >$30e0 - DB >$3180 - DB >$3220 - DB >$32c0 - DB >$3360 - DB >$3400 - DB >$34a0 - DB >$3540 - DB >$35e0 - DB >$3680 - DB >$3720 - DB >$37c0 - DB >$3860 - DB >$3900 - DB >$39a0 - DB >$3a40 - DB >$3ae0 - DB >$3b80 - DB >$3c20 - DB >$3cc0 - DB >$3d60 - DB >$3e00 - DB >$3ea0 - DB >$3f40 - DB >$3fe0 - DB >$4080 - DB >$4120 - DB >$41c0 - DB >$4260 - DB >$4300 - DB >$43a0 - DB >$4440 - DB >$44e0 - DB >$4580 - DB >$4620 - DB >$46c0 - DB >$4760 - DB >$4800 - DB >$48a0 - DB >$4940 - DB >$49e0 - DB >$4a80 - DB >$4b20 - DB >$4bc0 - DB >$4c60 - DB >$4d00 - DB >$4da0 - DB >$4e40 - DB >$4ee0 - DB >$4f80 - DB >$5020 - DB >$50c0 - DB >$5160 - DB >$5200 - DB >$52a0 - DB >$5340 - DB >$53e0 - DB >$5480 - DB >$5520 - DB >$55c0 - DB >$5660 - DB >$5700 - DB >$57a0 - DB >$5840 - DB >$58e0 - DB >$5980 - DB >$5a20 - DB >$5ac0 - DB >$5b60 - DB >$5c00 - DB >$5ca0 - DB >$5d40 - DB >$5de0 - DB >$5e80 - DB >$5f20 - DB >$5fc0 - DB >$6060 - DB >$6100 - DB >$61a0 - DB >$6240 - DB >$62e0 - DB >$6380 - DB >$6420 - DB >$64c0 - DB >$6560 - DB >$6600 - DB >$66a0 - DB >$6740 - DB >$67e0 - DB >$6880 - DB >$6920 - DB >$69c0 - DB >$6a60 - DB >$6b00 - DB >$6ba0 - DB >$6c40 - DB >$6ce0 - DB >$6d80 - DB >$6e20 - DB >$6ec0 - DB >$6f60 - DB >$7000 - DB >$70a0 - DB >$7140 - DB >$71e0 - DB >$7280 - DB >$7320 - DB >$73c0 - DB >$7460 - DB >$7500 - DB >$75a0 - DB >$7640 - DB >$76e0 - DB >$7780 - DB >$7820 - DB >$78c0 - DB >$7960 - DB >$7a00 - DB >$7aa0 - DB >$7b40 - DB >$7be0 - DB >$7c80 - DB >$7d20 - DB >$7dc0 - DB >$7e60 - DB >$7f00 - DB >$7fa0 - DB >$8040 - DB >$80e0 - DB >$8180 - DB >$8220 - DB >$82c0 - DB >$8360 - DB >$8400 - DB >$84a0 - DB >$8540 - DB >$85e0 - DB >$8680 - DB >$8720 - DB >$87c0 - DB >$8860 - DB >$8900 - DB >$89a0 - DB >$8a40 - DB >$8ae0 - DB >$8b80 - DB >$8c20 - DB >$8cc0 - DB >$8d60 - DB >$8e00 - DB >$8ea0 - DB >$8f40 - DB >$8fe0 - DB >$9080 - DB >$9120 - DB >$91c0 - DB >$9260 - DB >$9300 - DB >$93a0 - DB >$9440 - DB >$94e0 - DB >$9580 - DB >$9620 - DB >$96c0 - DB >$9760 - DB >$9800 - DB >$98a0 - DB >$9940 - DB >$99e0 - DB >$9a80 - DB >$9b20 - DB >$9bc0 - DB >$9c60 - +SHRROWSH DB >$9c60 + DB >$9bc0 + DB >$9b20 + DB >$9a80 + DB >$99e0 + DB >$9940 + DB >$98a0 + DB >$9800 + DB >$9760 + DB >$96c0 + DB >$9620 + DB >$9580 + DB >$94e0 + DB >$9440 + DB >$93a0 + DB >$9300 + DB >$9260 + DB >$91c0 + DB >$9120 + DB >$9080 + DB >$8fe0 + DB >$8f40 + DB >$8ea0 + DB >$8e00 + DB >$8d60 + DB >$8cc0 + DB >$8c20 + DB >$8b80 + DB >$8ae0 + DB >$8a40 + DB >$89a0 + DB >$8900 + DB >$8860 + DB >$87c0 + DB >$8720 + DB >$8680 + DB >$85e0 + DB >$8540 + DB >$84a0 + DB >$8400 + DB >$8360 + DB >$82c0 + DB >$8220 + DB >$8180 + DB >$80e0 + DB >$8040 + DB >$7fa0 + DB >$7f00 + DB >$7e60 + DB >$7dc0 + DB >$7d20 + DB >$7c80 + DB >$7be0 + DB >$7b40 + DB >$7aa0 + DB >$7a00 + DB >$7960 + DB >$78c0 + DB >$7820 + DB >$7780 + DB >$76e0 + DB >$7640 + DB >$75a0 + DB >$7500 + DB >$7460 + DB >$73c0 + DB >$7320 + DB >$7280 + DB >$71e0 + DB >$7140 + DB >$70a0 + DB >$7000 + DB >$6f60 + DB >$6ec0 + DB >$6e20 + DB >$6d80 + DB >$6ce0 + DB >$6c40 + DB >$6ba0 + DB >$6b00 + DB >$6a60 + DB >$69c0 + DB >$6920 + DB >$6880 + DB >$67e0 + DB >$6740 + DB >$66a0 + DB >$6600 + DB >$6560 + DB >$64c0 + DB >$6420 + DB >$6380 + DB >$62e0 + DB >$6240 + DB >$61a0 + DB >$6100 + DB >$6060 + DB >$5fc0 + DB >$5f20 + DB >$5e80 + DB >$5de0 + DB >$5d40 + DB >$5ca0 + DB >$5c00 + DB >$5b60 + DB >$5ac0 + DB >$5a20 + DB >$5980 + DB >$58e0 + DB >$5840 + DB >$57a0 + DB >$5700 + DB >$5660 + DB >$55c0 + DB >$5520 + DB >$5480 + DB >$53e0 + DB >$5340 + DB >$52a0 + DB >$5200 + DB >$5160 + DB >$50c0 + DB >$5020 + DB >$4f80 + DB >$4ee0 + DB >$4e40 + DB >$4da0 + DB >$4d00 + DB >$4c60 + DB >$4bc0 + DB >$4b20 + DB >$4a80 + DB >$49e0 + DB >$4940 + DB >$48a0 + DB >$4800 + DB >$4760 + DB >$46c0 + DB >$4620 + DB >$4580 + DB >$44e0 + DB >$4440 + DB >$43a0 + DB >$4300 + DB >$4260 + DB >$41c0 + DB >$4120 + DB >$4080 + DB >$3fe0 + DB >$3f40 + DB >$3ea0 + DB >$3e00 + DB >$3d60 + DB >$3cc0 + DB >$3c20 + DB >$3b80 + DB >$3ae0 + DB >$3a40 + DB >$39a0 + DB >$3900 + DB >$3860 + DB >$37c0 + DB >$3720 + DB >$3680 + DB >$35e0 + DB >$3540 + DB >$34a0 + DB >$3400 + DB >$3360 + DB >$32c0 + DB >$3220 + DB >$3180 + DB >$30e0 + DB >$3040 + DB >$2fa0 + DB >$2f00 + DB >$2e60 + DB >$2dc0 + DB >$2d20 + DB >$2c80 + DB >$2be0 + DB >$2b40 + DB >$2aa0 + DB >$2a00 + DB >$2960 + DB >$28c0 + DB >$2820 + DB >$2780 + DB >$26e0 + DB >$2640 + DB >$25a0 + DB >$2500 + DB >$2460 + DB >$23c0 + DB >$2320 + DB >$2280 + DB >$21e0 + DB >$2140 + DB >$20a0 + DB >$2000