Retrochallenge 2018/09, 2019/03


September 30 2pm Pacific Time

Kitty OS boots, and outputs on the serial line:

Then switches to the VGA driver, and runs a short program:

I have gotten an interpreted program to find the screen and keyboard in the system main device mux. The program only prints "Hello World", and then enters a loop repeated reading the keyboard and writing the characters to the display. It is the minimal interactive interpreted program sample. It demonstrates the mux device, the chardevices, and interaction between an interpreted program, the interpreter written in assembly, the VGA driver interrupt, the PS2 polling algorithm, and syscalls written in C. Without crashing.

Github Repo

This is the interpreted bytecode program:

ldi a @out_dev
syscall 1   #find device
swp b       #b has the device

ldi a @hello

ldc a  #get character *a to c
swp c # c has ptr, a has char  

#jump to halt if low byte of A is zero
ldi d $00ff
and d
jaz @done

syscall 2	#write reg A to device in B

swp c #get pointer

ldi d 1
add d
jmpr @nextchar

# register B has output device
swp B  # A has output
swp D  # D has output device

ldi a @in_dev
syscall 1 #get input device
swp b  # b as input device

syscall 3 # read a char
#char in a , input in B, output in D

swp b  
#char in b, input in A, output in D

swp d
#char in b, input in D, output in A

swp b  
#char in A, input in D, output in B

syscall 2 #write char

#zero in A, input in D, output in B

swp b

swp d

swp b

jmpr @again

jmpr @halt

string 'scr
byte 0

string 'key
byte 0

string ' 
string 'Hello World
byte 0

And no, this is not running off the SD Card. I didn't get that far. The interpreted program is stored in the AVR Flash, and copied to SRAM, and runs out of SRAM. It is stored in a file called "introm.c". Future versions will find the sdcard in the device list, read the first block, and then run from there. But not yet. Maybe in the next retrochallenge, I will make a game for this computer!

And sometimes it doesn't go to plan! This was a bug I had this morning.

|Newest| . . . |<<Newer| . . . . . . |Older >>| . . . |Oldest|
(view all as one document)