From 076a839f1a0c72168b3dfdf8dd4f4cff8c232df7 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Tue, 15 Oct 2019 17:26:05 +0200 Subject: [PATCH] fixed the famous 'SYS 64738', some documentation fixes --- Makefile | 10 +++++----- STATUS.md | 4 ++-- c64/aliases/,aliases_petscii_codes.s | 11 ++++++----- .../{hw_entry_reset.s => fce2.hw_entry_reset.s} | 0 c64/kernal/interrupts/fce2.interop | 5 +++++ c64/kernal/keyboard/scnkey_legacy.s | 5 +++++ 6 files changed, 23 insertions(+), 12 deletions(-) rename c64/kernal/interrupts/{hw_entry_reset.s => fce2.hw_entry_reset.s} (100%) create mode 100644 c64/kernal/interrupts/fce2.interop diff --git a/Makefile b/Makefile index c66d105a..59ec4e96 100644 --- a/Makefile +++ b/Makefile @@ -76,19 +76,19 @@ updatebin: $(STD_TARGET_LIST) # Rules - tools -$(TOOL_PNGPREPARE): src/pngprepare.c Makefile +$(TOOL_PNGPREPARE): src/pngprepare.c @mkdir -p build/tools $(CC) -O2 -Wall -I/usr/local/include -L/usr/local/lib -o $@ $< -lpng -$(TOOL_COMPRESS_TEXT): src/compress_text.c Makefile +$(TOOL_COMPRESS_TEXT): src/compress_text.c @mkdir -p build/tools $(CC) -O2 -Wall -I/usr/local/include -L/usr/local/lib -o $@ $< -lm -build/tools/%: src/%.c Makefile +build/tools/%: src/%.c @mkdir -p build/tools $(CC) -O2 -Wall -o $@ $< -build/tools/%: src/%.cc Makefile +build/tools/%: src/%.cc @mkdir -p build/tools $(CXX) -O2 -Wall -o $@ $< @@ -189,7 +189,7 @@ build/symbols_hybrid.vs: build/target_generic/KERNAL_combined.vs # Rules - platform 'Mega 65' specific -build/newc65.rom: build/kernal_mega65.rom build/basic_mega65.rom build/chargen.rom Makefile +build/newc65.rom: build/kernal_mega65.rom build/basic_mega65.rom build/chargen.rom dd if=/dev/zero bs=4096 count=10 of=build/newc65.rom cat build/basic_mega65.rom build/chargen.rom build/chargen.rom build/kernal_mega65.rom >> build/newc65.rom dd if=/dev/zero bs=65536 count=1 of=build/padding diff --git a/STATUS.md b/STATUS.md index 7b320fe7..347d799b 100644 --- a/STATUS.md +++ b/STATUS.md @@ -109,7 +109,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FF96` | | `TKSA` | DONE | | | `$FF99` | | `MEMTOP` | DONE | | | `$FF9C` | | `MEMBOT` | DONE | | -| `$FF9F` | | `SCNKEY` | PARTIAL | future complete version has compatibility problems | +| `$FF9F` | | `SCNKEY` | DONE | | | `$FFA2` | | `SETTMO` | DONE | | | `$FFA5` | | `ACPTR` | DONE | | | `$FFA8` | | `CIOUT` | DONE | | @@ -141,7 +141,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FFF0` | `$E50A` | `PLOT` | DONE | | | `$FFF3` | | `IOBASE` | DONE | | | `($FFFA)` | | NMI vec | PARTIAL | | -| `($FFFC)` | | RESET vec | PARTIAL | | +| `($FFFC)` | `$FCE2` | RESET vec | PARTIAL | | | `($FFFE)` | | IRQ/BRK vec | PARTIAL | |
diff --git a/c64/aliases/,aliases_petscii_codes.s b/c64/aliases/,aliases_petscii_codes.s index 0c1ac078..077944b4 100644 --- a/c64/aliases/,aliases_petscii_codes.s +++ b/c64/aliases/,aliases_petscii_codes.s @@ -15,8 +15,8 @@ .const KEY_FLAG_SHIFT = %00000001 .const KEY_FLAG_VENDOR = %00000010 .const KEY_FLAG_CTRL = %00000100 -.const KEY_FLAG_ALT = %00001000 // C65 / C128 -.const KEY_FLAG_NO_SCRL = %00100000 // C65 / C128, Open ROMs unofficial +.const KEY_FLAG_ALT = %00001000 // C65 / C128 XXX implement this +.const KEY_FLAG_NO_SCRL = %00100000 // C65 / C128, Open ROMs unofficial XXX implement this // Note - the following PETSCII codes are currently unassigned, can be used for further extensions: @@ -27,18 +27,17 @@ .const KEY_NA = $00 // to indicate that no key is presed -// PETSCII codes for our extended screen editor +// PETSCII codes for our extended screen editor XXX implement these .const KEY_BOTTOM = $02 // CTRL+B - DolphinDOS compatible .const KEY_TAB_FW = $8F // CTRL+>, TAB - Open ROMs unofficial .const KEY_TAB_BW = $80 // CTRL+<, SHIFT+TAB - Open ROMs unofficial -// PETSCII codes for certain C128 and C65 functionalities +// PETSCII codes for certain C128 and C65 functionalities XXX implement these .const KEY_BELL = $07 // C65 / C128, no key .const KEY_ESC = $1B // C65 / C128 -.const KEY_HELP = $10 // C65 / C128, Open ROMs unofficial // PETSCII codes for programmable keys @@ -61,6 +60,8 @@ .const KEY_F13 = $19 // C65, Open ROMs unofficial .const KEY_F14 = $1A // C65, Open ROMs unofficial +.const KEY_HELP = $10 // C65 / C128, Open ROMs unofficial + // PETSCII codes for cursor keys diff --git a/c64/kernal/interrupts/hw_entry_reset.s b/c64/kernal/interrupts/fce2.hw_entry_reset.s similarity index 100% rename from c64/kernal/interrupts/hw_entry_reset.s rename to c64/kernal/interrupts/fce2.hw_entry_reset.s diff --git a/c64/kernal/interrupts/fce2.interop b/c64/kernal/interrupts/fce2.interop new file mode 100644 index 00000000..f9c9ce22 --- /dev/null +++ b/c64/kernal/interrupts/fce2.interop @@ -0,0 +1,5 @@ +System reset routine has to be placed under it's original location due to 'SYS 64738' being extremaly popular to reset the C64, +to the point it went into popular culture. + +https://twitter.com/hashtag/SYS64738?src=hash +https://www.computerhope.com/jargon/s/sys64738.htm diff --git a/c64/kernal/keyboard/scnkey_legacy.s b/c64/kernal/keyboard/scnkey_legacy.s index 6da6c43a..fe25392b 100644 --- a/c64/kernal/keyboard/scnkey_legacy.s +++ b/c64/kernal/keyboard/scnkey_legacy.s @@ -9,6 +9,11 @@ // +// NOTE: The code here is described as legacy, because the algorithm (although working very well) +// requires much more RAM than the original Kernal routine uses; without any form of extended +// RAM available to Open ROMs it will always be a serious compatibility risk. + + #if CONFIG_LEGACY_SCNKEY