diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index a2b21501..c239e9d2 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -14,12 +14,12 @@ on:
jobs:
# This workflow contains a single job called "build"
setup-sdk:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
steps:
- name: Cache sdk
id: cache-sdk
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: |
cc65/**/*
@@ -27,7 +27,8 @@ jobs:
md2hlp/**/*
orix-software/**/*
oricutron/**/*
- key: ${{ secrets.CACHE_ID }}-orix-sdk_
+ bpm/**/*
+ key: ${{ secrets.CACHE_ID }}-orix-sdk
- name: Checkout cc65
if: steps.cache-sdk.outputs.cache-hit != 'true'
@@ -36,6 +37,13 @@ jobs:
repository: cc65/cc65
path: cc65
+ - name: Checkout bpm
+ #if: steps.cache-sdk.outputs.cache-hit != 'true'
+ uses: actions/checkout@v3
+ with:
+ repository: orix-software/bpm
+ path: bpm
+
- name: Checkout orix-sdk
if: steps.cache-sdk.outputs.cache-hit != 'true'
uses: actions/checkout@v2
@@ -72,7 +80,8 @@ jobs:
- name: Prepare environment for oricutron
if: steps.cache-sdk.outputs.cache-hit != 'true'
run: |
- sudo apt-get install -y xvfb libgtk-3-0 libgtk-3-dev libsdl1.2debian libsdl1.2-dev
+ sudo apt-get update
+ sudo apt-get install --fix-missing -y xvfb libgtk-3-0 libgtk-3-dev libsdl1.2debian libsdl1.2-dev
git clone https://github.com/pete-gordon/oricutron.git
cd oricutron && make && pwd && cd .. && ls -l && echo ${GITHUB_WORKSPACE}
echo Timeout oricutron : $secret.TMOUT_ORICUTRON
@@ -94,15 +103,17 @@ jobs:
build:
# The type of runner that the job will run on
needs: setup-sdk
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
outputs:
version: ${{ steps.job_vars.outputs.VERSION }}
repo_name: ${{ steps.job_vars.outputs.REPO_NAME }}
+ bpm_found: ${{ steps.bpm_upload.outputs.BPM_FOUND }}
steps:
- uses: actions/checkout@v2
with:
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
+ submodules: recursive
- name: Set job variables
id: job_vars
run: |
@@ -110,7 +121,7 @@ jobs:
echo "::set-output name=REPO_NAME::${GITHUB_REPOSITORY##*/}"
- name: Install sdk
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: |
cc65/**/*
@@ -118,15 +129,23 @@ jobs:
md2hlp/**/*
orix-software/**/*
oricutron/**/*
- key: ${{ secrets.CACHE_ID }}-orix-sdk_
+ bpm/**/*
+ key: ${{ secrets.CACHE_ID }}-orix-sdk
- name: Prepare environment for project
run: |
- ls -l && ls -l ../
- mv cc65 ../ && mv orix-software ../ && mv orix-sdk ../ && mv md2hlp ../
+ mkdir ~/bin
+ cd bpm && pip install -r requirements.txt && cd ..
+ cp bpm/src/bpm ~/bin
+ chmod 755 ~/bin/bpm && export PATH=$PATH:~/bin
+ mv cc65 ../ && mv orix-software ../ && mv orix-sdk ../ && mv md2hlp ../ && mv bpm ../
- name: Compile project
- run: CC65_HOME=${GITHUB_WORKSPACE}/../cc65 make
+ run: |
+ PATH=$PATH:~/bin
+ bpm --force-update --replace-for-new-project
+ cd src/kernel8 && bpm update && cd ../../
+ CC65_HOME=${GITHUB_WORKSPACE}/../cc65 make
- name: List build directory content
run: ls -lR build
@@ -135,11 +154,10 @@ jobs:
run: |
git clone https://github.com/orix-software/docker-unit-test.git
cd docker-unit-test && bash install.sh ${GITHUB_WORKSPACE} && cd ..
- cp build/usr/share/kernel/kernelsd.rom ${GITHUB_WORKSPACE}/oricutron/roms/kernel.rom
- cat tests/unit_test/xopen.sub > ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT
- cat tests/unit_test/xrm.sub >> ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT
+ CC65_HOME=${GITHUB_WORKSPACE}/../cc65 make build-unit-test
+ CC65_HOME=${GITHUB_WORKSPACE}/../cc65 make prepare-unit-test
cd ${GITHUB_WORKSPACE}/oricutron
- timeout --preserve-status 5 ./xvfb.sh || exit 0
+ timeout --preserve-status 10 ./xvfb.sh || exit 0
- name: Check unit-test
run: |
@@ -147,7 +165,7 @@ jobs:
bash tests/unit_test/verify.sh ${GITHUB_WORKSPACE}/oricutron/sdcard/
- name: Upload Artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: ${{ steps.job_vars.outputs.REPO_NAME }}
path: |
@@ -159,11 +177,9 @@ jobs:
mv ../cc65 . && mv ../orix-software . && mv ../orix-sdk . && mv ../md2hlp .
ls -l
-
-
upload:
needs: build
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
defaults:
run:
shell: bash
@@ -171,6 +187,7 @@ jobs:
hash: ${{ secrets.HASH }}
version: ${{ needs.build.outputs.version }}
repo_name: ${{ needs.build.outputs.repo_name }}
+ BPM_FOUND: ${{ needs.build.outputs.bpm_found }}
steps:
- name: Get branch name
@@ -189,7 +206,7 @@ jobs:
# On pourrait faire l'extraction directement à la racine si VERSION est dans l'artifact
- name: Download Artifact
id: download
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.repo_name }}
path: artifact
diff --git a/.gitignore b/.gitignore
index f9e3f544..c60fd7bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ tmp/
*.log
build.inc
*.bin
+src/kernel8/orixlibs/*
diff --git a/Makefile b/Makefile
index aeeae199..295de0ac 100644
--- a/Makefile
+++ b/Makefile
@@ -4,23 +4,37 @@ CFLAGS=-ttelestrat
ASFLAGS=-ttelestrat
LDFILES=
+FILES_KERNEL7="tmp/xminma.o"
+
+
all : init kernel memmap
-.PHONY : all
+.PHONY : prepare_tmp all
-SOURCE=src/kernel.asm
+prepare_tmp:
+ @mkdir -p tmp/
+KCH395_LIB_VERSION=2025.1
+SOURCE=src/kernel.asm
PROGRAM_NAME=kernel
+ifeq ($(strip $(GITHUB_WORKSPACE)),)
+ WORKSPACE = $(ORICUTRON_PATH)
+else
+ WORKSPACE = $(GITHUB_WORKSPACE)/oricutron/
+endif
+
ifeq ($(CC65_HOME),)
- CC = cl65
- AS = ca65
- LD = ld65
- AR = ar65
+ CL = cl65
+ CC = cc65
+ AS = ca65
+ LD = ld65
+ AR = ar65
else
- CC = $(CC65_HOME)/bin/cl65
- AS = $(CC65_HOME)/bin/ca65
- LD = $(CC65_HOME)/bin/ld65
- AR = $(CC65_HOME)/bin/ar65
+ CL = $(CC65_HOME)/bin/cl65
+ CC = $(CC65_HOME)/bin/cc65
+ AS = $(CC65_HOME)/bin/ca65
+ LD = $(CC65_HOME)/bin/ld65
+ AR = $(CC65_HOME)/bin/ar65
endif
PATH_PACKAGE_ROM=build/usr/share/$(PROGRAM_NAME)/
@@ -35,42 +49,147 @@ init:
@mkdir -p build/usr/src/kernel/
kernel: $(SOURCE)
+ @mkdir -p tmp/
+ @cd src/kernel8 && bpm update && cd ..
+
+ #echo "Building xdebug.lib"
+ #@$(AS) --cpu 6502 -tnone src/functions/xdebug.asm -o tmp/xdebug.o
+
@echo Rom are built in $(PATH_PACKAGE_ROM)
- @echo Build kernelsd.rom for Twilighte board
- @$(AS) --verbose -s -tnone --debug-info -o kernelsd.ld65 -DWITH_SDCARD_FOR_ROOT=1 $(SOURCE) $(ASFLAGS) > output.log
- @$(LD) -C src/kernel.cfg kernelsd.ld65 -m kernelsd.map -DWITH_SDCARD_FOR_ROOT=1 -DWITH_TWILIGHTE_BOARD=1 -Ln kernelsd.sym > output.log
+ @echo "########################################################"
+ @echo "# Build kernelsd.rom for Twilighte board #"
+ @echo "########################################################"
+ @$(AS) --cpu 6502 -tnone src/functions/strings/xminma.asm -o tmp/xminma.o
+ @$(AS) --cpu 6502 -tnone src/functions/bank_mng/switch_to_kernel_extended.s -o tmp/switch_to_kernel_extended.o
+ @$(AS) --cpu 6502 -tnone src/functions/bank_mng/kernel_restore_banking_states.s -o tmp/kernel_restore_banking_states.o
+ @$(AS) --cpu 6502 -tnone src/functions/lib_mng/XBANK_ROUTINE.s -o tmp/xbank_routine.o
+ @$(AS) --cpu 6502 -tnone src/functions/network/init_network.s -o tmp/init_network.o
+ @$(AS) --cpu 6502 -tnone src/functions/bank_mng/search_free_bank.s -o tmp/search_free_bank.o
+ @$(AS) --cpu 6502 -tnone src/functions/bank_mng/kernel_free_bank.s -o tmp/kernel_free_bank.o
+ @$(AS) --cpu 6502 -tnone src/functions/bank_mng/kernel_free_bank_by_pid.s -o tmp/kernel_free_bank_by_pid.o
+ @$(AS) --cpu 6502 -tnone src/functions/network/close_sockets_by_pid.s -o tmp/close_sockets_by_pid.o
+ @$(AS) --cpu 6502 -tnone src/functions/network/xsocket.s -o tmp/xsocket.o
+ @$(AS) --cpu 6502 -tnone src/functions/network/xconnect.s -o tmp/xconnect.o
+ @$(AS) --cpu 6502 -tnone src/functions/network/xsend.s -o tmp/xsend.o
+ @$(AS) --cpu 6502 -tnone src/functions/xloadcharset.asm -o tmp/xloadcharset.o
+ @$(AS) --cpu 6502 -tnone src/functions/charsets/charset.asm -o tmp/charset.o
+
+ @$(AS) --cpu 6502 -tnone src/functions/network/xclose_socket.s -o tmp/xclose_socket.o
+
+
+
+
+
+ @$(AR) r tmp/kernel.lib tmp/xminma.o
+ @$(AR) r tmp/kernel.lib tmp/switch_to_kernel_extended.o
+ @$(AR) r tmp/kernel.lib tmp/kernel_restore_banking_states.o
+ @$(AR) r tmp/kernel.lib tmp/xbank_routine.o
+# @$(AR) r tmp/kernel.lib tmp/charset.o
+# @$(AR) r tmp/kernel.lib tmp/xloadcharset.o
+
+
+
+ @$(AR) r tmp/kernel_bank8.lib tmp/init_network.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/search_free_bank.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/kernel_free_bank.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/kernel_free_bank_by_pid.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/xsocket.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/xconnect.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/xsend.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/xclose_socket.o
+ @$(AR) r tmp/kernel_bank8.lib tmp/close_sockets_by_pid.o
+# @$(AR) r tmp/kernel_bank8.lib tmp/charset.o
+# @$(AR) r tmp/kernel_bank8.lib tmp/xloadcharset.o
+
+ @$(AS) --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65
+ @$(AS) --verbose -s --debug-info --cpu 6502 src/kernel8/src/kernel8.s -o tmp/kernel_bank8.ld65 $(ASFLAGS) > output.log
+ @$(AS) --verbose -s --debug-info -o tmp/kernel_bank0.ld65 -DWITH_SDCARD_FOR_ROOT=1 src/kernel_bank0.s $(ASFLAGS) > output.log
+ @$(AS) --verbose -s --debug-info -o tmp/kernelsd.ld65 -DWITH_SDCARD_FOR_ROOT=1 $(SOURCE) $(ASFLAGS) > output.log
+ @$(LD) -C cfg/kernel.cfg -DWITH_SDCARD_FOR_ROOT=1 tmp/kernelsd.ld65 tmp/kernel_bank0.ld65 tmp/kernel_main_memory.ld65 tmp/kernel.lib tmp/charset.o tmp/xloadcharset.o -Ln tmp/kernelsd.sym -m tmp/memmap.txt -vm || exit 1
@cp kernel.rom kernelsd.rom
- @sed -re 's/al 00(.{4}) \.(.+)$$/\1 \2/' kernelsd.sym| sort > kernelsd2.sym > output.log
+
+ @echo Build kernel bank 8
+ @$(AS) --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_bank0.s -o tmp/kernel_bank0.ld65 --debug-info > memmap.md
+ @$(LD) -C cfg/rom.cfg tmp/kernel_bank8.ld65 tmp/kernel_bank0.ld65 tmp/kernel_main_memory.ld65 tmp/kernel_bank8.lib src/kernel8/orixlibs/ksocket/usr/share/ksocket/2025.1/ksocket.lib src/kernel8/orixlibs/kch395/usr/share/kch395/$(KCH395_LIB_VERSION)/kch395.lib src/kernel8/orixlibs/ch395/usr/share/ch395/2024.4/ch395.lib -o kernel8.rom -Ln tmp/kernel8sd.sym -m tmp/memmap8.txt -vm
+ @cp kernel8.rom $(PATH_PACKAGE_ROM)/
+
+ @#@sed -re 's/al 00(.{4}) \.(.+)$$/\1 \2/' kernelsd.sym| sort > kernelsd2.sym > output.log
@cp kernelsd.rom $(PATH_PACKAGE_ROM)/
- @cp kernelsd.sym $(PATH_PACKAGE_ROM)/
- @cp kernelsd.map $(PATH_PACKAGE_ROM)/
+ @#@cp kernelsd.sym $(PATH_PACKAGE_ROM)/
+ @#@cp kernelsd.map $(PATH_PACKAGE_ROM)/
- @echo Build kernelus.rom for Twilighte board
+ @echo "########################################################"
+ @echo "# Build kernelus.rom for Twilighte board #"
+ @echo "########################################################"
+ @$(AS) --verbose -s --debug-info -o kernel_bank0.ld65 -DWITH_TWILIGHTE_BOARD=1 src/kernel_bank0.s $(ASFLAGS) > output.log
@echo "WITH_TWILIGHTE_BOARD">$(PATH_PACKAGE_ROM)/kernelus.lst
- @$(AS) --verbose -s -tnone --debug-info -o kernelus.ld65 $(SOURCE) $(ASFLAGS) > output.log
- @$(LD) -C src/kernel.cfg kernelus.ld65 -m kernelus.map -DWITH_TWILIGHTE_BOARD=1 -Ln kernelus.sym > output.log
+ @$(AS) --verbose -s --debug-info -o kernelus.ld65 $(SOURCE) $(ASFLAGS) > output.log
+
+compile_cc65:
+ @echo "########################################################"
+ @echo "# Compile C file with cc65 #"
+ @echo "########################################################"
+ @echo "FILE_TO_COMPILE: $(FILE_TO_COMPILE) FINAL_BIN: $(FINAL_BIN)"
+ @echo Build $(FILE_TO_COMPILE) to tmp/$(FINAL_BIN)_1000.s
+ @$(CC) $(CFLAGS) $(FILE_TO_COMPILE) -o tmp/$(FINAL_BIN)_1000.s
+ @echo Build $(FILE_TO_COMPILE) to tmp/$(FINAL_BIN)_2304.s
+ @$(CC) $(CFLAGS) $(FILE_TO_COMPILE) -o tmp/$(FINAL_BIN)_2304.s
+
+ @$(AS) $(CFLAGS) tmp/$(FINAL_BIN)_1000.s -o tmp/$(FINAL_BIN)_1000.o
+ @$(AS) $(CFLAGS) tmp/$(FINAL_BIN)_2304.s -o tmp/$(FINAL_BIN)_2304.o
+
+ @$(LD) $(CFLAGS) tmp/$(FINAL_BIN)_1000.o -o tmp/$(FINAL_BIN)_1000 --start-addr 2048 telestrat.lib
+ @$(LD) $(CFLAGS) tmp/$(FINAL_BIN)_2304.o -o tmp/$(FINAL_BIN)_2304 --start-addr 2304 telestrat.lib
+ @chmod +x dependencies/orix-sdk/bin/relocbin.py3
+ @dependencies/orix-sdk/bin/relocbin.py3 -o tmp/$(FINAL_BIN) -2 tmp/$(FINAL_BIN)_1000 tmp/$(FINAL_BIN)_2304
+
+prepare-unit-test:
+ @cp build/usr/share/kernel/kernelsd.rom ${WORKSPACE}/roms/kernel.rom
+ @cat tests/unit_test/xopen.sub > ${WORKSPACE}/sdcard/ETC/AUTOBOOT
+ @cat tests/file_operations/file_operations.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
+ @cat tests/unit_test/xrm.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
+ @cat tests/unit_test/tail.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
+ @cp tmp/tfseek ${WORKSPACE}/sdcard/BIN
+ cat ${WORKSPACE}/sdcard/ETC/AUTOBOOT
+
+launch-unit-test: build-unit-test prepare-unit-test execute-oricutron
+ @echo "########################################################"
+ @echo "# Launch unit test #"
+ @echo "########################################################"
+
+execute-oricutron:
+ @cp kernelsd.rom ${WORKSPACE}/roms/kernel.rom
+ @cp kernel8.rom ${WORKSPACE}/roms/
+ @cd ${WORKSPACE} && ./oricutron
+
+memmap:
@cp kernel.rom kernelus.rom
@cp kernelus.rom $(PATH_PACKAGE_ROM)/
-unittest:
- $(CC) $(CFLAGS) tests/mkdir.c -o tmkdir
- $(CC) $(CFLAGS) tests/fwrite.c -o tfwrite
+build-unit-test:
+ @$(MAKE) compile_cc65 FILE_TO_COMPILE="tests/file_operations/fseek_test.c" FINAL_BIN="tfseek"
+ @#$(CL) $(CFLAGS) tests/file_operations/mkdir.c -o tmp/tmkdir
+ @$(CL) $(CFLAGS) tests/file_operations/fwrite.c -o tmp/tfwrite
+ @$(CL) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1000 --start-addr 2048
+ @$(CL) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1256 --start-addr 2304
-memmap:
- @$(AS) --verbose -s -tnone --debug-info -o kernel-telestrat.ld65 -DWITH_SDCARD_FOR_ROOT=1 $(SOURCE) $(ASFLAGS) > memmap.md
- @$(LD) -C src/kernel.cfg kernel-telestrat.ld65 -m kernel.map -o kernel-telestrat.ld65.rom -DWITH_ACIA=2 -DWITH_SDCARD_FOR_ROOT=1 -Ln kernel-telestrat.ca.sym
- sh generate_memmap.sh
+ @echo "########################################################"
+ @echo "# Build memmap.md #"
+ @echo "########################################################"
+ @$(AS) --cpu 6502 -DMEMMAP_GENERATE=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65 > memmap.md
+ @#@$(LD) -C cfg/kernel.cfg tmp/kernelsd.ld65 tmp/kernel_bank0.ld65 tmp/kernel_main_memory.ld65 tmp/kernel.lib -m kernelus.map -o kernel-telestrat.ld65.rom -DWITH_ACIA=2 -DWITH_SDCARD_FOR_ROOT=1 -Ln kernel-telestrat.ca.sym
+ @sh generate_memmap.sh
test:
- cp Makefile build/usr/src/kernel/
- cp README.md build/usr/src/kernel/
- cp src/* build/usr/src/kernel/ -adpR
- cp README.md build/usr/share/doc/$(PROGRAM_NAME)/
- ls -l $(HOMEDIR)
- export ORIX_PATH=`pwd`
- sh tools/builddocs.sh
- cd build && tar -c * > ../$(PROGRAM_NAME).tar && cd ..
- filepack $(PROGRAM_NAME).tar $(PROGRAM_NAME).pkg
- gzip $(PROGRAM_NAME).tar
- mv $(PROGRAM_NAME).tar.gz $(PROGRAM_NAME).tgz
+ @cp Makefile build/usr/src/kernel/
+ @cp README.md build/usr/src/kernel/
+ @cp src/* build/usr/src/kernel/ -adpR
+ @cp README.md build/usr/share/doc/$(PROGRAM_NAME)/
+ @ls -l $(HOMEDIR)
+ @export ORIX_PATH=`pwd`
+ @sh tools/builddocs.sh
+ @cd build && tar -c * > ../$(PROGRAM_NAME).tar && cd ..
+ @filepack $(PROGRAM_NAME).tar $(PROGRAM_NAME).pkg
+ @gzip $(PROGRAM_NAME).tar
+ @mv $(PROGRAM_NAME).tar.gz $(PROGRAM_NAME).tgz
diff --git a/README.md b/README.md
index f12ba91c..40e72649 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,63 @@
[](https://github.com/orix-software/kernel/actions/workflows/main.yml)
-# Orix
+# Orix Kernel
## Introduction
-Orix is designed to work with ORICHD (telestrat) and Twilighte card (atmos). See : http://orix.oric.org
-
-Some code is done by Fabrice Broche (60%) and Jede (40%). Anyway, all minitel and FDC routines had been removed
+It's the Orix kernel (in bank 7 and 8) in order to start on twilighte board
Assembler : ca65
CPU : 6502 & 65C02 (but 65C02 not tested)
+# How to compile
+
+Bank 8 (extended) is managed with bpm tool
+
+make
+
+Or for local development
+
+sh run.sh
+
## How to use it ?
This kernel is a set of primitives to displays string, open/close/write files ...
You need at least "shell" bank to use this kernel
-## Build option
+## Documentation
-### Root file on sdcard
+[Kernel Primitives Documentation](https://orix-software.github.io/developer_manual/kernel/primitives/)
+
+### Root filesystem :sdcard
Pass to ca65 command line : -DWITH_SDCARD_FOR_ROOT=1
-or else it will reads en usb key
+or else it will reads in* usb key
-here is the list of available "compile option"
+### Root filesystem : usbdrive
-* CPU_65C02
-* WITH_MULTITASKING
-* WITH_ACIA
-* WITH_DEBUG : In that case, somes primitives send their debug to printer with a help of kdebug ROM.
-* WITH_TWILIGHTE_BOARD
+Remove -DWITH_SDCARD_FOR_ROOT=1 on ca65 command line
+or else it will reads in sdcard
## How does it starts
* Kernel tries to start binary set in his rom label 'str_binary_to_start'
* it allocates a process struct (first malloc)
* and register it in processlist
+
+## Launch unit test (local)
+
+1) Set ORICUTRON_PATH in your shell eg :
+
+ORICUTRON_PATH=/bin/
+export ORICUTRON_PATH
+
+2) make launch-unit-test
+
+
+## Test github action
+
+An docker image in tests/Dockerfile is available to test some stuff into Dockerenvironnement (in order to simulate github action behavior)
+
+docker build --no-cache -t kernelorix .
+
diff --git a/VERSION b/VERSION
index 2cf03e51..89c24c57 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2024.1
\ No newline at end of file
+2025.2
\ No newline at end of file
diff --git a/buildr64.sh b/buildr64.sh
index 48f28de1..a84e51fe 100644
--- a/buildr64.sh
+++ b/buildr64.sh
@@ -1,11 +1,13 @@
#! /bin/bash
#make
-NAME_TO_BUILD=k2023-2.r64
+NAME_TO_BUILD=k2025-1.r64
+
+make
cp ../../shell/develop/shell.rom $NAME_TO_BUILD
cat basicus2.rom >> $NAME_TO_BUILD
cat kernelus.rom >> $NAME_TO_BUILD
-cat ../../empty-rom/empty-rom.rom >> $NAME_TO_BUILD
+cat kernel8.rom >> $NAME_TO_BUILD
cp $NAME_TO_BUILD /mnt/s/devus.r64
# NAME_TO_BUILD2=k2023-1.r64
diff --git a/cfg/kernel.cfg b/cfg/kernel.cfg
new file mode 100644
index 00000000..4d28d653
--- /dev/null
+++ b/cfg/kernel.cfg
@@ -0,0 +1,58 @@
+FEATURES {
+ STARTADDRESS: default = $1000;
+}
+SYMBOLS {
+ __STACKSIZE__: type = weak, value = $0800; # 2k stack
+ __STACKSTART__: type = weak, value = $8000;
+ __ZPSTART__: type = weak, value = $0080;
+}
+MEMORY {
+ ZP: file = "", define = yes, start = __ZPSTART__, size = $001F;
+ MAIN: file = %O, start = %S, size = __STACKSTART__ - __STACKSIZE__ - %S;
+
+ BANK7: type = ro, start = $C000, size = $4000-16, file = "kernel.rom", fill = yes;
+ ORIXVEC7: start = $FFF0, size = 10 , file = "kernel.rom", fill = yes;
+ CPUVEC7: start = $FFFA, size = 6 , file = "kernel.rom", fill = yes;
+ INCL: file = "kernel_inc.inc", start=$0000, size = $FFFF;
+
+ }
+SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ STARTUP: load = MAIN, type = ro, define = yes, optional = yes;
+ LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+ ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+ CODE: load = MAIN, type = rw, define = yes, optional = yes;
+ RODATA: load = MAIN, type = rw, define = yes, optional = yes;
+ DATA: load = MAIN, type = rw, define = yes, optional = yes;
+ BSS: load = MAIN, type = bss, define = yes, optional = yes;
+
+ SIGNATURE: load = MAIN, type = ro, define = yes, optional = yes;
+ INCLUDE: load = INCL, optional = yes;
+ # BANK8: load = BANK8, type = ro;
+ # ORIXVECT8: load = ORIXVEC8, type = ro, define = yes, optional = yes;
+ # CPUVECT8: load = CPUVEC8, type = ro, define = yes, optional = yes;
+
+ BANK7: load = BANK7 , type = ro, define = yes;
+ ORIXVECT7: load = ORIXVEC7, type = ro, define = yes;
+ CPUVECT7: load = CPUVEC7, type = ro, define = yes;
+
+ # BANK0: load = BANK0, type = ro;
+ # ORIXVECT0: load = ORIXVEC0, type = ro, define = yes, optional = yes;
+ # CPUVECT0: load = CPUVEC0, type = ro, define = yes, optional = yes;
+}
+FEATURES {
+ CONDES: type = constructor,
+ label = __CONSTRUCTOR_TABLE__,
+ count = __CONSTRUCTOR_COUNT__,
+ segment = ONCE;
+ CONDES: type = destructor,
+ label = __DESTRUCTOR_TABLE__,
+ count = __DESTRUCTOR_COUNT__,
+ segment = RODATA;
+ CONDES: type = interruptor,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__,
+ segment = RODATA,
+ import = __CALLIRQ__;
+}
+
diff --git a/cfg/kernel_bank8.cfg b/cfg/kernel_bank8.cfg
new file mode 100644
index 00000000..579b6e2a
--- /dev/null
+++ b/cfg/kernel_bank8.cfg
@@ -0,0 +1,82 @@
+FEATURES {
+ STARTADDRESS: default = $C000;
+}
+SYMBOLS {
+ __STACKSIZE__: type = weak, value = $0800; # 2k stack
+ __STACKSTART__: type = weak, value = $8000;
+ __ZPSTART__: type = weak, value = $0080;
+}
+MEMORY {
+ ZP: file = "", define = yes, start = __ZPSTART__, size = $001F;
+ MAIN: file = %O, start = %S, size = $10000 - %S - 16, fill = yes, fillval = $ff;
+
+ BANK8: type = ro, start = $C000, size = $4000-16, file = "kernel8.rom", fill = yes;
+ ORIXVEC: start = $FFF0, size = 10 , file = "kernel8.rom", fill = yes;
+ CPUVEC: start = $FFFA, size = 6 , file = "kernel8.rom", fill = yes;
+}
+SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ STARTUP: load = MAIN, type = ro, optional = yes;
+ LOWCODE: load = MAIN, type = ro, optional = yes;
+ ONCE: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = rw;
+ RODATA: load = MAIN, type = rw;
+ DATA: load = MAIN, type = rw;
+ BSS: load = MAIN, type = bss, define = yes, optional = yes;
+ # BSS: load = MAIN, type = bss, define = yes;
+ SIGNATURE: load = MAIN, type = ro, define = yes, optional = yes;
+ ORIXVECT: load = ORIXVEC, type = ro, define = yes;
+ CPUVECT: load = CPUVEC, type = ro, define = yes;
+ BANK8: load = BANK8 , type = ro, define = yes;
+
+}
+FEATURES {
+ CONDES: type = constructor,
+ label = __CONSTRUCTOR_TABLE__,
+ count = __CONSTRUCTOR_COUNT__,
+ segment = ONCE;
+ CONDES: type = destructor,
+ label = __DESTRUCTOR_TABLE__,
+ count = __DESTRUCTOR_COUNT__,
+ segment = RODATA;
+ CONDES: type = interruptor,
+ label = __INTERRUPTOR_TABLE__,
+ count = __INTERRUPTOR_COUNT__,
+ segment = RODATA,
+ import = __CALLIRQ__;
+}
+
+# FEATURES {
+# STARTADDRESS: default = $C000;
+# }
+# SYMBOLS {
+# # __STACKSIZE__: type = weak, value = $0800; # 2k stack
+# # __STACKSTART__: type = weak, value = $8000;
+# # __ZPSTART__: type = weak, value = $0080;
+# }
+# MEMORY {
+# # ZP: file = "", define = yes, start = __ZPSTART__, size = $001F;
+# MAIN: file = %O, start = %S, size = $4000;
+
+# # BANK8: type = ro, start = $C000, size = $4000-16, file = "kernel8.rom", fill = yes;
+
+# # CPUVEC8: start = $FFFA, size = 6 , file = "kernel8.rom", fill = yes;
+# }
+# SEGMENTS {
+# # ZEROPAGE: load = ZP, type = zp;
+# # STARTUP: load = MAIN, type = ro, define = yes, optional = yes;
+# # LOWCODE: load = MAIN, type = ro, define = yes, optional = yes;
+# # ONCE: load = MAIN, type = ro, define = yes, optional = yes;
+# CODE: load = MAIN, type = ro, define = yes, optional = yes;
+# # RODATA: load = MAIN, type = ro, define = yes, optional = yes;
+# # DATA: load = MAIN, type = ro, define = yes, optional = yes;
+# # BSS: load = MAIN, type = bss, define = yes, optional = yes;
+
+# # SIGNATURE: load = MAIN, type = ro, define = yes, optional = yes;
+
+# # BANK8: load = BANK8, type = ro;
+# # ORIXVECT8: load = ORIXVEC8, type = ro, define = yes, optional = yes;
+# # CPUVECT8: load = CPUVEC8, type = ro, define = yes, optional = yes;
+
+
+# }
diff --git a/cfg/rom.cfg b/cfg/rom.cfg
new file mode 100644
index 00000000..8d82f0be
--- /dev/null
+++ b/cfg/rom.cfg
@@ -0,0 +1,29 @@
+FEATURES {
+ STARTADDRESS: default = $C000;
+}
+
+SYMBOLS {
+ __ZPSTART__: type = weak, value = $0000;
+}
+
+MEMORY {
+ ZP: file = "", define = yes, start = __ZPSTART__, size = $0100 - __ZPSTART__;
+ MAIN: file = %O, start = %S, size = $10000 - %S - 16, fill = yes, fillval = $ff;
+ ORIXVEC: start = $FFF0, size = 10;
+ CPUVEC: start = $FFFA, size = 6;
+}
+
+SEGMENTS {
+ ZEROPAGE: load = ZP, type = zp;
+ ENTRY_TBL: load = MAIN, type = ro, optional = yes;
+ CODE: load = MAIN, type = ro, define = yes;
+ DATA: load = MAIN, type = ro, optional = yes;
+ RODATA: load = MAIN, type = ro, optional = yes;
+ BSS: load = MAIN, type = ro, optional = yes;
+ # INSTRTBL: load = MAIN, type = ro, define = yes;
+ # INSTRTBL2: load = MAIN, type = ro, define = yes;
+ # INSTRJMP: load = MAIN, type = ro, define = yes;
+ SIGNATURE: load = MAIN, type = ro, define = yes, optional = yes;
+ ORIXVECT: load = ORIXVEC, type = ro, define = yes;
+ CPUVECT: load = CPUVEC, type = ro, define = yes;
+}
\ No newline at end of file
diff --git a/dependencies/orix-sdk b/dependencies/orix-sdk
index fe17aca6..a5640e25 160000
--- a/dependencies/orix-sdk
+++ b/dependencies/orix-sdk
@@ -1 +1 @@
-Subproject commit fe17aca694cc68fe05d0cfe9f6977e48da6250f3
+Subproject commit a5640e25fa03be5aaf2e81546eefc61fadf24d62
diff --git a/docs/ADDRESS_READ_BETWEEN_BANK.md b/docs/ADDRESS_READ_BETWEEN_BANK.md
index 5914656c..0f31c7ee 100644
--- a/docs/ADDRESS_READ_BETWEEN_BANK.md
+++ b/docs/ADDRESS_READ_BETWEEN_BANK.md
@@ -1,2 +1 @@
# ADDRESS_READ_BETWEEN_BANK
-* XWSTR0
diff --git a/docs/ADIODB_VECTOR.md b/docs/ADIODB_VECTOR.md
index f36ee75b..4fe86ca8 100644
--- a/docs/ADIODB_VECTOR.md
+++ b/docs/ADIODB_VECTOR.md
@@ -1,5 +1 @@
# ADIODB_VECTOR
-* XWR0
-* XWR0
-* XRD0
-* XRD0
diff --git a/docs/ADSCR.md b/docs/ADSCR.md
index 03c64371..ca795a73 100644
--- a/docs/ADSCR.md
+++ b/docs/ADSCR.md
@@ -1,3 +1 @@
# ADSCR
-* XWR0
-* XWR0
diff --git a/docs/ADSCRH.md b/docs/ADSCRH.md
index 86aad815..942fa1f7 100644
--- a/docs/ADSCRH.md
+++ b/docs/ADSCRH.md
@@ -1,3 +1 @@
# ADSCRH
-* XWR0
-* XWR0
diff --git a/docs/ADSCRL.md b/docs/ADSCRL.md
index aa4acf24..73f37d4b 100644
--- a/docs/ADSCRL.md
+++ b/docs/ADSCRL.md
@@ -1,3 +1 @@
# ADSCRL
-* XWR0
-* XWR0
diff --git a/docs/CURSCR.md b/docs/CURSCR.md
index 70b0283b..ada25841 100644
--- a/docs/CURSCR.md
+++ b/docs/CURSCR.md
@@ -1,3 +1 @@
# CURSCR
-* XWR0
-* XWR0
diff --git a/docs/FLGCUR.md b/docs/FLGCUR.md
index 65721b3d..37d8b462 100644
--- a/docs/FLGCUR.md
+++ b/docs/FLGCUR.md
@@ -1,3 +1 @@
# FLGCUR
-* XWR0
-* XWR0
diff --git a/docs/FLGCUR_STATE.md b/docs/FLGCUR_STATE.md
index bb708158..c81a6d55 100644
--- a/docs/FLGCUR_STATE.md
+++ b/docs/FLGCUR_STATE.md
@@ -1,3 +1 @@
# FLGCUR_STATE
-* XWR0
-* XWR0
diff --git a/docs/KBDKEY.md b/docs/KBDKEY.md
index b76a88df..a39f4793 100644
--- a/docs/KBDKEY.md
+++ b/docs/KBDKEY.md
@@ -1,3 +1 @@
# KBDKEY
-* XRD0
-* XRD0
diff --git a/docs/KBDSHT.md b/docs/KBDSHT.md
index 2cdedca6..6600c050 100644
--- a/docs/KBDSHT.md
+++ b/docs/KBDSHT.md
@@ -1,3 +1 @@
# KBDSHT
-* XRD0
-* XRD0
diff --git a/docs/KEYBOARD_COUNTER.md b/docs/KEYBOARD_COUNTER.md
index b066d624..47628d86 100644
--- a/docs/KEYBOARD_COUNTER.md
+++ b/docs/KEYBOARD_COUNTER.md
@@ -1,3 +1 @@
# KEYBOARD_COUNTER
-* XRD0
-* XRD0
diff --git a/docs/RES.md b/docs/RES.md
index b3a6162e..df271125 100644
--- a/docs/RES.md
+++ b/docs/RES.md
@@ -1,26 +1 @@
# RES
-* _create_file_pointer
-* checking_fp_exists
-* _set_to_value_seek_file
-* kernel_create_process
-* kernel_kill_process
-* kernel_kill_process via XFREE_ROUTINE
-* XDECAY
-* XADRESS
-* XDIVIS
-* XREADBYTES_ROUTINE
-* XPUTCWD_ROUTINE
-* XWRITEBYTES_ROUTINE
-* XFSEEK_ROUTINE
-* XMKDIR_ROUTINE
-* XRM_ROUTINE
-* XOPENDIR
-* XFILLM
-* _XEXEC
-* _XFORK
-* _XFORK via kernel_create_process
-* XMAINARGS_ROUTINE
-* XGETARGV_ROUTINE
-* kernel_try_to_find_command_in_bin_path
-* XOPEN_ROUTINE
-* XFREE_ROUTINE
diff --git a/docs/RESB.md b/docs/RESB.md
index ff316d2a..4d0408ac 100644
--- a/docs/RESB.md
+++ b/docs/RESB.md
@@ -1,20 +1 @@
# RESB
-* checking_fp_exists
-* kernel_create_process
-* ZADCHA
-* XDECAY
-* XDIVIS
-* XCLOSE_ROUTINE
-* XGETCWD_ROUTINE
-* XPUTCWD_ROUTINE
-* XWRITEBYTES_ROUTINE
-* XFSEEK_ROUTINE
-* XOPENDIR
-* compute_path_relative
-* XFILLM
-* _XEXEC
-* _XFORK via kernel_create_process
-* XGETARGV_ROUTINE
-* getFileLength
-* kernel_try_to_find_command_in_bin_path
-* XOPEN_ROUTINE
diff --git a/docs/RESC.md b/docs/RESC.md
index ecd39671..3dec4e03 100644
--- a/docs/RESC.md
+++ b/docs/RESC.md
@@ -1,4 +1 @@
# RESC
-* XOPENDIR
-* compute_path_relative
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/RESD.md b/docs/RESD.md
index b8517004..7935f88c 100644
--- a/docs/RESD.md
+++ b/docs/RESD.md
@@ -1,3 +1 @@
# RESD
-* compute_path_relative
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/RESE.md b/docs/RESE.md
index 0a6aa96e..21d2da98 100644
--- a/docs/RESE.md
+++ b/docs/RESE.md
@@ -1,3 +1 @@
# RESE
-* compute_path_relative
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/RESF.md b/docs/RESF.md
index 07747fd7..3d5fda33 100644
--- a/docs/RESF.md
+++ b/docs/RESF.md
@@ -1,3 +1 @@
# RESF
-* compute_path_relative
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/RESG.md b/docs/RESG.md
index 20efa94e..5d6a0a77 100644
--- a/docs/RESG.md
+++ b/docs/RESG.md
@@ -1,2 +1 @@
# RESG
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/RESH.md b/docs/RESH.md
index b342aeee..b8e0c4c4 100644
--- a/docs/RESH.md
+++ b/docs/RESH.md
@@ -1,2 +1 @@
# RESH
-* kernel_try_to_find_command_in_bin_path
diff --git a/docs/SCRNB.md b/docs/SCRNB.md
index af59abcf..11e62264 100644
--- a/docs/SCRNB.md
+++ b/docs/SCRNB.md
@@ -1,3 +1 @@
# SCRNB
-* XWR0
-* XWR0
diff --git a/docs/TR0.md b/docs/TR0.md
index 042918d4..7e1a8df3 100644
--- a/docs/TR0.md
+++ b/docs/TR0.md
@@ -1,9 +1 @@
# TR0
-* XBINDX
-* XDIVIS
-* XREADBYTES_ROUTINE
-* XFSEEK_ROUTINE
-* XOPENDIR
-* _XEXEC
-* _XFORK
-* XMAINARGS_ROUTINE
diff --git a/docs/TR1.md b/docs/TR1.md
index 62c2e55b..32cc4fad 100644
--- a/docs/TR1.md
+++ b/docs/TR1.md
@@ -1,8 +1 @@
# TR1
-* XBINDX
-* XDIVIS
-|MODIFY:KERNEL_XOPEN_PTR1:XFSEEK_ROUTINE
-* _XEXEC
-* _XFORK
-* XMAINARGS_ROUTINE
-|MODIFY:KERNEL_XOPEN_PTR1:XOPEN_ROUTINE
diff --git a/docs/TR2.md b/docs/TR2.md
index bb21b5f4..383b5b18 100644
--- a/docs/TR2.md
+++ b/docs/TR2.md
@@ -1,3 +1 @@
# TR2
-* XBINDX
-* XMAINARGS_ROUTINE
diff --git a/docs/TR3.md b/docs/TR3.md
index 616a3def..d77aeaac 100644
--- a/docs/TR3.md
+++ b/docs/TR3.md
@@ -1,3 +1 @@
# TR3
-* XBINDX
-* XMAINARGS_ROUTINE
diff --git a/docs/TR4.md b/docs/TR4.md
index 9f102227..168f7b6d 100644
--- a/docs/TR4.md
+++ b/docs/TR4.md
@@ -1,7 +1 @@
# TR4
-* kernel_create_process
-* XBINDX
-* XDECIM
-* XFSEEK_ROUTINE
-* _XFORK via kernel_create_process
-* XMAINARGS_ROUTINE
diff --git a/docs/TR5.md b/docs/TR5.md
index db030728..53692fc1 100644
--- a/docs/TR5.md
+++ b/docs/TR5.md
@@ -1,8 +1 @@
# TR5
-* checking_fp_exists
-* kernel_create_process
-* kernel_kill_process via XFREE_ROUTINE
-* XBINDX
-* XDECIM
-* _XFORK via kernel_create_process
-* XOPEN_ROUTINE
diff --git a/docs/TR6.md b/docs/TR6.md
index 65de9081..ec980260 100644
--- a/docs/TR6.md
+++ b/docs/TR6.md
@@ -1,3 +1 @@
# TR6
-* XDECIM
-* XFSEEK_ROUTINE
diff --git a/docs/TR7.md b/docs/TR7.md
index abdeb0fb..1c56f1a5 100644
--- a/docs/TR7.md
+++ b/docs/TR7.md
@@ -1,7 +1 @@
# TR7
-* XCLOSE_ROUTINE
-* XFSEEK_ROUTINE
-* XMKDIR_ROUTINE
-* XOPENDIR
-* XOPEN_ROUTINE
-* XMALLOC_ROUTINE
diff --git a/docs/i_o_counter.md b/docs/i_o_counter.md
index 7b152055..eac23a23 100644
--- a/docs/i_o_counter.md
+++ b/docs/i_o_counter.md
@@ -1,5 +1 @@
# i_o_counter
-* XWR0
-* XWR0
-* XRD0
-* XRD0
diff --git a/docs/i_o_save.md b/docs/i_o_save.md
index 8c6b1b86..fa56efce 100644
--- a/docs/i_o_save.md
+++ b/docs/i_o_save.md
@@ -1,4 +1 @@
# i_o_save
-* XWR0
-* XWSTR0
-* XWR0
diff --git a/docs/memmap_ram.html b/docs/memmap_ram.html
index 6cedd851..3241dd04 100644
--- a/docs/memmap_ram.html
+++ b/docs/memmap_ram.html
@@ -1,9 +1,9 @@
-
-
-
- Page 0
-
-
+
@@ -37,11 +39,108 @@
vertical-align: middle;
pointer-events: none;
}
+
+
+
+
-
-
- Page 0
+
+
+ Memmap
+Page 0
@@ -277,18 +376,18 @@ Page 0
| RAM |
FREE |
-$2E-$31 |
+$2E-$14 |
|
| RAM |
-ptr1 |
-$32-$33 |
+ADDRESS_READ_BETWEEN_BANK |
+$15-$16 |
2 |
| RAM |
-tmp1 |
+BNKCIB_DOUBLON |
$34-$34 |
1 |
@@ -312,7 +411,7 @@ Page 0
| RAM |
-TIMEUD |
+TIMEUD (used in cc65 clock function) |
$44-$45 |
2 |
@@ -420,7 +519,7 @@ Page 0
-Page 2
+Page 2
@@ -488,8 +587,14 @@ Page 2
| RAM |
FREE |
-$0209-$020F |
-6 |
+$0209-$020C |
+4 |
+
+
+| RAM |
+FLGTEL |
+$020D-$020D |
+1 |
| RAM |
@@ -566,8 +671,8 @@ Page 2
| RAM |
SCRY |
-$0224-$0228 |
-1 |
+$0224-$0227 |
+4 |
| RAM |
@@ -644,8 +749,8 @@ Page 2
| RAM |
SCRTXT |
-$0256-$025C |
-604 |
+$0256-$0260 |
+4 |
| RAM |
@@ -745,12 +850,18 @@ Page 2
| RAM |
-kernel_malloc_free_chunk_size_low |
+kernel_malloc_free_chunk_size |
$02BA-$02C3 |
10 |
| RAM |
+kernel_xmalloc_call |
+$02C4-$02EB |
+39 |
+
+
+| RAM |
FLGRST |
$02EE-$02EE |
1 |
@@ -763,12 +874,6 @@ Page 2
| RAM |
-kernel_xmalloc_call |
-$02C4-$02EB |
-39 |
-
-
-| RAM |
FREE |
$02EC-$02ED |
2 |
@@ -799,7 +904,7 @@ Page 2
-Page 3
+Page 3
@@ -818,7 +923,7 @@ Page 3
-Page 4
+Page 4
@@ -831,13 +936,13 @@ Page 4
| RAM |
-page4 overlay_access |
-$0419-$0436 |
-54 |
+page4 ORIX_VECTOR_READ_VALUE_INTO_RAM_OVERLAY |
+$0411-$0414 |
+3 |
-Page 5&6
+Page 5&6
@@ -850,7 +955,7 @@ Page 5&6
| RAM |
-BUFNOM |
+FREE |
$0517-$0525 |
14 |
@@ -879,76 +984,9 @@ Page 5&6
163 |
-
-Kernel bank 7
-
-
-
-| Type |
-Name |
-Range |
-Size |
-
-
-
-
-| ROM |
-FREE |
-$feea-$fff0 |
-262 |
-
-
-| #Bank 0 |
- |
- |
- |
-
-
-| Type |
-Name |
-Range |
-Size |
-
-
-| -------- |
----------------------------- |
-------- |
------ |
-
-
-| BANK0 |
-BUFBUF |
-$c080-$c0b6 |
-54 |
-
-
-| BANK0 |
-BUFROU |
-$c500-$c54e |
- |
-
-
-| BANK0 |
-TELEMON_KEYBOARD_BUFFER_BEGIN |
-$c5c4-$c680 |
- |
-
-
-| BANK0 |
-XMALLOC (copy from kernel) |
-$fb9c-$fc48 |
- |
-
-
-| BANK0 |
-XFREE (copy from kernel) |
-$fc48-$fecd |
- |
-
-
-
-
-
-
\ No newline at end of file
+
+
+