From c77469e1a1b7ba90c7013ee37b6c8c120f905435 Mon Sep 17 00:00:00 2001 From: Joppe Blondel Date: Wed, 7 Oct 2026 15:29:26 +0200 Subject: [PATCH] Added bios flush and simple hello command --- apps/basic/basic.asm | 31 +++++++++++++++++++++++++++---- bios.asm | 12 ++++++++++++ bios.inc | 1 + 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/apps/basic/basic.asm b/apps/basic/basic.asm index 9244bbb..71cdd99 100644 --- a/apps/basic/basic.asm +++ b/apps/basic/basic.asm @@ -43,8 +43,8 @@ MC_BIOS_PUTC .EQU BIOS_PUTC MC_BIOS_TRY_GETC .EQU BIOS_TRY_GETC MC_BIOS_GETC .EQU BIOS_GETC -MC_BIOS_FLUSH .EQU 00000H -MC_BIOS_MONITOR .EQU 00000H +MC_BIOS_FLUSH .EQU BIOS_FLUSH +MC_BIOS_MONITOR .EQU BIOS_RAM_START MC_CODE_START .EQU BASIC_RAM_START MC_RAM_START .EQU BASIC_RAM_START + BASIC_ROM_SIZE MC_RAM_END .EQU 0FFFFH @@ -377,6 +377,7 @@ WORDS: .BYTE 'E'+80H,"ND" .BYTE 'L'+80H,"EFT$" .BYTE 'R'+80H,"IGHT$" .BYTE 'M'+80H,"ID$" + .BYTE 'H'+80H,"ELLO" .BYTE 80H ; End of list marker ; KEYWORD ADDRESS TABLE @@ -449,6 +450,7 @@ ZLTH .EQU 0B5H ; < ZSGN .EQU 0B6H ; SGN ZPOINT .EQU 0C7H ; POINT ZLEFT .EQU 0CDH +2 ; LEFT$ +ZHELLO .EQU 0D2H ; ARITHMETIC PRECEDENCE TABLE @@ -1252,7 +1254,19 @@ EXCUTE: CALL GETCHR ; Get key word LD DE,RUNCNT ; Where to RETurn to PUSH DE ; Save for RETurn IFJMP: RET Z ; Go to RUNCNT if end of STMT -ONJMP: SUB ZEND ; Is it a token? +;ONJMP: SUB ZEND ; Is it a token? +ONJMP: + ; Own commands + ; ------------ +CHKHELLO: + CP ZHELLO + JP NZ,STDONJMP + ld BC,HELLO + PUSH BC + jp GETCHR + ; ------------ +STDONJMP: + SUB ZEND ; Is it a token? JP C,LET ; No - try to assign it CP ZNEW+1-ZEND ; END to NEW ? JP NC,SNERR ; Not a key word - ?SN Error @@ -4364,7 +4378,7 @@ JJUMP1: LD IX,-1 ; Flag cold start MONOUT: JP MC_BIOS_PUTC ; output a char -MONITR: ;CALL MC_BIOS_FLUSH +MONITR: CALL MC_BIOS_FLUSH JP MC_BIOS_MONITOR ; Restart (Normally Monitor Start) @@ -4385,5 +4399,14 @@ TSTBIT: PUSH AF ; Save bit mask OUTNCR: CALL OUTC ; Output character in A JP PRNTCRLF ; Output CRLF +HELLO: + RET NZ + PUSH HL + LD HL,HELLOMSG + CALL PRS + POP HL + RET +HELLOMSG: .asciz "Hello!" + .end diff --git a/bios.asm b/bios.asm index 0f4c708..b15f732 100644 --- a/bios.asm +++ b/bios.asm @@ -92,6 +92,8 @@ boot_copy: jp try_getc .org BIOS_PUTS jp puts +.org BIOS_FLUSH + jp flush ; ------------------------------------------------------- ; BIOS ENTRY @@ -435,12 +437,22 @@ puts: ; ------------------------------------------------------- ; Get a byte, block if unavailable +; returns a (byte) ; ------------------------------------------------------- getc: call try_getc jr c,getc ret +; ------------------------------------------------------- +; Wait till full tx buffer is empty +; uses a +; ------------------------------------------------------- +flush: + ld a,(TX_COUNT) + cp 0 + jr nz,flush + ; ------------------------------------------------------- ; Strings ; ------------------------------------------------------- diff --git a/bios.inc b/bios.inc index 04bed92..5b34ce3 100644 --- a/bios.inc +++ b/bios.inc @@ -2,3 +2,4 @@ BIOS_PUTC .equ 0c050h BIOS_GETC .equ 0c053h BIOS_TRY_GETC .equ 0c056h BIOS_PUTS .equ 0c059h +BIOS_FLUSH .equ 0c05ch