; SPDX-License-Identifier: MPL-2.0 ; SPDX-FileCopyrightText: (c) 2025 A.M. Rowsell ; ============================================================ ; ZONE OS main section ; ============================================================ .section "zone", "acrx" .global zone_start .global os_print_vec .global os_getch_vec .global os_outbyte_vec .global os_inbyte_vec .global os_main_loop .set UARTSTATUS, 6 .set UARTDATA, 7 zone_start: ret os_print_vec: ; this takes a character in a and sends it to the UART push af push bc push de ld d, a ld bc, UARTSTATUS $1: in a, (c); get status byte bit 0, a; test bit 0 jr z, $1; jump back if UART not ready ld a, d ld bc, UARTDATA out (c), a; send byte to uart pop de pop bc pop af ret os_getch_vec: ret os_outbyte_vec: ; this takes a byte in a and sends it to port in hl push af push bc push hl ld c, l out (c), a pop hl pop bc pop af ret os_inbyte_vec: ; this gets a byte from port in hl and returns it in a push bc push hl ld c, l in a, (c) pop hl pop bc ret os_main_loop: jp os_main_loop zoneSignon: .string "ZONE OS ver. 0.01" zoneCopyright: .string "(c) A.M. Rowsell, license MPLv2" zonePrompt: .string "z] " ; error messages errorSyntax: .string "Syntax error!" errorTimeout: .string "Command timed out." errorNotFound: .string "Command/file not found." errorHardware: .string "Hardware error!" errorRAMFailed: .string "RAM test failed!" stringTable: .word zoneSignon, zoneCopyright, zonePrompt .word errorSyntax, errorTimeout, errorNotFound .word errorHardware, errorRAMFailed