Skip to content

Commit c52bb21

Browse files
committed
fix xfseek
1 parent 24ac582 commit c52bb21

File tree

22 files changed

+389
-247
lines changed

22 files changed

+389
-247
lines changed

.github/workflows/main.yml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- name: Cache sdk
2121
id: cache-sdk
22-
uses: actions/cache@v2
22+
uses: actions/cache@v3
2323
with:
2424
path: |
2525
cc65/**/*
@@ -120,7 +120,7 @@ jobs:
120120
echo "::set-output name=REPO_NAME::${GITHUB_REPOSITORY##*/}"
121121
122122
- name: Install sdk
123-
uses: actions/cache@v2
123+
uses: actions/cache@v3
124124
with:
125125
path: |
126126
cc65/**/*
@@ -150,11 +150,7 @@ jobs:
150150
run: |
151151
git clone https://github.com/orix-software/docker-unit-test.git
152152
cd docker-unit-test && bash install.sh ${GITHUB_WORKSPACE} && cd ..
153-
cp build/usr/share/kernel/kernelsd.rom ${GITHUB_WORKSPACE}/oricutron/roms/kernel.rom
154-
cat tests/unit_test/xopen.sub > ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT
155-
cat tests/unit_test/xrm.sub >> ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT
156-
#cp mainarg ${GITHUB_WORKSPACE}/oricutron/sdcard/BIN
157-
#cat mainarg >> ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT
153+
make prepare-unit-test
158154
cd ${GITHUB_WORKSPACE}/oricutron
159155
timeout --preserve-status 10 ./xvfb.sh || exit 0
160156

Makefile

Lines changed: 64 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,31 @@ CFLAGS=-ttelestrat
44
ASFLAGS=-ttelestrat
55
LDFILES=
66

7-
all : init kernel memmap unittest
7+
all : init kernel memmap
88
.PHONY : prepare_tmp all
99

1010
prepare_tmp:
1111
@mkdir -p tmp/
1212

1313
KCH395_LIB_VERSION=2025.1
14-
1514
SOURCE=src/kernel.asm
16-
1715
PROGRAM_NAME=kernel
1816

17+
ifeq ($(strip $(GITHUB_WORKSPACE)),)
18+
WORKSPACE = $(ORICUTRON_PATH)
19+
else
20+
WORKSPACE = $(GITHUB_WORKSPACE)/oricutron/
21+
endif
22+
1923
ifeq ($(CC65_HOME),)
20-
CC = cl65
24+
CL = cl65
25+
CC = cc65
2126
AS = ca65
2227
LD = ld65
2328
AR = ar65
2429
else
25-
CC = $(CC65_HOME)/bin/cl65
30+
CL = $(CC65_HOME)/bin/cl65
31+
CC = $(CC65_HOME)/bin/cc65
2632
AS = $(CC65_HOME)/bin/ca65
2733
LD = $(CC65_HOME)/bin/ld65
2834
AR = $(CC65_HOME)/bin/ar65
@@ -41,7 +47,7 @@ init:
4147

4248
kernel: $(SOURCE)
4349
@mkdir -p tmp/
44-
@cd src/kernel8 && bpm update && cd ..
50+
@cd src/kernel8 && bpm update && cd ..
4551
@echo Rom are built in $(PATH_PACKAGE_ROM)
4652
@echo "########################################################"
4753
@echo "# Build kernelsd.rom for Twilighte board #"
@@ -77,41 +83,79 @@ kernel: $(SOURCE)
7783

7884
@$(AS) --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65
7985
@$(AS) --verbose -s -tnone --debug-info --cpu 6502 -tnone src/kernel8/src/kernel8.s -o tmp/kernel_bank8.ld65 $(ASFLAGS) > output.log
80-
@$(AS) --verbose -s -tnone --debug-info -o kernel_bank0.ld65 -DWITH_SDCARD_FOR_ROOT=1 src/kernel_bank0.s $(ASFLAGS) > output.log
81-
@$(AS) --verbose -s -tnone --debug-info -o kernelsd.ld65 -DWITH_SDCARD_FOR_ROOT=1 $(SOURCE) $(ASFLAGS) > output.log
86+
@$(AS) --verbose -s -tnone --debug-info -o tmp/kernel_bank0.ld65 -DWITH_SDCARD_FOR_ROOT=1 src/kernel_bank0.s $(ASFLAGS) > output.log
87+
@$(AS) --verbose -s -tnone --debug-info -o tmp/kernelsd.ld65 -DWITH_SDCARD_FOR_ROOT=1 $(SOURCE) $(ASFLAGS) > output.log
88+
@$(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 -Ln tmp/kernelsd.sym -m tmp/memmap.txt -vm
89+
@cp kernel.rom kernelsd.rom
8290

8391
@$(AS) --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_bank0.s -o tmp/kernel_bank0.ld65 --debug-info > memmap.md
8492
@$(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
8593

8694

87-
@cp kernel.rom kernelsd.rom
88-
#@sed -re 's/al 00(.{4}) \.(.+)$$/\1 \2/' kernelsd.sym| sort > kernelsd2.sym > output.log
95+
@#@sed -re 's/al 00(.{4}) \.(.+)$$/\1 \2/' kernelsd.sym| sort > kernelsd2.sym > output.log
8996
@cp kernelsd.rom $(PATH_PACKAGE_ROM)/
90-
#@cp kernelsd.sym $(PATH_PACKAGE_ROM)/
91-
#@cp kernelsd.map $(PATH_PACKAGE_ROM)/
97+
@#@cp kernelsd.sym $(PATH_PACKAGE_ROM)/
98+
@#@cp kernelsd.map $(PATH_PACKAGE_ROM)/
9299

93100
@echo "########################################################"
94101
@echo "# Build kernelus.rom for Twilighte board #"
95102
@echo "########################################################"
96103
@$(AS) --verbose -s -tnone --debug-info -o kernel_bank0.ld65 -DWITH_TWILIGHTE_BOARD=1 src/kernel_bank0.s $(ASFLAGS) > output.log
97104
@echo "WITH_TWILIGHTE_BOARD">$(PATH_PACKAGE_ROM)/kernelus.lst
98105
@$(AS) --verbose -s -tnone --debug-info -o kernelus.ld65 $(SOURCE) $(ASFLAGS) > output.log
99-
@$(LD) -C cfg/kernel.cfg tmp/kernelsd.ld65 tmp/kernel_bank0.ld65 tmp/kernel_main_memory.ld65 tmp/kernel.lib -m kernelus.map -DWITH_TWILIGHTE_BOARD=1 -Ln kernelus.sym > output.log
106+
107+
108+
109+
compile_cc65:
110+
@echo "########################################################"
111+
@echo "# Compile C file with cc65 #"
112+
@echo "########################################################"
113+
@echo "FILE_TO_COMPILE: $(FILE_TO_COMPILE) FINAL_BIN: $(FINAL_BIN) "
114+
@$(CC) $(CFLAGS) $(FILE_TO_COMPILE) -o tmp/$(FINAL_BIN)_1000.s
115+
@$(CC) $(CFLAGS) $(FILE_TO_COMPILE) -o tmp/$(FINAL_BIN)_2304.s
116+
117+
@$(AS) $(CFLAGS) tmp/$(FINAL_BIN)_1000.s -o tmp/$(FINAL_BIN)_1000.o
118+
@$(AS) $(CFLAGS) tmp/$(FINAL_BIN)_2304.s -o tmp/$(FINAL_BIN)_2304.o
119+
120+
@$(LD) $(CFLAGS) tmp/$(FINAL_BIN)_1000.o -o tmp/$(FINAL_BIN)_1000 --start-addr 2048 telestrat.lib
121+
@$(LD) $(CFLAGS) tmp/$(FINAL_BIN)_2304.o -o tmp/$(FINAL_BIN)_2304 --start-addr 2304 telestrat.lib
122+
@dependencies/orix-sdk/bin/relocbin.py3 -o tmp/$(FINAL_BIN) -2 tmp/$(FINAL_BIN)_1000 tmp/$(FINAL_BIN)_2304
123+
124+
prepare-unit-test:
125+
@cp build/usr/share/kernel/kernelsd.rom ${WORKSPACE}/roms/kernel.rom
126+
@cat tests/unit_test/xopen.sub > ${WORKSPACE}/sdcard/ETC/AUTOBOOT
127+
@cat tests/file_operations/file_operations.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
128+
@cat tests/unit_test/xrm.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
129+
@cat tests/unit_test/tail.sub >> ${WORKSPACE}/sdcard/ETC/AUTOBOOT
130+
@cp tmp/tfseek ${WORKSPACE}/sdcard/BIN
131+
cat ${WORKSPACE}/sdcard/ETC/AUTOBOOT
132+
133+
launch-unit-test: build-unit-test prepare-unit-test execute-oricutron
134+
@echo "########################################################"
135+
@echo "# Launch unit test #"
136+
@echo "########################################################"
137+
138+
execute-oricutron:
139+
@cp kernelsd.rom ${WORKSPACE}/roms/kernel.rom
140+
@cp kernel8.rom ${WORKSPACE}/roms/
141+
@cd ${WORKSPACE} && ./oricutron
142+
143+
memmap:
100144
@cp kernel.rom kernelus.rom
101145
@cp kernelus.rom $(PATH_PACKAGE_ROM)/
102146

103-
unittest:
104-
@$(CC) $(CFLAGS) tests/mkdir.c -o tmp/tmkdir
105-
@$(CC) $(CFLAGS) tests/fwrite.c -o tmp/tfwrite
106-
@$(CC) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1000 --start-addr 2048
107-
@$(CC) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1256 --start-addr 2304
147+
build-unit-test:
148+
@$(MAKE) compile_cc65 FILE_TO_COMPILE="tests/file_operations/fseek_test.c" FINAL_BIN="tfseek"
149+
@#$(CL) $(CFLAGS) tests/file_operations/mkdir.c -o tmp/tmkdir
150+
@$(CL) $(CFLAGS) tests/file_operations/fwrite.c -o tmp/tfwrite
151+
@$(CL) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1000 --start-addr 2048
152+
@$(CL) $(CFLAGS) tests/unit_test/mainarg.s -I dependencies/orix-sdk/macros/ -o tmp/1256 --start-addr 2304
108153

109-
memmap:
110154
@echo "########################################################"
111155
@echo "# Build memmap.md #"
112156
@echo "########################################################"
113157
@$(AS) --cpu 6502 -DMEMMAP_GENERATE=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65 > memmap.md
114-
#@$(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
158+
@#@$(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
115159
@sh generate_memmap.sh
116160

117161
test:

README.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
[![build](https://github.com/orix-software/kernel/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/orix-software/kernel/actions/workflows/main.yml)
22

3-
# Orix
3+
# Orix Kernel
44

55
## Introduction
66

7-
Orix is designed to work with ORICHD (telestrat) and Twilighte board (atmos). See : http://orix.oric.org
8-
9-
Some code is done by Fabrice Broche (50%) and Jede (50%). Anyway, all minitel and FDC routines had been removed
7+
It's the Orix kernel (in bank 7 and 8) in order to start on twilighte board
108

119
Assembler : ca65
1210
CPU : 6502 & 65C02 (but 65C02 not tested)
@@ -31,14 +29,28 @@ You need at least "shell" bank to use this kernel
3129

3230
[Kernel Primitives Documentation](https://orix-software.github.io/developer_manual/kernel/primitives/)
3331

34-
### Root file on sdcard
32+
### Root filesystem :sdcard
3533

3634
Pass to ca65 command line : -DWITH_SDCARD_FOR_ROOT=1
37-
or else it will reads en usb key
35+
or else it will reads in* usb key
36+
37+
### Root filesystem : usbdrive
38+
39+
Remove -DWITH_SDCARD_FOR_ROOT=1 on ca65 command line
40+
or else it will reads in sdcard
3841

3942
## How does it starts
4043

4144
* Kernel tries to start binary set in his rom label 'str_binary_to_start'
4245
* it allocates a process struct (first malloc)
4346
* and register it in processlist
4447

48+
## Launch unit test (local)
49+
50+
1) Set ORICUTRON_PATH in your shell eg :
51+
52+
ORICUTRON_PATH=/bin/
53+
export ORICUTRON_PATH
54+
55+
2) make launch-unit-test
56+

0 commit comments

Comments
 (0)