Added bios flush and simple hello command

This commit is contained in:
Joppe Blondel
2026-10-07 15:29:26 +02:00
parent 6454c1d978
commit c77469e1a1
3 changed files with 40 additions and 4 deletions
+27 -4
View File
@@ -43,8 +43,8 @@
MC_BIOS_PUTC .EQU BIOS_PUTC MC_BIOS_PUTC .EQU BIOS_PUTC
MC_BIOS_TRY_GETC .EQU BIOS_TRY_GETC MC_BIOS_TRY_GETC .EQU BIOS_TRY_GETC
MC_BIOS_GETC .EQU BIOS_GETC MC_BIOS_GETC .EQU BIOS_GETC
MC_BIOS_FLUSH .EQU 00000H MC_BIOS_FLUSH .EQU BIOS_FLUSH
MC_BIOS_MONITOR .EQU 00000H MC_BIOS_MONITOR .EQU BIOS_RAM_START
MC_CODE_START .EQU BASIC_RAM_START MC_CODE_START .EQU BASIC_RAM_START
MC_RAM_START .EQU BASIC_RAM_START + BASIC_ROM_SIZE MC_RAM_START .EQU BASIC_RAM_START + BASIC_ROM_SIZE
MC_RAM_END .EQU 0FFFFH MC_RAM_END .EQU 0FFFFH
@@ -377,6 +377,7 @@ WORDS: .BYTE 'E'+80H,"ND"
.BYTE 'L'+80H,"EFT$" .BYTE 'L'+80H,"EFT$"
.BYTE 'R'+80H,"IGHT$" .BYTE 'R'+80H,"IGHT$"
.BYTE 'M'+80H,"ID$" .BYTE 'M'+80H,"ID$"
.BYTE 'H'+80H,"ELLO"
.BYTE 80H ; End of list marker .BYTE 80H ; End of list marker
; KEYWORD ADDRESS TABLE ; KEYWORD ADDRESS TABLE
@@ -449,6 +450,7 @@ ZLTH .EQU 0B5H ; <
ZSGN .EQU 0B6H ; SGN ZSGN .EQU 0B6H ; SGN
ZPOINT .EQU 0C7H ; POINT ZPOINT .EQU 0C7H ; POINT
ZLEFT .EQU 0CDH +2 ; LEFT$ ZLEFT .EQU 0CDH +2 ; LEFT$
ZHELLO .EQU 0D2H
; ARITHMETIC PRECEDENCE TABLE ; ARITHMETIC PRECEDENCE TABLE
@@ -1252,7 +1254,19 @@ EXCUTE: CALL GETCHR ; Get key word
LD DE,RUNCNT ; Where to RETurn to LD DE,RUNCNT ; Where to RETurn to
PUSH DE ; Save for RETurn PUSH DE ; Save for RETurn
IFJMP: RET Z ; Go to RUNCNT if end of STMT 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 JP C,LET ; No - try to assign it
CP ZNEW+1-ZEND ; END to NEW ? CP ZNEW+1-ZEND ; END to NEW ?
JP NC,SNERR ; Not a key word - ?SN Error 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 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) 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 OUTNCR: CALL OUTC ; Output character in A
JP PRNTCRLF ; Output CRLF JP PRNTCRLF ; Output CRLF
HELLO:
RET NZ
PUSH HL
LD HL,HELLOMSG
CALL PRS
POP HL
RET
HELLOMSG: .asciz "Hello!"
.end .end
+12
View File
@@ -92,6 +92,8 @@ boot_copy:
jp try_getc jp try_getc
.org BIOS_PUTS .org BIOS_PUTS
jp puts jp puts
.org BIOS_FLUSH
jp flush
; ------------------------------------------------------- ; -------------------------------------------------------
; BIOS ENTRY ; BIOS ENTRY
@@ -435,12 +437,22 @@ puts:
; ------------------------------------------------------- ; -------------------------------------------------------
; Get a byte, block if unavailable ; Get a byte, block if unavailable
; returns a (byte)
; ------------------------------------------------------- ; -------------------------------------------------------
getc: getc:
call try_getc call try_getc
jr c,getc jr c,getc
ret ret
; -------------------------------------------------------
; Wait till full tx buffer is empty
; uses a
; -------------------------------------------------------
flush:
ld a,(TX_COUNT)
cp 0
jr nz,flush
; ------------------------------------------------------- ; -------------------------------------------------------
; Strings ; Strings
; ------------------------------------------------------- ; -------------------------------------------------------
+1
View File
@@ -2,3 +2,4 @@ BIOS_PUTC .equ 0c050h
BIOS_GETC .equ 0c053h BIOS_GETC .equ 0c053h
BIOS_TRY_GETC .equ 0c056h BIOS_TRY_GETC .equ 0c056h
BIOS_PUTS .equ 0c059h BIOS_PUTS .equ 0c059h
BIOS_FLUSH .equ 0c05ch