diff --git a/code/6502/kernel/kernel.asm b/code/6502/kernel/kernel.asm index 2806369..0411d3f 100644 --- a/code/6502/kernel/kernel.asm +++ b/code/6502/kernel/kernel.asm @@ -283,7 +283,7 @@ kernelMain: lda #HBC56_CONSOLE_FLAG_NOWAIT bit HBC56_CONSOLE_FLAGS - bne .afterInput + bne .afterNesInput lda #HBC56_CONSOLE_FLAG_NES and HBC56_CONSOLE_FLAGS @@ -314,6 +314,7 @@ kernelMain: } cli jsr nesWaitForPress +.afterNesInput: jmp .afterInput .keyboardInput diff --git a/code/6502/kernel/kernel.o b/code/6502/kernel/kernel.o index 08c8d9a..f7ad64a 100644 Binary files a/code/6502/kernel/kernel.o and b/code/6502/kernel/kernel.o differ diff --git a/code/6502/kernel/kernel.o.lmap b/code/6502/kernel/kernel.o.lmap index 269a244..6a91c22 100644 --- a/code/6502/kernel/kernel.o.lmap +++ b/code/6502/kernel/kernel.o.lmap @@ -1,240 +1,328 @@ - HBC56_RST_VECTOR = $f130 ; ? + HBC56_RST_VECTOR = $fc8a ; ? AY_ENV_SHAPE_SAW1 = $8 ; unused tmsConsoleBackspace = $ea2c ; ? NES_RAM_SIZE = $1 - UART_ZP_START = $28 + UART_ZP_START = $2a TMS_LT_RED = $9 ; unused UART_STATUS_RCVR_OVERRUN = $20 ; unused - HBC56_TMP = $7ca2 + HBC56_TMP = $7ccc + lcdDisplayOff = $edba ; ? + TILEMAP_SIZE = $1 KB_SCANCODE_ESC = $76 ; unused AY_ENV_SHAPE_SAW2 = $c ; unused + TILEMAP_TMP_OUTPUT_ROW = $7a83 TMS_GFX_TILE_WIDTH = $8 - LCD_RAM_END = $7b58 + lcdCurrentLine = $eeee ; ? + LCD_RAM_END = $7b82 + LCD_ZP_SIZE = $2 TMS_SPRITE_SIZE = $8 KB_SCANCODE_ARROW_RIGHT = $f4 ; unused + LCD_EXTENDED = $3c ; ? + LCD_CMD_SHIFT_DISPLAY = $8 ; unused KB_CAPS_LOCK = $8 KB_EXT_KEY = $e0 VIA_RAM_SIZE = $1 - HBC56_VSYNC_CALLBACK = $7cb9 + HBC56_VSYNC_CALLBACK = $7ce3 isLower = $e000 TMS_R1_SPRITE_MAG2 = $1 ; unused + bitmapLineH = $eacf KB_BUFFER_MASK = $f KB_SCANCODE_SLASH_FORWARD = $4a ; unused AY_PORTB = $f ; unused TMS_R1_RAM_16K = $80 + lcdLineFour = $efb3 ; ? + lcdConsolePrint = $f070 ; unused AY_PORTA = $e ; unused TMS_R1_SPRITE_MAG1 = $0 ; unused TMS_FPS = $3c - kbInit = $eb0c - VIA_TMP = $7c58 ; unused + lcdLineThreeEnd = $ef44 ; ? + kbInit = $f28e + VIA_TMP = $7c82 ; unused tmsSetAddressNextRow = $e583 ; unused + START_BYTE = $7b1f UART_IRQ_BIT = $4 tmsModeText = $e691 ; unused VIA_REG_IFR = $d + bitmapLineV = $eb60 + _bitmapLineWide = $ebf0 ; ? + lcdCharScroll = $ee1c + LCD_CMD_SET_CGRAM_ADDR = $40 ; unused _tmsSendKb = $e6ee ; ? UART_STATUS_RX_REG_FULL = $1 tmsReg1SetFields = $e5d0 BITMAP_ZP_START = $1e + BITMAP_LINE_STYLE_ODD = $7b1e + END_BYTE = $7b20 JMP_OPCODE = $4c - hbc56IntHandler = $f0a6 + hbc56IntHandler = $fc00 TILEMAP_RAM_START = $7a00 KB_SCANCODE_SCROLL_LOCK = $7e ; unused - KB_RAM_END = $7c9c + KB_RAM_END = $7cc6 AY_ENV_SHAPE_HOLD = $1 TMS_R0_MODE_GRAPHICS_II = $2 + TILEMAP_ADDR = $18 KB_SHIFT_LEFT_MAP_BYTE = $2 VIA_IO_ADDR_IFR = $7ffd ; unused + TILEMAP_SIZE_Y_8 = $0 VIA_IO_ADDR_T1C_H = $7ff5 ; unused - MEMORY_ZP_END = $32 + MEMORY_ZP_END = $34 TMS_R1_SPRITE_8 = $0 ; unused VIA_REG_T1L_H = $7 + BITMAP_X = $7b17 + BITMAP_Y = $7b18 KB_SCANCODE_PRTSCR = $92 ; unused + LCD_BASIC = $38 ; ? ; unused KB_SCANCODE_SLASH_BACK = $5d ; unused VIA_IO_ADDR_T1C_L = $7ff4 ; unused + TILEMAP_SIZE_X_64 = $2 AY_WRITE = $1 UART_STATUS_CARRIER_DETECT = $4 ; unused VIA_REG_T1L_L = $6 - KB_PRESSED_MAP = $7c76 + KB_PRESSED_MAP = $7ca0 TMS9918_ZP_START = $24 tmsDecPosConsole = $e90d UART_CTL_WORD_8BIT_1SB = $14 ; unused HBC56_CONSOLE_FLAG_LCD = $20 ; unused TMS_CYAN = $7 - HBC56_TITLE = $edef + ASCII_NEWLINE = $a + HBC56_TITLE = $f571 memcpyMultiPage = $e0bf ; unused + LCD_ROWS = $4 KB_SCANCODE_NUM_LOCK = $77 ; unused TILEMAP_RAM_END = $7b16 + lcdGraphicsMode = $ecf3 VIA_DIR_OUTPUT = $ff ; unused - KB_BUFFER_TAIL = $7c65 + TILEMAP_ZP_SIZE = $6 + lcdPrint = $edf9 + KB_BUFFER_TAIL = $7c8f tmsSetRegister = $e5ad - hbc56Tms9918Int = $f0e0 ; ? + hbc56Tms9918Int = $fc3a ; ? + lcdGotoLineEnd = $eef1 ; ? KB_SCANCODE_NUMPAD_ENTER = $da ; unused + TILEMAP_FIXED_ADDRESS = $7b00 UART_STATUS_TX_REG_EMPTY = $2 UART_RX_BUFFER_XOFF_SIZE = $c0 - KB_FLAGS = $7c5c + KB_FLAGS = $7c86 TMS_VRAM_SPRITE_ATTR_ADDRESS2 = $3b80 ; unused TMS_VRAM_SPRITE_ATTR_ADDRESS3 = $3f00 ; unused + lcdGotoLine = $ef88 ; ? HBC56_NMI_VECTOR = $7e04 KB_SCANCODE_SQUARE_LEFT = $54 ; unused + LCD_CMD_SHIFT_CURSOR = $0 ; unused + lcdRead = $edf2 BITMAP_ZP_END = $24 + lcdLineOne = $ef9b ; ? UART_CTL_CLOCK_DIV_64 = $2 toUpper = $e06b ; unused VIA_IO_ADDR = $7ff0 tableBitsFromLeft = $e150 ; unused TMS_VRAM_SPRITE_ATTR_ADDRESS4 = $3f80 ; unused - NES_TMP = $7c9c ; unused - HBC56_META_TITLE_END = $7cb7 - uartFlowCtrlXoff = $ea8d ; ? - SFXMAN_RAM_START = $7c59 - uartInWait = $ea96 - uartOutString = $eae2 ; unused + NES_TMP = $7cc6 ; unused + LCD_CMD_ENTRY_MODE = $4 ; unused + HBC56_META_TITLE_END = $7ce1 + uartFlowCtrlXoff = $f20f ; ? + SFXMAN_RAM_START = $7c83 + uartInWait = $f218 + uartOutString = $f264 ; unused RTI_OPCODE = $40 KB_SCANCODE_PAGE_UP = $fd ; unused AY_ENV_SHAPE_FADE_OUT = $9 ; unused tmsModeBitmap = $e60e ; unused + lcdReadLine = $efda + LINE_WIDTH = $7b1f TMS_VRAM_SPRITE_ATTR_ADDRESS = $3b00 + LCD_CMD_SET_DRAM_ADDR = $80 NOTE_FREQ_AS8 = 7458.619999999999890860635787248611 ; unused - HBC56_TMP_Y = $7ca5 + HBC56_TMP_Y = $7ccf KB_SCANCODE_TILDE = $e ; unused HBC56_TITLE_LEN = $1a UART_IO_PORT = $20 TMS9918_RAM_END = $7b58 AY_S0_ADDR = $7f40 ; unused TMS9918_ZP_SIZE = $2 - HBC56_TMP_X = $7ca4 + HBC56_TMP_X = $7cce NOTE_FREQ_AS5 = 932.330000000000040927261579781771 ; unused TMS_MED_GREEN = $2 ; unused TMS_WHITE = $f + LCD_CMD_DISPLAY_CURSOR_BLINK = $1 + LCD_ADDR_LINE2 = $10 KB_SCANCODE_WINDOWS_RIGHT = $a7 ; unused - HBC56_KERNEL_ZP_END = $36 + HBC56_KERNEL_ZP_END = $38 AY_S1_WRITE = $7f45 ; unused NOTE_FREQ_AS4 = 466.160000000000025011104298755527 ; unused + LCD_CMD_SHIFT = $10 VIA_REG_DDR_B = $2 + LCD_ADDR_LINE3 = $8 NOTE_FREQ_AS7 = 3729.309999999999945430317893624306 ; unused TMS_TMP_ADDRESS = $24 KB_SCANCODE_PERIOD = $49 ; unused VIA_REG_DDR_A = $3 tableBitFromLeft = $e130 NOTE_FREQ_AS6 = 1864.660000000000081854523159563541 ; unused + LCD_ADDR_LINE1 = $0 AY_NOISE_GEN = $6 ; unused NOTE_FREQ_AS1 = 58.270000000000003126388037344441 ; unused + BITMAP_X2 = $7b19 AY_S0_WRITE = $7f41 ; unused NOTE_FREQ_AS0 = 29.140000000000000568434188608080 ; unused tmsSetAddressRead = $e59f - VIA_RAM_START = $7c58 + VIA_RAM_START = $7c82 + LCD_CMD_CLEAR = $1 NOTE_FREQ_AS3 = 233.080000000000012505552149377763 ; unused - UART_RX_BUFFER_TAIL = $29 + UART_RX_BUFFER_TAIL = $2b tmsSetPatternRead = $e9a8 ; unused + LCD_ADDR_LINE4 = $18 AY_S1_ADDR = $7f44 ; unused NOTE_FREQ_AS2 = 116.540000000000006252776074688882 ; unused - UART_RX_BUFFER = $7b58 + BITMAP_X1 = $7b17 + UART_RX_BUFFER = $7b82 TMS_R1_SPRITE_16 = $2 ; unused TMS_GFX_PIXELS_Y = $c0 ; unused TMS_GFX_PIXELS_X = $100 ; unused KB_SCANCODE_NUMPAD_MULTIPLY = $7c ; unused HBC56_DISABLE_SFXMAN = $1 tmsSetAddressWrite = $e58f + D = $7b24 TMS_MAGENTA = $d ; unused - LCD_IO_PORT = $2 ; unused + LCD_GRAPHICS = $1 + LCD_IO_PORT = $2 tmsConsoleScrollLine = $e878 KB_SCANCODE_CTRL_RIGHT = $94 ; unused _tmsSendEmptyPage = $e72d + HAVE_GRAPHICS_LCD = $1 KB_BUFFER_SIZE = $10 KB_SCANCODE_COMMA = $41 ; unused - HBC56_TITLE_TEXT = $edef + HBC56_TITLE_TEXT = $f571 AY_R10 = $8 + BITMAP_TMP1 = $7b1f + LCD_CMD_12864B_EXTENDED = $4 AY_IO_PORT = $40 AY_R11 = $9 NES_LEFT = $2 ; unused AY_R12 = $a TMS_R1_DISP_BLANK = $0 ; unused + LCD_RAM_SIZE = $2a KB_NUM_LOCK = $10 ; unused - hbc56LogoPatt = $ee6c - kernelMain = $f130 ; ? + BITMAP_TMP3 = $7b21 + hbc56LogoPatt = $f942 + kernelMain = $fc8a ; ? AY_R13 = $b - hbc56LogoPattEnd = $efe4 ; unused - ASCII_CR = $d ; unused + hbc56LogoPattEnd = $faba ; unused + BITMAP_TMP2 = $7b20 + tilemapSetActive = $f0f5 ; ? + ASCII_CR = $d AY_R14 = $c KB_SCANCODE_PAGE_DOWN = $fa ; unused - kbIntHandler = $eb47 + BITMAP_TMP5 = $7b23 + kbIntHandler = $f2c9 IO_PORT_BASE_ADDRESS = $7f00 AY_R15 = $d + BITMAP_TMP4 = $7b22 isDigit = $e01e AY_R16 = $e HAVE_TMS9918 = $1 UART_CTL_MASTER_RESET = $3 AY_R17 = $f + BITMAP_TMP6 = $7b24 KB_SCANCODE_TAB = $d ; unused HBC56_KERNEL_ZP_START = $18 TMS9918_IRQ_BIT = $1 HBC56_BORDER = $4 TMS_R1_MODE_MULTICOLOR = $8 + lcdTextMode = $ed04 TMS_R0_MODE_MULTICOLOR = $0 + lcdNextLine2 = $efcd ; unused TMS_DK_BLUE = $4 + LCD_CMD_DISPLAY_CURSOR = $2 + lcdClear = $ed9f ; ? AY_ENV_SHAPE_TRIANGLE2 = $a ; unused + lcdNextLine4 = $efbb TMS_VRAM_SPRITE_PATT_ADDRESS = $1800 HBC56_CONSOLE_FLAG_NOWAIT = $10 + lcdGraphicsSetRow = $ed15 KB_SCANCODE_ENTER = $5a ; unused KB_IO_PORT = $80 AY_ENV_SHAPE_ATTACK = $4 UART_STATUS_IRQ = $80 ; unused VIA_REG_PFR = $c ; unused + X = $7b21 + TILEMAP_INVERT_ADDR = $3 NES_DOWN = $4 ; unused tmsReg1ClearFields = $e5da + Y = $7b21 NES_SELECT = $20 ; unused - hbc56Stop = $f2c2 + LCD_CMD_ENTRY_MODE_SHIFT = $1 ; unused + TILEMAP_RAM_SIZE = $107 + hbc56Stop = $fe67 + lcdChar = $ee15 + lcdInt8 = $ee6d ; unused UART_RX_BUFFER_SIZE = $100 - KB_BUFFER = $7c66 + KB_BUFFER = $7c90 DEFAULT_HBC56_NMI_VECTOR = $ffe0 ; unused + COL_BYTE = $7b1f + HAVE_TILEMAP = $1 ; unused + TILEMAP_HEIGHT_TILES = $6 NES1_IO_ADDR = $7f82 + lcdDetect = $edde UART_CTL_WORD_7BIT_OPB_1SB = $c ; unused KB_SCANCODE_NUMPAD_PLUS = $79 ; unused NES2_IO_ADDR = $7f83 BITMAP_RAM_END = $7b26 + BITMAP_ZP_SIZE = $4 KB_SCANCODE_F2 = $6 ; unused + lcdCursorBlinkOn = $edd5 HBC56_TITLE_TEXT_LEN = $1a + lcdConsoleOut = $f04a NES_UP = $8 ; unused KB_SCANCODE_F3 = $4 ; unused VIA_DIR_INPUT = $0 ; unused - DELAY_L = $34 + DELAY_L = $36 TMS_TXT_TILES_X = $28 - ASCII_BACKSPACE = $8 ; unused + ASCII_BACKSPACE = $8 TMS_TXT_TILES_Y = $18 KB_SCANCODE_F1 = $5 ; unused KB_SCANCODE_SEMICOLON = $4c ; unused + c = $20 KB_SCANCODE_F6 = $b ; unused TMS_R1_DISP_ACTIVE = $40 tmsInitColorTable = $e7ab KB_SCANCODE_F7 = $83 ; unused KB_SCANCODE_HOME = $ec ; unused - DELAY_H = $35 + DELAY_H = $37 KB_SCANCODE_F4 = $c ; unused tmsSetPosTmpAddress = $e836 - uartInNoWait = $eaa0 ; unused - hbc56Reset = $f2bf ; unused + uartInNoWait = $f222 ; unused + hbc56Reset = $fe64 ; unused KB_SCANCODE_F5 = $3 ; unused - hbc56CustomDelayMs = $f2c5 ; unused - uartOut = $eac3 ; ? - KB_TMP_X = $7c5d + hbc56CustomDelayMs = $fe6a ; unused + lcdLineThree = $efab ; ? + uartOut = $f245 ; ? + KB_TMP_X = $7c87 KB_SCANCODE_F8 = $a ; unused + hbc56LogoLcd = $f800 HBC56_KERNEL_RAM_START = $7a00 - KB_TMP_Y = $7c5e ; unused + KB_TMP_Y = $7c88 ; unused KB_SCANCODE_F9 = $1 ; unused tmsConsolePrint = $e9f5 ; unused + lcdLineTwo = $efa3 ; ? tmsConsoleCls = $e92a ; unused - uartIrq = $ea5e + uartIrq = $f1e0 + TILEMAP_BUFFER_ADDR = $0 TMS_BLACK = $1 - HBC56_META_TITLE = $7ca6 + TILEMAP_WIDTH_TILES = $5 + HAVE_LCD = $1 + HBC56_META_TITLE = $7cd0 KB_SCANCODE_SQUARE_RIGHT = $5b ; unused tmsConsoleNewline = $ea05 ; ? + LCD_CMD_8BITMODE = $10 AY_S1 = $7f44 NOTE_FREQ_C8 = 4186.010000000000218278728425502777 ; unused KB_IRQ_BIT = $2 tmsModeGraphicsII = $e670 ; unused AY_S0 = $7f40 NOTE_FREQ_A8 = $1b80 ; unused - HBC56_TICKS = $7c9f - HBC56_SECONDS_H = $7ca1 + HBC56_TICKS = $7cc9 + HBC56_SECONDS_H = $7ccb memcpySinglePage = $e0a3 ; unused tmsModeGraphicsI = $e5fb NOTE_FREQ_G8 = 6271.930000000000291038304567337036 ; unused @@ -244,16 +332,19 @@ AY_ENV_SHAPE_ALTERNATE = $2 NOTE_FREQ_DS8 = 4978.029999999999745341483503580093 ; unused tmsInitEntireColorTable = $e7a9 ; ? + TILEMAP_TMP_BUFFER_ADDR = $1a TMS_GREY = $e NES_B = $40 ; unused - HBC56_SECONDS_L = $7ca0 + HBC56_SECONDS_L = $7cca AY_PSG1 = $4 UART_CTL_WORD_7BIT_EPB_1SB = $8 ; unused NES_A = $80 ; unused + LCD_COLUMNS = $10 TMS9918_IO_PORT = $10 - UART_RAM_END = $7c58 + UART_RAM_END = $7c82 AY_PSG0 = $0 UART_FLOWCTRL_XON = $11 + LCD_CMD_FUNCTIONSET = $20 DEFAULT_HBC56_RST_VECTOR = $8000 NOTE_FREQ_C0 = 16.350000000000001421085471520200 ; unused NOTE_FREQ_A1 = $37 ; unused @@ -261,10 +352,13 @@ NOTE_FREQ_E3 = 164.810000000000002273736754432321 NOTE_FREQ_DS4 = 311.129999999999995452526491135359 ; unused KB_SCANCODE_CTRL_LEFT = $14 ; unused + lcdImageVflip = $ed5b ; unused + TILE_SIZE = $8 ; unused NOTE_FREQ_A0 = 27.500000000000000000000000000000 ; unused NOTE_FREQ_E2 = 82.409999999999996589394868351519 ; unused NOTE_FREQ_DS5 = 622.250000000000000000000000000000 ; unused tmsReg0ClearFields = $e5c8 + LCD_CMD_HOME = $2 UART_STATUS_CLEAR_TO_SEND = $8 ; unused NOTE_FREQ_G3 = $c4 ; unused NOTE_FREQ_C1 = 32.700000000000002842170943040401 ; unused @@ -281,7 +375,7 @@ NOTE_FREQ_G1 = $31 ; unused NOTE_FREQ_A2 = $6e ; unused NOTE_FREQ_C3 = 130.810000000000002273736754432321 ; unused - UART_ZP_END = $2c + UART_ZP_END = $2e NOTE_FREQ_DS0 = 19.449999999999999289457264239900 ; unused NOTE_FREQ_C4 = 261.629999999999995452526491135359 ; unused NOTE_FREQ_A5 = $370 ; unused @@ -291,17 +385,19 @@ HAVE_KEYBOARD = $1 NOTE_FREQ_A4 = $1b8 ; unused NOTE_FREQ_E6 = 1318.509999999999990905052982270718 ; unused - hbc56HighBell = $f22e ; ? + _bitmapLineTall = $ec41 ; ? + hbc56HighBell = $fdd3 ; ? NOTE_FREQ_G7 = 3135.960000000000036379788070917130 ; unused NOTE_FREQ_C5 = 523.250000000000000000000000000000 ; unused tmsConsoleHome = $e92d ; unused + _bitmapOffset = $ea81 NOTE_FREQ_DS2 = 77.780000000000001136868377216160 ; unused NOTE_FREQ_G4 = $188 ; unused NOTE_FREQ_E5 = 659.250000000000000000000000000000 ; unused VIA_IO_ADDR_T2C_L = $7ff8 ; unused NOTE_FREQ_C6 = 1046.500000000000000000000000000000 ; unused NOTE_FREQ_A7 = $dc0 ; unused - BCD_RAM_START = $7c59 + BCD_RAM_START = $7c83 HBC56_META_TITLE_MAX_LEN = $10 isDigitX = $e030 ; unused NOTE_FREQ_DS3 = 155.560000000000002273736754432321 ; unused @@ -309,148 +405,185 @@ NOTE_FREQ_G5 = 783.990000000000009094947017729282 ; unused NOTE_FREQ_A6 = $6e0 ; unused NOTE_FREQ_C7 = $82d ; unused - VIA_RAM_END = $7c59 + VIA_RAM_END = $7c83 AY_INACTIVE = $3 ; unused TMS_SPRITE_SIZE2X = $10 ; unused tmsSetPosWriteText = $e946 ; ? KB_SCANCODE_F11 = $78 ; unused AY_S0_READ = $7f42 ; unused tmsInitTextTable = $e789 ; ? + LCD_TMP2 = $29 + lcdCursorOn = $edc3 ; unused KB_SCANCODE_F10 = $9 ; unused VIA_REG_PORT_A = $1 + LCD_TMP1 = $28 KB_SCANCODE_NUMPAD_PERIOD = $71 ; unused VIA_REG_PORT_B = $0 KB_SCANCODE_F12 = $7 ; unused - kbNextScancode = $ec6b + kbNextScancode = $f3ed + lcdBackspace = $ee39 KB_SCANCODE_WINDOWS_LEFT = $9f ; unused - BCD_RAM_END = $7c5c - ASCII_RETURN = $a ; unused + BCD_RAM_END = $7c86 + ASCII_RETURN = $a + lcdWaitPreserve = $edec + TILEMAP_TILES_ADDR = $2 + tilemapRenderToLcd = $f132 ; unused + LCD_CMD_DISPLAY = $8 + TILEMAP_TMP_TILE_SIZE = $7a88 TMS_R1_INT_ENABLE = $20 + lcdLineOneEnd = $ef00 ; ? + bitmapLine = $eba9 ; unused UART_CTL_WORD_8BIT_OPAR_1SB = $1c ; unused isSpace = $e049 ; unused - hbc56BootScreen = $efe4 + hbc56BootScreen = $faba AY_S1_READ = $7f46 ; unused KB_SCANCODE_END = $e9 ; unused TMS_GFX_TILE_HEIGHT = $8 KB_SCANCODE_SHIFT_RIGHT = $59 TMS_LT_BLUE = $5 ; unused TMS_R0_EXT_VDP_ENABLE = $1 ; unused - uartOutNoBsCheck = $ead1 ; ? + TILEMAP_STRUCTURE_SIZE = $7 + uartOutNoBsCheck = $f253 ; ? KB_SCANCODE_ALT_LEFT = $11 ; unused + lcdLineTwoEnd = $ef22 ; ? HBC56_INT_VECTOR = $7e00 + LINE_HEIGHT = $7b20 VIA_REG_IER = $e tmsIncPosConsole = $e8ec INT_IO_PORT = $df KB_PRESSED_MAP_BYTES = $20 VIA_REG_ACR = $b - STR_ADDR_H = $33 - NES_RAM_END = $7c9f + STR_ADDR_H = $35 + NES_RAM_END = $7cc9 memsetSinglePage = $e101 TMS_FONT_DATA = $e271 tmsSetPatternTmpAddressII = $e956 ; unused - kbWaitForScancode = $ec5b + kbWaitForScancode = $f3dd + LCD_CMD_SHIFT_LEFT = $0 tmsReg0SetFields = $e5be tmsPrint = $e9ae KB_SCANCODE_APOS = $52 ; unused - STR_ADDR_L = $32 + STR_ADDR_L = $34 tmsSetPosConsole = $e933 KB_SHIFT_RIGHT_MAP_BYTE = $b AY_CLOCK_FREQ = $1e8480 tmsSetBackground = $e5ba + BITMAP_ADDR_H = $20 tmsSendBytesReverse = $e740 ; unused TMS_R1_MODE_GRAPHICS_II = $0 UART_RX_BUFFER_XON_SIZE = $4 VIA_IO_ADDR_ACR = $7ffb ; unused - uartFlowCtrlXon = $ea82 ; ? + uartFlowCtrlXon = $f204 ; ? + TILEMAP_SIZE_X_32 = $1 VIA_IO_ADDR_IER = $7ffe ASCII_BELL = $7 ; unused - BCD_TMP3 = $7c5b + BCD_TMP3 = $7c85 TMS_MED_RED = $8 ; unused + DISPLAY_MODE = $c UART_CTL_WORD_8BIT_EPAR_1SB = $18 ; unused - BCD_TMP2 = $7c5a - LCD_ZP_END = $28 + BCD_TMP2 = $7c84 + LCD_ZP_END = $2a toLower = $e073 ; unused - BCD_TMP1 = $7c59 - MEM_SRC = $2e + BCD_TMP1 = $7c83 + MEM_SRC = $30 AY_ENABLES = $7 + lcdWait = $ede6 ; ? UART_CTL_WORD_7BIT_OPB_2SB = $4 ; unused + lcdInit = $ed8d LCD_RAM_START = $7b58 TMS_LT_GREEN = $3 ; unused _tmsWaitData = $e579 tmsSetColorTmpAddressII = $e952 ; unused + TILEMAP_SIZE_X_16 = $0 VIA_REG_SR = $a ; unused HAVE_MATH_INC = $1 + TILEMAP_TMP_TILES_W = $7a86 KB_SCANCODE_B = $32 ; unused - hbc56Bell = $f260 ; unused + hbc56Bell = $fe05 ; unused KB_SCANCODE_C = $21 ; unused TMS_TXT_PIXELS_X = $f0 ; unused - HBC56_KERNEL_RAM_SIZE = $2bd ; unused + lcdCursorOff = $edcc + HBC56_KERNEL_RAM_SIZE = $2e7 ; unused TMS_TXT_PIXELS_Y = $c0 ; unused + lcdLineFourEnd = $ef66 ; ? KB_SCANCODE_A = $1c ; unused TMS_GFX_TILES_Y = $18 KB_PRESSED_MAP_SIZE = $fe ; unused KB_SCANCODE_F = $2b ; unused - kbIsPressed = $ec31 ; unused + kbIsPressed = $f3b3 ; unused TMS_R0_MODE_TEXT = $0 TMS_GFX_TILES_X = $20 + TILEMAP_DIRTY_ADDR = $4 KB_SCANCODE_G = $34 ; unused - HBC56_DISABLE_LCD = $1 TMS_R0_MODE_GRAPHICS_I = $0 tmsSetSpriteTmpAddress = $e82d ; unused - KB_CB_RELEASED = $7c61 + bitmapClear = $ea42 ; unused + KB_CB_RELEASED = $7c8b KB_SCANCODE_D = $23 ; unused TMS_R1_MODE_GRAPHICS_I = $0 KB_SCANCODE_E = $24 ; unused TILEMAP_ZP_START = $18 KB_SHIFT_DOWN = $1 ; unused KB_SCANCODE_J = $3b ; unused - KB_CB_PRESSED = $7c5f + KB_CB_PRESSED = $7c89 KB_SCANCODE_K = $42 ; unused KB_SHIFT_RIGHT_MAP_BIT = $40 - HBC56_CONSOLE_FLAGS = $7ca3 + HBC56_CONSOLE_FLAGS = $7ccd AY_ENV_SHAPE = $d + LCD_CMD_ENTRY_MODE_DECREMENT = $0 ; unused KB_SCANCODE_H = $33 ; unused - kbReadAscii = $ecdb ; unused - KB_BUFFER_HEAD = $7c64 + kbReadAscii = $f45d ; unused + KB_BUFFER_HEAD = $7c8e KB_SCANCODE_I = $43 ; unused - viaIntHandler = $edec + viaIntHandler = $f56e KB_SCANCODE_N = $31 ; unused tmsTileXyAtPixelXy = $e7f3 ; unused UART_CTL_CLOCK_DIV_16 = $1 ; unused - nesWaitForPress = $eaef - hbc56LogoInd = $ee2a + nesWaitForPress = $f271 + hbc56LogoInd = $f900 KB_SCANCODE_O = $44 ; unused memcpyMultiPagePort = $e0e1 ; unused KB_SCANCODE_L = $4b ; unused bin2bcd8 = $e07b ; unused KB_SCANCODE_M = $3a ; unused KB_SCANCODE_ARROW_UP = $f5 ; unused - UART_RX_BUFFER_HEAD = $28 + lcdCurrentLine2 = $eee1 ; unused + UART_RX_BUFFER_HEAD = $2a KB_SCANCODE_R = $2d ; unused _tmsSendPage = $e6f7 ; ? + LCD_CMD_ENTRY_MODE_INCREMENT = $2 ; unused tmsSetPosWrite = $e939 ; unused KB_SCANCODE_S = $1b ; unused + hbc56FontLcd = $f600 + tilemapRenderRowToLcd = $f10b KB_SCANCODE_P = $4d ; unused TMS_DK_RED = $6 ; unused + LCD_CMD_SHIFT_RIGHT = $4 ; unused + TILEMAP_TMP_BUF_ROW = $7a80 KB_SCANCODE_Q = $15 ; unused NOTE_FREQ_GS8 = 6644.880000000000109139364212751389 ; unused - KB_CURRENT_STATE = $7c63 + BITMAP_LINE_STYLE = $7b1d + KB_CURRENT_STATE = $7c8d KB_SCANCODE_V = $2a ; unused NOTE_FREQ_CS8 = 4434.920000000000072759576141834259 ; unused KB_SCANCODE_W = $1d ; unused HBC56_CONSOLE_FLAG_NES = $40 + lcdCurrentLine4 = $eecc UART_CTL_WORD_7BIT_EPB_2SB = $0 ; unused - kbScancodeToAscii = $ec80 + kbScancodeToAscii = $f402 + LCD_CMD = $7f02 KB_SCANCODE_T = $2c ; unused KB_SHIFT_LEFT_MAP_BIT = $20 TMS_TRANSPARENT = $0 + TILEMAP_TMP_TILES_ADDR = $1c KB_SCANCODE_U = $3c ; unused - SFXMAN_RAM_END = $7c59 + SFXMAN_RAM_END = $7c83 NOTE_FREQ_GS4 = 415.300000000000011368683772161603 ; unused tmsSendBytes = $e731 NOTE_FREQ_CS5 = 554.370000000000004547473508864641 ; unused VIA_REG_T2C_H = $9 VIA_REG_PORT_Ax = $f ; unused + lcdHex8 = $eea3 ; unused KB_SCANCODE_Z = $1a ; unused LCD_ZP_START = $28 NOTE_FREQ_CS4 = 277.180000000000006821210263296962 ; unused @@ -459,12 +592,14 @@ isUpper = $e00c TMS_VRAM_NAME_ADDRESS = $3800 UART_IRQ = $3 - NES_RAM_START = $7c9c + NES_RAM_START = $7cc6 + LCD_CMD_2LINE = $8 NOTE_FREQ_GS6 = 1661.220000000000027284841053187847 ; unused NOTE_FREQ_CS7 = 2217.460000000000036379788070917130 ; unused KB_SCANCODE_X = $22 ; unused KB_SCANCODE_PAUSE = $e1 KB_IO_ADDR = $7f80 + TILEMAP_SIZE_Y_32 = $8 memcpySinglePagePort = $e0b1 ; unused NOTE_FREQ_CS6 = 1108.730000000000018189894035458565 ; unused NOTE_FREQ_GS7 = 3322.440000000000054569682106375694 ; unused @@ -473,11 +608,15 @@ KB_SCANCODE_Y = $35 ; unused NOTE_FREQ_GS0 = 25.960000000000000852651282912120 ; unused NOTE_FREQ_CS1 = 34.649999999999998578914528479800 ; unused + HAVE_BITMAP = $1 ; unused + BITMAP_Y2 = $7b1a + bitmapFilledRect = $ecbb ; unused VIA_REG_T2C_L = $8 ROM_BANK_REG = $8 ; unused - HBC56_USER_ZP_START = $36 ; unused + HBC56_USER_ZP_START = $38 ; unused NOTE_FREQ_CS0 = 17.320000000000000284217094304040 ; unused NOTE_FREQ_GS1 = 51.909999999999996589394868351519 ; unused + LCD_CMD_EXT_GRAPHICS_ENABLE = $2 UART_CTL_RX_INT_ENABLE = $80 KB_SCANCODE_CAPS_LOCK = $58 tableInvBitFromRight = $e148 ; unused @@ -490,24 +629,33 @@ HBC56_CLOCK_FREQ = $384000 ; unused NOTE_FREQ_CS2 = 69.299999999999997157829056959599 ; unused NOTE_FREQ_GS3 = 207.650000000000005684341886080801 ; unused + BITMAP_Y1 = $7b18 + TILEMAP_TMP_TILES_H = $7a87 + TILEMAP_SIZE_Y_16 = $4 KB_IRQ = $2 VIA_IO_PORT = $f0 - HBC56_VIA_CALLBACK = $7cbb + HBC56_VIA_CALLBACK = $7ce5 _tmsSendX8 = $e6f9 KB_SCANCODE_NUMPAD_5 = $73 ; unused AY_CHA = $0 + lcdImage = $ed30 KB_SCANCODE_ALT_RIGHT_ = $91 ; unused + bitmapFill = $ea49 ; unused + bitmapXor = $ea66 ; unused KB_SCANCODE_NUMPAD_4 = $6b ; unused AY_CHB = $1 + lcdNextLine = $efd7 ; ? KB_RAM_SIZE = $3a tmsSetPatternWrite = $e9a2 ; unused + lcdDisplayOn = $edb1 KB_SCANCODE_NUMPAD_7 = $6c ; unused - UART_RAM_START = $7b58 + UART_RAM_START = $7b82 AY_CHC = $2 KB_SCANCODE_NUMPAD_6 = $74 ; unused MEMORY_ZP_SIZE = $6 + tilemapInit = $f07d KB_SCANCODE_NUMPAD_1 = $69 ; unused - KEY_MAP_SHIFTED = $ed6c ; ? + KEY_MAP_SHIFTED = $f4ee ; ? AY_READ = $2 KB_SCANCODE_NUMPAD_0 = $70 ; unused KB_SCANCODE_NUMPAD_3 = $7a ; unused @@ -518,25 +666,31 @@ TMS9918_CONSOLE_LINE_LEN = $7b2b KB_SCANCODE_NUMPAD_MINUS = $7b ; unused BITMAP_RAM_START = $7b16 - uartInit = $ea42 ; unused + TILEMAP_TMP_TILE_ROW = $7a82 + uartInit = $f1c4 ; unused hbc56CustomDelay = $ffe3 UART_STATUS_FRAMING_ERROR = $10 ; unused HBC56_BACKGROUND = $f AY_ENV_SHAPE_FADE_IN_STOP = $4 ; unused HAVE_UART = $1 - MEM_DST = $2c + MEM_DST = $2e TMS_DK_YELLOW = $a ; unused + TILEMAP_TMP_2 = $7a85 UART_STATUS_PARITY_ERROR = $40 ; unused + lcdScrollUp = $efeb ; ? KB_SCANCODE_NUMPAD_9 = $7d ; unused + LCD_INITIALIZE = $38 ; ? KB_SCANCODE_NUMPAD_8 = $75 ; unused AY_CHN = $3 ; unused AY_ENV_SHAPE_TRIANGLE = $e ; unused hbc56Delay = $ffe1 tableInvBitFromLeft = $e138 + TILEMAP_TMP_1 = $7a84 + STYLE_BYTE = $7b20 KB_SCANCODE_2 = $1e ; unused AY_CHB_TONE_H = $3 ; unused KB_SCANCODE_3 = $26 ; unused - kbResetCallbacks = $eb36 ; unused + kbResetCallbacks = $f2b8 ; unused NES_IO_PORT = $82 TMS9918_RAM_SIZE = $32 KB_SCANCODE_0 = $45 ; unused @@ -549,7 +703,7 @@ HBC56_META_VECTOR = $dffc cputype = $65c02 ; unused KB_SCANCODE_6 = $36 ; unused - HBC56_KERNEL_RAM_END = $7cbd + HBC56_KERNEL_RAM_END = $7ce7 AY_CHB_TONE_L = $2 ; unused KB_SCANCODE_7 = $3d ; unused AY_ENV_SHAPE_FADE_IN = $d ; unused @@ -561,64 +715,76 @@ AY_CHA_TONE_H = $1 AY_CHC_TONE_L = $4 ; unused KB_SCANCODE_5 = $2e ; unused - MEMORY_ZP_START = $2c + MEMORY_ZP_START = $2e tmsSetPosRead = $e94c ; unused - nes1Pressed = $eafc ; unused + nes1Pressed = $f27e ; unused VIA_REG_T1C_H = $5 INT_CTRL_ADDRESS = $7fdf - STR_ADDR = $32 + STR_ADDR = $34 AY_ENV_PERIOD_H = $c tmsHex8 = $e800 ; unused VIA_IO_ADDR_T1L_H = $7ff7 ; unused TILEMAP_ZP_END = $1e - KEY_MAP = $ecec ; ? + KEY_MAP = $f46e ; ? KB_SCANCODE_8 = $3e ; unused - KB_RAM_START = $7c5c + KB_RAM_START = $7c86 KB_SCANCODE_9 = $46 ; unused + TILEMAP_DEFAULT_BUFFER_ADDRESS = $7a00 VIA_REG_T1C_L = $4 AY_ENV_PERIOD_L = $b - KB_CTRL_DOWN = $2 ; unused + bitmapClearPixel = $eab9 ; unused KB_PAUSE_KEY = $e1 VIA_IO_ADDR_T1L_L = $7ff6 ; unused + KB_CTRL_DOWN = $2 ; unused NES_RIGHT = $1 ; unused - nes2Pressed = $eb04 ; unused - MEM_LEN = $30 + nes2Pressed = $f286 ; unused + MEM_LEN = $32 + bitmapRect = $ec92 ; unused VIA_IO_ADDR_PORT_A = $7ff1 ; unused UART_CTL_WORD_8BIT_2SB = $10 NES_START = $10 ; unused - HBC56_META_TITLE_LEN = $7cb8 - memsetMultiPage = $e10d ; unused + HBC56_META_TITLE_LEN = $7ce2 + memsetMultiPage = $e10d UART_REG = $7f20 - LCD_MODEL = $3240 ; unused + LCD_MODEL = $3240 KB_SCANCODE_SHIFT_LEFT = $12 VIA_IO_ADDR_PORT_B = $7ff0 ; unused isAlNum = $e02a ; unused AY_CHA_AMPL = $8 - LAST_MODULE_RAM_END = $7c9f + LAST_MODULE_RAM_END = $7cc9 TMS_R1_MODE_TEXT = $10 tmsConsoleOut = $e9be TMS9918_REG = $7f11 + BITMAP_RAM_SIZE = $10 + bitmapXorPixel = $eac4 ; unused KB_SCANCODE_NUMPAD_DIVIDE = $ca ; unused DEFAULT_HBC56_INT_VECTOR = $ffe0 VIA_IRQ_BIT = $10 TMS_VRAM_PATT_ADDRESS+2 = $0 + bitmapSetPixel = $eaae KB_SCANCODE_EQUAL = $55 ; unused KB_RELEASE = $f0 tmsInitSpriteTable = $e7c4 ; ? KB_SCANCODE_ARROW_DOWN = $f2 ; unused - UART_RX_BUFFER_BYTES = $2a + LCD_CMD_EXT_GRAPHICS_ADDR = $80 + TILEMAP_TMP_BUF_COL = $7a81 + END_OFFSET = $7b21 + UART_RX_BUFFER_BYTES = $2c + lcdHome = $eda8 ; ? isAlpha = $e018 ayInit = $e158 TMS_VRAM_NAME_ADDRESS2 = $3c00 ; unused TMS9918_RAM = $7f10 - UART_RX_FLAGS = $2b + LCD_CMD_DISPLAY_ON = $4 + UART_RX_FLAGS = $2d AY_R1 = $1 NOTE_FREQ_B8 = 7902.130000000000109139364212751389 ; unused + LCD_DATA = $7f03 KB_STATUS_ADDR = $7f81 AY_R0 = $0 AY_R3 = $3 NOTE_FREQ_F8 = 5587.649999999999636202119290828705 ; unused - kbCheckForScancode = $ec4e + kbCheckForScancode = $f3d0 AY_R2 = $2 NOTE_FREQ_D8 = 4698.630000000000109139364212751389 ; unused TMS_DK_GREEN = $c ; unused @@ -654,10 +820,12 @@ NOTE_FREQ_D0 = 18.350000000000001421085471520200 ; unused NOTE_FREQ_FS7 = 2959.960000000000036379788070917130 ; unused TMS9918_CONSOLE_X = $7b28 + PIX_ADDR = $1e tmsSetPatternTmpAddressBank2 = $e997 ; unused VIA_IO_ADDR_DDR_B = $7ff2 ; unused NOTE_FREQ_F1 = 43.649999999999998578914528479800 ; unused NOTE_FREQ_B3 = 246.939999999999997726263245567679 ; unused + TILEMAP_TILE_SIZE_PX = $7 HBC56_KERNEL_START = $e000 TMS9918_ZP_END = $28 HAVE_AY3891X = $1 @@ -677,13 +845,14 @@ NOTE_FREQ_FS2 = 92.500000000000000000000000000000 ; unused NOTE_FREQ_F4 = 349.230000000000018189894035458565 ; unused NOTE_FREQ_D5 = 587.330000000000040927261579781771 ; unused - LOGO_BUFFER = $3000 ; unused + LOGO_BUFFER = $3000 NOTE_FREQ_B6 = 1975.529999999999972715158946812153 ; unused TMS9918_CONSOLE_SIZE_X = $7b2a KB_SCANCODE_BACKSPACE = $66 ; unused NOTE_FREQ_FS3 = $b9 ; unused NOTE_FREQ_D4 = 293.660000000000025011104298755527 ; unused tmsInit = $e6b2 + TMP_STYLE = $7b23 NOTE_FREQ_F5 = 698.460000000000036379788070917130 NOTE_FREQ_B7 = 3951.070000000000163709046319127083 ; unused KB_SCANCODE_INSERT = $f0 ; unused