From bf583d904b0b23e9761e794ec660e527f45215ed Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 14 Apr 2021 18:30:26 +0200 Subject: [PATCH] reworked native mode extended memory map for easier porting of the legacy software --- src/aliases/,aliases_ram_lowmem_m65.s | 70 +++++++++++++++------------ 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/src/aliases/,aliases_ram_lowmem_m65.s b/src/aliases/,aliases_ram_lowmem_m65.s index 18235f66..dfdb9ab0 100644 --- a/src/aliases/,aliases_ram_lowmem_m65.s +++ b/src/aliases/,aliases_ram_lowmem_m65.s @@ -33,39 +33,49 @@ ; Pages 4-7 - reused screen memory ; - ; $400-$57F - reserved for BASIC + !addr M65_RS232_INBUF = $400 ; $400-$4FF -- reserved for RS-232 input buffer -- + !addr M65_RS232_OUTBUF = $500 ; $500-$5FF -- reserved for RS-232 output buffer -- - ; $400-$57F -- UNUSED -- reserved for BASIC + ; $600-$77F - reserved for BASIC - ; $580-$5FF - reserved for KERNAL + ; $600-$77F -- UNUSED -- reserved for BASIC - !addr M65_SCRSEG = $580 ; $580-$581 segment address (2 higher bytes) of the screen memory - !addr M65_SCRBASE = $582 ; $582-$583 first byte of screen memory - !addr M65_SCRGUARD = $584 ; $584-$585 last byte of screen memory + 1 XXX is it needed? - !addr M65_COLGUARD = $586 ; $586-$587 last byte of colour memory + 1 - !addr M65_COLVIEW = $588 ; $588-$589 first byte of color memory viewport - !addr M65_COLVIEWMAX = $58A ; $58A-$58B largest allowed value of M65_COLVIEW - !addr M65_SCRMODE = $58C ; 0 = 40x25, 1 = 80x25, 2 = 80x50 - !addr M65_SCRWINMODE = $58D ; $00 = normal mode, $FF = window enabled - !addr M65_TXTWIN_X0 = $58E ; text window - top-left X coordinate, starting from 0 - !addr M65_TXTWIN_Y0 = $58F ; text window - top-left Y coordinate, starting from 0 - !addr M65_TXTWIN_X1 = $590 ; text window - bottom-right X coordinate + 1 - !addr M65_TXTWIN_Y1 = $591 ; text window - bottom-right Y coordinate + 1 - !addr M65_TXTROW_OFF = $592 ; $592-$593 offset to the current text row from the viewport start - !addr M65_SCRCOLMAX = $594 ; maximum allowed column - !addr M65_ESCMODE = $595 ; flag - if set, escape mode is in effect - !addr M65_KB_BUCKY = $596 ; result of bucky keys scan - !addr M65_KB_COLSCAN = $597 ; $597-$59F results of keyboard scan, columns 0-8 - !addr M65_KB_PRESSED = $5A0 ; $5A0-$5A2 keys pressed, used during scanning keyboard - !addr M65_KB_PRESSED_OLD = $5A3 ; $5A3-$5A5 keys pressed during previous scan - !addr M65_KB_PRESSED_NEW = $5A6 ; $5A6-$5A8 set of M65_KB_PRESSED minus M65_KB_PRESSED_OLD - !addr M65_BELLDSBL = $5A9 ; flag - if set, disable the bell - !addr M65_SOLIDCRSR = $5AA ; flag - if set, cursor is solid (does not flash) - !addr M65_JOYCRSR = $5AB ; joystick to be used for cursor movement - ; $5AC-$5EB -- UNUSED -- - !addr M65_DMAGIC_LIST = $5F1 ; $5EF-$5FF reserved for DMAgic list, 15 bytes (modulo bytes are not needed) - !addr M65_RS232_INBUF = $600 ; $600-$6FF -- reserved for RS-232 input buffer -- - !addr M65_RS232_OUTBUF = $700 ; $700-$7FF -- reserved for RS-232 output buffer -- + ; $780-$7FF - reserved for KERNAL + + !addr M65_SCRSEG = $780 ; $780-$781 segment address (2 higher bytes) of the screen memory + !addr M65_SCRBASE = $782 ; $782-$783 first byte of screen memory + !addr M65_SCRGUARD = $784 ; $784-$785 last byte of screen memory + 1 XXX is it needed? + !addr M65_COLGUARD = $786 ; $786-$787 last byte of colour memory + 1 + !addr M65_COLVIEW = $788 ; $788-$789 first byte of color memory viewport + !addr M65_COLVIEWMAX = $78A ; $78A-$78B largest allowed value of M65_COLVIEW + !addr M65_SCRMODE = $78C ; 0 = 40x25, 1 = 80x25, 2 = 80x50 + !addr M65_SCRWINMODE = $78D ; $00 = normal mode, $FF = window enabled + !addr M65_TXTWIN_X0 = $78E ; text window - top-left X coordinate, starting from 0 + !addr M65_TXTWIN_Y0 = $78F ; text window - top-left Y coordinate, starting from 0 + !addr M65_TXTWIN_X1 = $790 ; text window - bottom-right X coordinate + 1 + !addr M65_TXTWIN_Y1 = $791 ; text window - bottom-right Y coordinate + 1 + !addr M65_TXTROW_OFF = $792 ; $792-$793 offset to the current text row from the viewport start + !addr M65_SCRCOLMAX = $794 ; maximum allowed column + !addr M65_ESCMODE = $795 ; flag - if set, escape mode is in effect + !addr M65_KB_BUCKY = $796 ; result of bucky keys scan + !addr M65_KB_COLSCAN = $797 ; $797-$79F results of keyboard scan, columns 0-8 + !addr M65_KB_PRESSED = $7A0 ; $7A0-$7A2 keys pressed, used during scanning keyboard + !addr M65_KB_PRESSED_OLD = $7A3 ; $7A3-$7A5 keys pressed during previous scan + !addr M65_KB_PRESSED_NEW = $7A6 ; $7A6-$7A8 set of M65_KB_PRESSED minus M65_KB_PRESSED_OLD + !addr M65_BELLDSBL = $7A9 ; flag - if set, disable the bell + !addr M65_SOLIDCRSR = $7AA ; flag - if set, cursor is solid (does not flash) + !addr M65_JOYCRSR = $7AB ; joystick to be used for cursor movement + ; $7AC-$7C8 -- UNUSED -- + !addr M65_DMAGIC_LIST = $7C9 ; $7C9-$7D7 reserved for DMAgic list, 15 bytes (modulo bytes are not needed) + + ; $7D8-$7E7 - 4 32bit registers, reserved for parameters for future Kernal AP{I expansion + + !addr M65_R0 = $7D8 ; $7D8-$7DB + !addr M65_R1 = $7DC ; $7DC-$7DF + !addr M65_R2 = $7E0 ; $7E0-$7E3 + !addr M65_R3 = $7E4 ; $7E4-$7E7 + + ; $7E8-$7FF - 24 free bytes, as in the legacy compatibility mode ; ; Addresses for configuring the DMA job