Browse Source

CamelForth ROMWBW first working version

pull/16/head
b1ackmai1er 7 years ago
committed by GitHub
parent
commit
9bc2cb5328
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 47
      Source/HBIOS/Forth/camel80.azm
  2. 2
      Source/HBIOS/Forth/camel80h.azm

47
Source/HBIOS/Forth/camel80.azm

@ -1,7 +1,7 @@
CIODEV_CONSOLE EQU 0D0h
CIOIN EQU 00h ; CHARACTER INPPUT
CIOOUT EQU 01h ; CHARACTER OUTPUT
CIOIST EQU 02h
CIOIN EQU 00h
CIOIST EQU 02h ; CHARACTER INPUT STATUS
BID_BOOT EQU 00h
HB_BNKCALL EQU 0fff9h
@ -51,6 +51,8 @@ HB_BNKCALL EQU 0fff9h
; for interpreter input; TIB at 82h.
; 02 Mar 95 v1.02 changed ALIGN to ALIGNED in
; S" (S"); changed ,BRANCH to ,XT in DO.
; 05 Nov 18 v1.02 Initial ROMWBW HBIOS version.
; b1ackmai1er difficultylevelhigh@gmail.com
; ===============================================
; Macros to define Forth headers
; HEAD label,length,name,action
@ -128,11 +130,10 @@ reset: ld hl,0FDFFh ; HBIOS address, rounded down
push hl
pop iy ; = bottom of user area
ld de,1 ; do reset if COLD returns
; jp tst
jp COLD ; enter top-level Forth word
; Memory map:
; 0080h Terminal Input Buffer, 128 bytes
; Terminal Input Buffer, 128 bytes
; 0A00h Forth kernel = starts after ROMLDR
; ? h Forth dictionary (user RAM)
; EM-200h User area, 128 bytes
@ -266,8 +267,6 @@ dodoes: ; -- a-addr
;C EMIT c -- output character to console
head EMIT,4,EMIT,docode
push AF
PUSH BC
PUSH DE
PUSH HL ; OUTPUT CHARACTER TO CONSOLE VIA HBIOS
LD E,C ; OUTPUT CHAR TO E
@ -276,62 +275,40 @@ dodoes: ; -- a-addr
RST 08 ; HBIOS OUTPUTS CHARACTER
POP HL
POP DE
POP BC
POP AF
pop BC
pop BC ; PUT TOP OF STACK IN BC
next
;
;Z SAVEKEY -- addr temporary storage for KEY?
head savekey,7,SAVEKEY,dovar
SVKY: DW 0
DBG:
push AF
PUSH BC
PUSH DE
PUSH HL ; OUTPUT CHARACTER TO CONSOLE VIA HBIOS
; LD E,'1' ; OUTPUT CHAR TO E
LD C,CIODEV_CONSOLE ; CONSOLE UNIT TO C
LD B,CIOOUT ; HBIOS FUNC: OUTPUT CHAR
RST 08 ; HBIOS OUTPUTS CHARACTER
POP HL
POP DE
POP BC
POP AF
ret
;X KEY? -- f return true if char waiting
head querykey,4,KEY?,docode
; DW LIT,0FFH,LIT,06H,BDOS
; DW DUP,SAVEKEY,CSTORE,EXIT
PUSH BC ; SAVE TOP OF STACK
PUSH DE
PUSH HL ; GET CONSOLE INPUT STATUS VIA HBIOS
LD C,CIODEV_CONSOLE ; CONSOLE UNIT TO C
LD B,CIOIST ; HBIOS FUNC: INPUT STATUS
RST 08 ; HBIOS RETURNS STATUS IN A
LD BC,0000h
LD B,A
OR A
JR Z,key3
; INPUT CHARACTER FROM CONSOLE VIA HBIOS
JR Z,key3 ; INPUT CHARACTER FROM CONSOLE VIA HBIOS
LD C,CIODEV_CONSOLE ; CONSOLE UNIT TO C
LD B,CIOIN ; HBIOS FUNC: INPUT CHAR
RST 08 ; HBIOS READS CHARACTDR
LD B,E
LD C,0
key3: LD HL,SVKY
key3: LD C,0
LD HL,SVKY
LD (HL),B
INC HL
LD (HL),C
POP HL ; RESTORE REGISTERS (AF IS OUTPUT)
POP HL
POP DE
PUSH BC
next
;C KEY -- c get character from keyboard
; BEGIN SAVEKEY C@ 0= WHILE KEY? DROP REPEAT
; SAVEKEY C@ 0 SAVEKEY C! ;
; must use CP/M direct console I/O to avoid echo
; (BDOS function 6, contained within KEY?)
head KEY,3,KEY,docolon
KEY1: DW SAVEKEY,CFETCH,ZEROEQUAL,qbranch,KEY2
DW QUERYKEY,DROP,branch,KEY1

2
Source/HBIOS/Forth/camel80h.azm

@ -1020,7 +1020,7 @@ DOTS2: DW EXIT
DW UINIT,U0,NINIT,CMOVE
; DW LIT,80h,COUNT,INTERPRET
DW XSQUOTE
DB 35,'Z80 CamelForth v1.01 25 Jan 1995'
DB 54,'Z80 CamelForth v1.02 25 Jan 1995, ROMWBW 5 Nov 2018'
DB 0dh,0ah
DW TYPE,ABORT ; ABORT never returns

Loading…
Cancel
Save