Fig-Forth 8080 Ver 11
Fig-Forth 8080 Ver 11
Fig-Forth 8080 Ver 11
RELEASE 1.1
AND
September 1979
This release of 8080 fig-FORTH has been integrated with the CP/M
operating system. This is a convenience to users, but NOT a requirement of
Forth. The previous FIGreleaseoperated in 'native mode' with a
Northstar disk. Non-CP/M users may patch the terminal inlout and
disk word R/W per the Installation Manual.
3) LOOP and +LOOP now work according to the glossary, i.e. indexes
may be negative and +LOOPS increment may be negative.
8) < now works correctly even of the difference between the compared
values is greater than 32,767.
10) This disc interface now matches the FIG model. As listed, i t uses
CP/M BDOS service routines for single and double density 8" diskettes.
It is properly parameterized so that the #Bytes/Sector, buffer size,
and number of screens may be changed with assembly equates.
11) All nontrivial CODE words (in assembly language) are now commented.
A list of assembly language labels is included. If you have entered
8080 fig-FORTH Release 1.0, this list will serve as a check list for your
updating. In this list, 'fixed' means an error was corrected. 'changed'
means some improvement was made. Changes preceeded bv '*' are manditorv.
2
FORTH INTEREST GROUP PO. BOX 1105 * - * e * San Carlos, Ca. 94070
INSTALLATION INSTRUCTIONS
Memory c o n f i g u r a t i o n :
--- n
A c o n s t a n t r e t u r n i n g t h e number of d i s k b u f f e r s a l l o c a t e d .
For
t h e d i s k 1-0 r o u t i n e s t o work c o r r e c t l y #BUF must b e g r e a t e r t h a n 1.
nlow n h i g h a d d r ---
32 b i t s t o r e . n h i g h i s s t o r e d a t a d d r ; nlow i s s t o r e d a t addr+2.
a d d r --- nlow n h l g h
32 b i t f e t c h . nhigh is f e t c h e d from addr; nlow i s f e t c h e d f r o m
addr+2.
22 nl --- n2 n l n2 n l
D u p l i c a t e s t h e t o p two v a l u e s on t h e s t a c k . E q u i v a l e n t t o OVER OVER.
--- n
C o n s t a n t l e a v i n g t h e number of c h a r a c t e r s p e r l i n e ; u s e d by t h e
editor.
DSNSITY --- a d d r
A v a r i a b l e u s e d by t h e d i s k i n t e r f a c e .
0 = single density; 1 = double density.
D I SK-ERROR --- a d d r
A v a r i a b l e u s e d by t h e d i s k i n t e r f a c e , c o n t a i n i n g t h e d i s k s t a t u s
f o r the l a s t s e c t o r read o r written. 0 means no e r r o r .
DRIVE - -- a d d r
A v a r i a b l e u s e d by d i s k i n t e r f a c e , c o n t a i n i n g t h e d i s k d r i v e
number ( 0 t o MXDRV) u s e d o n t h e l a s t s e c t o r r e a d o r w r i t t e n .
FLUSH
W r i t e a l l UPDATEd d i s k b u f f e r s t o d i s k . Should b e u s e d a f t e r
e d i t i n g , b e f o r e d i s m o u n t i n g a d i s k , o r b e f o r e e x i t i n g FORTH.
A F o r t h 'no o p e r a t i o n ' .
b port# ---
8080 o r 2-80 1-0 p o r t s t o r e . Outputs b y t e b t o port#.
port# --- b
8080 o r 2-80 1-0 p o r t f e t c h . I n p u t s b y t e b from p o r t # .
--- addr
Leaves t h e c u r r e n t v a l u e i n t h e r e t u r n s t a c k p o i n t e r r e g i s t e r .
--- addr
A v a r i a b l e u s e d by t h e d i s k i n t e r f a c e , c o n t a i n i n g t h e s e c t o r number
last r e a d o r w r i t t e n r e l a t i v e t o t h e l a s t d r i v e used.
SEC-WRITE
W r i t e s a d i s k - s e c t o r (BPS b y t e s ) f r o m memory. A l l p a r a m e t e r s must
h a v e ' b e e n s e t by SET-DRIVE and SET-10. The s t a t u s on c o m p l e t i o n
i s s t o r e d i n DISK-ERROR.
SET-DRIVE
A CP/?f s e r v i c e c a l l which makes s u b s e q u e n t d i s k r e a d s and w r i t e s u s e
t h e d r i v e d e s i g n a t e d i n DRIVE. T&SCALC i s u s u a l l y u s e d t o s e t
DRIVE and ca1.l SET-DRIVE. 0 = f i r s t d r i v i t o MXDRV
SET-10
A CP/M s e r v i c e c a l l which makes s u b s e q u e n t d i s c r e a d s and w r i t e s
u s e t h e d r i v e l a s t s e t by SET-DRIVE, t h e memory a d d r e s s i n v a r i a b l e
USE, t h e s e c t o r number i n SEC, and t h e t r a c k number i n TRACK.
T6SCALC i s u s u a l l y u s e d t o set t h e s e v a r i a b l e s .
T&SCALC II ---
T r a c k & Sccror and d r i v e c a l c u l a t i o n f o r d i s k 1 0 . n i s t h e
t o t n i s e c t o r d i s p a c e m e n t from t h e f i r s t l o g i c a l d r i v e t o t h e
desired sector.
n = ( b l o c k / / + OFFSET) * SEC/BLK
The c o r r e s p o n d i n g d r i v e , t r a c k , and s e c t o r numbers a r e c a l c u l a t e d .
I f Lhe d r i v c number i s d i f f e r e n t from t h e c o n t e n t s of D R I V E , t h e new
d r i v e rlumser i s s t o r e d i n D R I V E and SET-DRIVE i s e x e c u t e d .
TRACK -- - addr
A v a r i a b l e u s e d by d i s k 1-0. C o n t a i n s t h e t r a c k number i a s t
read or w r l t t e n r e l a t i v e t o t h e c u r r e n t drive.
u l u2 --- f
Leave t h e b o o l e a n v a l u e of a n u n s i g n e d l e s s - t h a n comparison. Leaves
f = 1 f o r u l < u2; o t h e r w i s e l e a v e s 0. T h i s f u n c t i o n must be
u s e d when comparing memory a d d r e s s e s . u l and u2 a r e u n s i g n e d
16 bit i n t e g e r s .
FORTH INTEREST GROUP a - e e - PO. Box 1105 e e = o * San Carlos, Ca. 94070
C P / H MACRO ASSEM 2.0 #001 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
TITL.~! '8080 FIG-FORT11 1.1 VERSION A0 15SEP79'
FIG-FORTH RELEASE 1.1 FOR THE 8080 PROCESSOR
IMPLEMENTATION BY:
J O 9 N CASSADY
339 1 5 T H STREET
OAKLAND,CA 94612
ON 790528
MODIFIED BY:
KTM HARRIS
ACKNOWLEDGEMENTS :
GEORGE FLAMMER
BOBT. D . VILLWOCK
7
-.----.--11--1.1----1-------1--------.-----------------------
3
.".------
9 ANDD AND
9 CSPP CSP
9 ELSEE ELSE
3 E13111) END
9 END I F F END I F
s EUSEE ERASE
J T DO 1
7 1FE; I F
9 INPI' IN
3 MODD MOD
)I om OR
I OI!Z'r OUT
t Rk 13
> RPP RP
Y SUUB SUB
5 XORR XOR
LEE ALSO:
KELKASE & VERSION NIIMBERS
A S C I I ClL4RACTER EQUATES
MEMORY ALLOCATION
D I S K INTERFACE
CONSOLE & P R I N T E R INTERFACE
CP/!.? m C R @ ASSEM 2 - 0 f002 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
.----------------------------------------------------------
9
, MEMORY ALLOCATION
7
PAGE
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 191 VERSIOE A0 15SEP79
3 TMPLEMENTATION
9 ATTRIBUTES
9
PAGE
CP/M MACRO ASSEM 2 . 0 #004 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
.------------------------------------------------------
9
*
Y FORTH REGISTERS
9
9
----- ---- ........................
9 IP BC SHOULD BE PRESERVED ACROSS
9 FORTH WORDS
9 W DE SOMETIMES OUTPUT FROM NEXT
9 MAY B E ALTERED BEFORE JMP'ING TO NEXT
3 I N P U T ONLY WHEN 'DPUSH' CALLED
9 SP SP SHOULD BE USED ONLY A S DATA STACK
9 ACROSS FORTH WORDS
9 MAY B E USED WITHIN FORTH WORDS
* IF RESTORED BEFORE 'NEXT'
9 NEVER OUTPUT FROM NEXT
9 I N P U T ONLY WHEN 'HPUSH' CALLED
*
UP DW INITRO ; USER AREA POINTER
RPP DW INITRO ; RETURN STACK POINTER
9
.------------------------------------------------------
9
9 COMMENT CONVENTIONS:
PAGE
CP/M MACRO ASSEM 2.0 /I005 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
.---------------------------------------------------
Y
7 DEBUG SUPPORT
7
Y TO USE:
s (1) SET 'BIP' TO IP VALUE TO ‘UT, CANNOT BE CFA
9 (2) S E T MONITOR'S BREAKPOINT PC TO 'BREAK'
7 OR PATCH 'HLT' INSTR. THERE
7 (3 PATCH A .'TMP TNEXT' AT 'NEXT'
Y WHEN ( I P ) = ( B I P ) CPU WILL HALT
Y
...................................................
Y
PAGE
CP/M MACRO ASSEM 2 . 0 #006 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
FORTH DICTIONARY
9 DICTIONARY FORMAT:
9
9 BYTE
* ADDRESS NAME CONTENTS
* ------- ----
9 ( MSB=1
9 ( PrPRECEDENCE B I T
9 ( S=SMUDGE BIT
9 NFA NAME F I E L D < NAME LENGTH
Y MSB=O, NAME'S I S T CHAR
9
9
0150 83 DPO: DB 83H ; LIT
0151 4 C 4 9 DB 'LI'
0153 D 4 DB 'T0+80H
0154 OGOO DW 0 ; (LFA)=O MARKS END O F DICTIONARY
0156 5801 LIT DW $+2 ; ( S l ) <- ( ( I P ) )
0158 OA LDAX B ; (HL) <- ( ( I P ) ) = LITERAL
0159 03 INX B ; ( I P ) <- ( I P ) + 2
015A 6F MOV LYA ; LB
015H OA LDAX B ; HB
015C: 03 INX B
015D 67 MOV H9A
015E C 3 4 4 0 1 JMP HPUSH ; ( S l ) <- (HL)
0161 8 7 DB 8M ; EXECUTE
0162 4 5 5 8 4 5 4 3 5 5 DB 'EXECUT'
9168 C 5 DB 'E'+80H
0169 5001 DW LIT-6
016B 6D01 EXEC DW $+2
016n E l POP H ; (HL) <- ( S l ) = CFA
016E C34B01 JMP NEXT 1
DB 86H ; BRANCH
DB 'BRANC'
DB 'H0+80H
DW EXEC-om
BRAN DW $+2 ; ( I P ) <- ( 1 P ) + ( ( I P ) )
BRAN1 MOV HYB ; (HL) <- (IP)
MOV L, c
MOV E,M ; (DE) <- ( ( I P ) ) BRANCH OFFSET
CP/M MACRO ASSEM 2 . 0 8007 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
0 1 7 F 23 INX H
0 1 8 0 56 MOV D,M
0181 2 B DCX H
0182 1 9 DAB D ; (HL) <- (HL) + ( ( I P ) )
0183 4D MOV C,L ; ( I F ) <- (HL)
0184 44 MOV 13 ,H
0185 C 3 4 5 0 1 JMP NEXT
9
DB 8 7H ; (+LOOP)
DB ' (+LOOP'
DB ') '+80H
DW XLOOP-9
DW $+2
POP D ; (DE) <- I N C R
JMP no01
DB 81H ; I
DB 'I '+80H
DW XDO- 7
DW $+2 ;(Sl) <- ( R 1 ) , (Rl) UNCHANGED
LHLD RPP
MOV E,M ; (DE) <- ( R 1 )
INX H
MOV D,M
PUSH D ; (SI) <- (DE)
JMP NEXT
DB 85H ; DIGIT
DB 'DIGI'
DB 'T'+80H
DW IDO-4
DIGIT DW $+2
POP H ; (L) <- ( S 1 ) L B = A S C I I CHR TO BE
t CONVERTED
POP ; (DE) <- (S2) = BASE VALUE
MOV
SUI ; I F CHR > "0"
m
CP/M MACRO ASSEM 2.0 to09 8080 FIG-FORTH 1.1 V E R S I O E A 0 1 5 S E P 7 9
0 2 2 9 FEOA CPI OAH ; AND I F CHR > "9"
02LB FA3502 JM DIG11
022E D607 SUI 7
0 2 3 0 FEOA CP I OAH ; AND I F CHR >= "A,"
0 2 3 2 FA4002 JM DIG12
9 ; THEN V A L I D NUMERIC OR ALPHA CHR
0 2 3 5 BD D I G 11 CMP L ; I F < BASE VALUE
0236 F24002 JP DIG12
Y ; THEN V A L I D D I G I T CHR
0239 5F MOV E,A ; ( S 2 ) <- ( D E ) = CONVERTED D I G I T
023A 210100 LXI H, 1 ; ( S 1 ) <- TRUE
023D C34301 JMP DPUSH
9 ; E L S E I N V A L I D D I G I T CHR
0 2 4 0 6C DIG12 MOV L,B ; (HL) <- F A L S E
0241 C34401 JMP HPUSH ; ( S l ) C- F A L S E
3
84H ; EMIT
EMI'
'T'f 8 0 H
ENCL-OAH
DOCOL
PEMIT
ONE, OUTT
PSTOR, SEMIS
DB 83H ; KEY
02F;D 4I?lt5 DB 'KE'
02EF D 9 DB 'Y0+80H
02F0 9902 DW EM1T- 7
02F2 F402 KEY DW $+2
0 2 F 4 C38616 JMP PKEY
,
C 2 F 7 89 DB 8 9H ; ?TERMINAL
02F8 3F5445524D DB ?TERMINA'
9300 CC DB 'L8+80H
O301 EC02 DW KEY-6
0303 0503 QTERM DW $+2
0305 210000 LXI H,O
d308 C 3 7 8 1 6 &IY PQTER
DB 82H ; CK
DB 'C'
DB 'R0+80H
DW QTERM-OCH
DW $+2
JMP PCR
DB 85H ; CMOVE
DB 'CMOV'
DB 'E'+80H
DW CR-5
CMOVE DW $+2
MOV L, c ; (HL) <- ( I P )
MOV H,3
POP B ; (BC) <- ( S l ) = WCHRS
POP D ; (DE) <- ( S 2 ) = DEST ADDR
XTHL ; (HL) <- ( S 3 ) = SOURCE ADDR
3 ; ( S l ) <- ( I P )
0374 C32C03 JMP ; RETURN I F #CHRS = 0
0327 7E CMOV 1 MOV ; ( ( D E ) ) <- ( ( H L ) j
0328 2 3 INX ; I N C SOURCE ADDR
0329 1 2 STAX
032A 1 3 INX ; I N C DEST ADDR
CP/M MACRO ASSEM 2 . 0 /I012 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
0 3 2 B OB DCX B ; DEC //CHRS
032C 7 8 CMOV2 MOV A, B
032D B1 ORA C
032E C22703 J NZ CMOV 1 ; REPEAT IF ~ICHRS o o
0331 C 1 POP B ; RESTORE ( I P ) FROM ( S l )
0332 C34501 JMP NEXT
9 MULTIPLY P R I M I T I V E
? (AHL) C- (A) * (DE)
9 #BITS = 2 4 8 16
0358 210000 MPYX LXI H, 0 ; (HL) C- 0 = PARTIAL PRODUCT.LW
035B OE08 MVI C, 8 ; LOOP COUNTER
035D 29 MPYXl DAD H ; LEFT S H I F T (AHL) 2 4 B I T S
035E 17 RAL
035F D 2 6 5 0 3 JNC MPYX2 ; I F NEXT M P L I E R B I T = 1
0362 19 DAD D ; THEN ADD MPCAND
0363 CEOO ACI 0
0365 OD DCR C ; I F NOT L A S T M P L I E R B I T
0366 C25D03 JNZ MPYXl ; THEN LOOP AGAIN
0369 C9 RET ; E L S E DONE
CP/M MACRO ASSEM 2 . 0 KO13 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
036B 55 DB 'u '
036C AF DB ' /'+80H
036D 3503 DW U STAR- 5
036F 7103 USLAS DW $+2
0371 210400 LXI H, 4
0374 39 DAD SP ; ( (HL) ) <- NUMERATOR.LW
0375 5E MOV E,M ; (DE) <- NUMER.LW
0376 71 MOV M,C ; SAVE I P ON STACK
0377 23 INX H
0378 56 MOV D,M
0379 70 MOY M,B
037A C1 POP B ; (BC) <- DENOMINATOR
037B El POP H ; (HL) <- NLKR.HW
037C 7D MOV A,L
037D 91 SUB C ; I F NUMER >= DENOM
037E 7C MOV A,H
037F 98 S BB B
0380 DA8C03 JC USLAl
0383 21FFFF LXI H, OFFFFH ; THEN OVERFLOW
0386 llFFFF LXI D ,OFFFFH ; S E T REM & QUOT TO MAX
0389 C3B703 JMP USLA7
038C 3E10 USLAl MY1 A, 16 ; LOOP COUNTER
038E 29 USLA2 DAD H ; L E F T S H I F T (HLDE) THRU CARRY
038F 17 RAL
0390 EB XCHG
0391 29 DAD
0392 D29703 JNC
0 3 9 5 13 INX
0 3 9 6 A7 ANA
0 3 9 7 EB XCHG ; S H I F T DONE
0398 1 F RAR ; RESTORE 1 S T CARRY
0399 F5 PUSH PSW ; SAVE COUNTER
039A D2A603 JNC USLA4 ; I F CARRY = 1
0 3 9 D 7D MOV A ,L ; THEN (HL) <- ( H L ) - (BC)
0 3 9 E 91 SUB C
039F 6F MOV L,A
0 3 A 0 7C MOV A,H
03Al 9 8 SBB B
03A2 6 7 MO V H, A
03A3 C3B103 JMP USLA5
03A6 7D MOV A,L ; E L S E TRY (HL) <- (HL) - (BC)
03A7 9 1 SUB c
03A8 6 F MOV L, A
0 3 A 9 7C MOV A,H
03AA 9 8 SBB B ; (HL) <- PARTIAL REMAINDER
03AB 67 MOV H9A
03AC D 2 B 1 0 3 JNC USLAS
03AF 0 9 DAD B ; UNDERFLOW, RESTORE
03B0 1B DCX D
0 3 B 1 13 INX D ; I N C QUOT
03B2 F 1 POP PSW ; RESTORE COUNTER
0 3 B 3 3D DCR A ; I F COUNTER > 0
03B4 C28E03 JNZ USLA2 ; THEN LOOP AGAIN
03137 C 1 POP B ; E L S E DONE, RESTORE I P
0 3 B 8 E5 PUSH H ; ( S 2 ) <- REMAINDER
03B9 D5 PUSH D ; ( S l ) <- QUOTIENT
#014 8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
JMP NEXT
DB 83H ; !LND
DB 'AN'
DB 'D8+80H
DW USLAS-5
ANDD DW $+2 ; ( S I ) <- ( S l ) AND ( S 2 )
POP D
POP H
MOV AYE
ANA L
MOV LYA
MOV A YD
ANA H
MOV H, A
JMP HPUSH
03DO 82 DB 8 2H ; OR
03D1 4F DB '0'
03D2 D2 DB 'R'+80H
0303 BD03 DW ANDD-6
03D5 D703 ORR DW $+2 ; (S1) <- ( S l ) OR ( S 2 )
03D7 Dl POP D
03D8 El POP H
0399 7B MOV A,E
OSDA B5 ORA L
03DB 6F MOV LYA
03DC 7A MOV A ,D
03DD B4 ORA H
03DE 67 MOV HYA
03DF C34401 m HPUSH
Y
DB 83H ; RP@
DB 'RP'
DB '@'+80H
DW SPSTO-6
RPAT DW $+2 ;( S l ) <- (RP)
LHLD W P
JMP HPUSK
DB 82H ; ;s
DB ' - 8
DB 'S'+80H
DW RPSTO-6
SEMIS DW $+2 ;(IP) <- ( R l )
LHLD RPP
MOV C ,M ; (BC) <- ( R l )
LNX H
MOV B ,M
INX H
SHLD RPP ; (RP) <- (RP) +2
JMP NEXT
85H ; LEAVE
'L EAV'
'E8+80H
SEMIS-5
LEAVE $+2 ; L I M I T <- INDEX
/I016 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
LHLD R PP
MOV E, M ; (DE) <- ( R 1 ) = INDEX
INX H
MOV D, M
INX H
MOV M,E ; ( R 2 ) <- (DE) = L I M I T
INX H
MOV MYD
JMP NEXT
DB 8 2H ; >R
DR '>*
DB '~'+80H
DW LEAVE- 8
TOR DW $+2 ; ( R l ) <- ( S l )
POP D ; (DE) <- ( S l )
LHLD RPP
DCX H ; ( R P ) <- (RP) - 2
DCX H
SHLD RPP
MOV M, E
INX H
MOV M ,D
JMP NEXT
DB 8 2H
DB 'R'
DB '>'+80H
DW TOR-5
FROMR DW $+2 ;(Sl) <- ( R l )
LHLD W P
MOV E,M ; (DE) <- ( R l )
INX H
MOV D,M
INX H
S HLD RPP ; ( R P ) <- ( R P ) +2
PUSH D ; ( S l ) <- (DE)
.JMP NEXT
81H ;R
'R0+80H
FROMR- 5
IDW2
DB 82H
DB '0'
DB '='+80H
DW RR-4
ZEQU DW $+2
POP H ; (HL) <- ( S 1 )
MOV A9L
ORA H ; I F (HL) = 0
LXI H, 0 ; THEN (HL) <- FALSE
JNZ ZEQUl
INX H ; E L S E (HL) <- TRUE
ZEQUl JMP HPUSX ; ( S l ) <- (HL)
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
Y
0 4 A 2 82 DB 82H
04B3 30 DB '0'
0 4 8 4 BC DB '<'+80H
04B5 9 E 0 4 DW ZEQU- 5
04B7 B 9 0 4 ZLESS DW $+2
04B5 E l POP H ; (HL) <- ( S l )
OLBA 29 DAD H ; I F (HL) >- 0
O4EB 210000 LXI HYO ; THEN (HL) <- FALSE
OSBE 0 2 C 2 0 4 JNC ZLESl
04C1 23 INX H ; ELSE (HL) <- TRUE
04C2 C 3 4 4 0 1 ZLESl JMP HPUSH ; (Sl) <- (HT.)
DB 8 1H ; +
DB '+'+80H
DW ZLESS-5
PLUS DW $+2 ;(S1) <- ( S l ) + (S2)
POP D
POP H
DAD D
JMP HPUSH
DB 85H ; MINUS
DB 'MINU'
DB 'S'+80H
DW DPLUS-5
MINUS DW $+2 1 ) - - 1 ( 2's COMPLEMENT )
POP H
MOV A,L
C P / M MACRO ASSEM /I018 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
04i:P 21; CMA
0+'. i;?: 6hf: MOV
!)&F'F 7(: MOV
O5ii)O 2F CMA
0501 6 7 MOV H,A
OSQ2 23 INX H
050'3 C34401 JMP HPUSH
DB 86H ; DMINUS
DB 'DMINU'
DB 'S8+80H
DW MINUS-8
DMINlj DW $+2
POP H ; (HL) <- HW
POP D ; (DE) <- LW
SUB A
SUB E ; (DE) <- 0 - (DE)
MOV E,A
MVI A, 0
SBB D
MOV D,A
MV I A,O
SBB L ; (HL) <- 0 - (HL)
MOV L, A
MVI A,O
S BB H
MOV H,A
PUSH D ; ( S 2 ) <- LW
JMP HPUSH ; ( S l ) <- HW
DB 84H ; SWAP
DB 'S WA'
DB 'P'+80H
DW DROP- 7
SWAP DW $+2
POP H
XTHL
.TMP HPUSH
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A 0 15SEP79
I
0550 8 3 DB 8 3H ; DUP
3551 4 4 5 5 DB 'DU'
05'53 DO DB 'P0+80H
3554 4 2 0 5 DW SWAP- 7
0556 5 8 0 5 DUP DW $+2
rJ558 E l POP H
0559 E 5 PUSH H
355A C344Ol JHP HPUSH
DB 84H ; 2DUP
DB '2DU0
DB 'P'+80H
DW DUP-6
TDUP DW $+2
POP H
POP D
PUSH D
PUSH H
JMP DPUSH
DB 86H ; TOGGLE
DP, 'TOGGL'
DB 'E0+80H
DW PSTOR-5
TOGGL DW $+2 ;((S2)) C- ( ( S 2 ) ) XOR ( S 1 ) L B
POP D ; ( E ) <- BYTE MASK
POP H ; (HL) <- ADDR
MOV A ,M
XRA E
MOV M,A ; (ADDR) <- (ADDR) XQR (E)
JMP NEXT
DB 81H ;@
DB '@'+80H
DW TOGGL-9
DW $+2 ; ( S l ) <- ( ( S l ) )
POP H ; (HL) <- ADDR
MOV E ,M ; (DE) <- (ADDR)
TNX H
CPiM %CKO ASSEM 2 . 0 #020 8080 FIG-FORTH 1.1 VERSION A 0 15SEP79
0531: 56 MOV D*M
0593 D 5 PUSH D ; ( S l ) <- (DE)
059E C 3 4 5 0 1 JMP NEXT
0 5 A l 82 DB 82H ; C@
05.42 4 3 DB 'C'
0 5 A 3 CO DB '@'+80H
05A4 9 3 0 5 DW AT-4
OSA6 A 8 0 5 CAT DW $+2 ; ( S 1 ) <- ( ( S I ) ) L B
0568 El. POP H ; (HL) <- ADDR
05A9 6E MOV L,M ; (HL) <- (ADDR)LB
O%L\ 2500 MVI H, 0
OSrIC C 3 4 4 0 1 JMP HPUSH
DB 8 2H ; 2@
DB '2'
DB '@'+80H
DW CAT-5
TAT DW $+2
POP H ; (HL) <- ADDR HW
LXI D.2
DAD D ; (HL) <- ADDR LW
MOV E,M ; (DE) <- LW
INX H
MOV D9M
PUSH D ; ( S 2 ) <- LW
LXI D,-3 ; (HL) <- ADDR HW
DAD D
MOV EsM ; (DE) <- HW
I NX H
MOV D,M
PUSH D ; ( S l ) <- HW
JMP NEXT
DB 8 1H ; STORE
DB ' ! '+80H
DW TAT- 5
STORE DW $+2 ; ( ( S l ) ) <- ( S 2 )
POP H ; (HL) <- ( S l ) = ADDR
POP D ; (DE) <- ( S 2 ) = VALUE
MOV M, E ; ((HL) <- (DE)
INX W
MOV M,D
JMP NEXT
DB 82H ; C STORE
DB 'C'
DB ' !'+80H
DW STORE-4
CSTOR DW $+2 ;( ( S 1 ) ) L B <- ( S 2 ) L B
POP H ; (HL) <- ( S 1) = ADDR
POP D ; (DE) <- ( S 2 ) = BYTE
MOV M,E ; ( ( H L ) )LB <- ( E l
JMP NEXT
82H ; 2 STORE
CP/M MACRO ASSEM 2.0 #021 8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
(15156 32 I)B
0iE7 A1 DB ' !'+80H
05E8 D805 DW CSTOR-5
05EA EC05 TSTOR DW $+2
i)5i.:C El POP H ; (HL) <- ADDR
OSED Dl POP D ; (DE) <- HW
05EE 73 MOV M,E ; (ADDR) <- HW
05EF 23 INX H
05PO 72 MOV M¶D
O5Fl 2 3 INX H ; (HL) <- ADDR LW
05F2 Dl POP D ; (DE) <- LW
05F3 73 MOV M¶E ; (ADDR+2) <- LW
05F.i 23 INX H
05F5 72 MOV M,D
05F6 C34501 JMP NEXT
03F9 C l DB OClH ; :
D5FA BA DB ' :'+80H
CSFB E505 DW TSTOR-5
iI>FD 1106 COLON DW DOCOL
O5FF AA09 DW QEXEC
0601 6509 DW SCSP
0603 9D07 DW CURR
C605 9705 DW AT
0607 9007 DW CONT
0609 CEO5 DW STORE
0609 7FOE DW CREAT
060i) LFOA DW RBRAC
060F 820A DW PSCOD
0611 2A2801 DOCOL LHLD RPP
0614 2H DCX H ; ( R l ) c- (IP)
0515 70 MOV M,B
0615 2B D CX H ; (RP) <- (RP) - 2
G517 71 MOV M,C
0618 222801 SHLD RPP
OS1H 13 TNX D ; (DE) <- CFA+2 = (W)
061C 4B MOV C,E ; (IP) <- (DE) = (W)
OOlD 42 MOV B ,D
061E C34501 JMP NEXT
0621. C1 OClH ; ;
O622 BB ' ;'-t80H
0 6 2 3 F905 COLON-4
0625 1106 SEMI DOCOL
0 6 2 7 D409 QCSP
0 6 2 9 OBOA COW
0628 4 7 0 4 S EM1 S
O 6 2 D 440A SMUDG
Ob2F 210A LBRAC
Ob31 4 7 0 4 SEMIS
84H ; NOOP
'NOO'
'P'+80H
SEMI-&
NOOP DOCOL
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
Oh3C 4 7 0 4 SEMIS
9
DB 84H ; USER
DB 'USE'
DB '~'+80H
DW VAR-OBH
USER DW DOCOL
DW CON
DW PSCOD
DOUSE INX D ; (DE) <- P F A
XCHG
MOV E,M ; (DE) <- USER VARIABLE O F F S E T
MV I D9 Q
LHLD UP ; (HL) <- USER VARIABLE BASE ADDR
DAD D ; (HL) <- (HL) + (DE)
JMP HPUSH ; ( S l ) <- BASE +
OFFSET
0 6 8 B 81 81 H ;0
068C BO '0'+80H
068D 7 2 0 6 USER- 7
068F 4306 ZERO DOCON
0691 0000 0
>
0693 81 81 H ; 1
0694 B1 ' 1'+80H
6695 8B06 ZERO-4
0697 5306 ONE DOCON
0699 0100 1
8080 FIG-FORTH 1.1 VERSION A0 15SEP79
81H ;2
'Z8+80H
ONE-4
TWO DOCON
2
f
81H ;3
'3'+80H
TWO-4
THREE DOCON
3
Y
82H ; BL
'B'
'L8+80H
THREE-4
DOCON
2OH
85H ; LIMIT
'LIMI'
'T8+80H
FZRST-8
LIMIT DOCON
EM
USER VARIABLES
82H ; SO
'S '
'0 8 + 8 0 H
PORIG-OAH
SZERO DOUSE
6
8 2H ; RO
'R'
'O8+80H
SZERO-5
RL EKO DOUSE
8
9
83H ;TIB
'TI'
'B8+80H
RZERO-5
TIB DOUSE
OAH
9
071D 85 8 5H ; WIDTH
@7!E 57494454 'WIDT'
0722 C8 'H ' OH
0723 1407 TIB-6
0/25 7F06 WIDTH DOUSE
0727 01: OCH
>
0728 87 8 7H ; WARNING
0729 5741524349 'WARNIN'
072F C7 'G0+8OH
0730 1D07 WIDTH- 8
0732 7F06 WARN DOUSE
0734 OE OEH
85H ; FENCE
'FENC'
'E'+80H
WARN-OAH
FENCE DOUSE
1 OH
CP/M MkCRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A 0 15SEP79
0?43 3507 FENCE-8
0 7 4 5 7F06 DP DOUSE
0767 1 2 1 2H
*
UlSt! b8 88H ; VOC-LINK
0749 564F432D4C 'VOC-L IN'
0750 CB 'K0+80H
0751 OOi37 DP- 5
0353 7F06 VOCL DOUSE
0755 1400 14H
9
0 3 5 7 83 838 ; BLK
0751i: 4 2 4 C 'BL'
075A CB 'K'+80H
075B 4807 VOCL-OBH
075D 7FOb BLK DOUSE
G75F 16 16H
9
8 2H ; IN
'1'
'N8+80H
BLK-6
DOUSE
1 8H
83H ; OUT
'OU'
'T'+80H
INN-5
OUTT DOUSE
1AH
7
8 3H ; SCR
'SC'
'R'+80H
OUTT-6
SCR DOUSE
1CH
8 6B ; OFFSET
'OFFSE'
'T'+80H
SCR-6
DOUSE
1EH
87H ; CONTEXT
CONTEX'
'T'+80H
OFSET-9
CONT DOUSE
2OH
87H ; CURRENT
'CURREN*
'T'+80H
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
079B 8 6 0 7 CONT-OAH
079D 7F06 CURR DOUSE
0 7 9 F 22 2 2H
Y
DB 84H ; BASE
DB 'BAS '
DB '~'+80H
DW STATE-8
BASE DW DOUSE
DB 2 6H
9
83H ; DPL
'DP'
'L8+80H
BASE- 7
DPL DOUSE
2 8H
9
8 3H ; FLD
'FL'
'D0+80H
DPL-6
FLD DOUSE
2AH
83H ; CSP
'CS'
'P8+80H
FLD- 6
CSPP DOUSE
2CH
9
82H ; R#
'R'
'#'+80H
CSPP-6
DOUSE
2 EH
83H ; HLD
'HL'
'D8+80H
RNUM-5
HLD DOUSE
3OH
82H ; 2+
'2'
'+'+80H
ONEP-5
DOCOL
TWO
PLUS
SEMIS
DB 84H ; HERE
DB 'HER'
DB 'E8+80N
DW TWOP-5
HERE DW DOCOL
DW DP
DW AT
DW SEMIS
DB 85H ; ALLOT
DB 'ALLO'
DB 'T8+80H
DW HERE-7
ALLOT DW DOCOL
DW DP
DW PSTOR
DW SEMIS
DB 8 1H 9 s
DB ','+80H
DW ALLOT- 8
COMMA DW DOCOL
DW HERE
DW STORE
DW TWO
DW ALLOT
DW SEMIS
DB 82H ; C.
DB 'C'
DB ' ,'+80H
DW COMMA-4
CCOMM DW DOCOL
DW HERE
DW CSTOR
DW ONE
DW ALLOT
DW SEMIS
CP/M MACRO ASSEM 2 . 0 6028 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
9 SUBROUTINE USED BY -
AND <
Y ; (HL) <- ( H L ) -
(DE)
0 8 3 C 7D SSUB MOV A,L ; LB
083D 9 3 SUB E
0 8 3 E 6F MOV L,A
0831: 7C MOV A,H
0840 9A SBB D
0 8 4 1 67 MOV H9A
0842 C9 RET
DB 8 1H .-
DB '-*+80H
DW CCOMM-5
SUBB DW $+2
POP D ; (DE) <- (Sl) = Y
POP H ; (HL) <- (S2) = X
CALL SSUB
JMP HPUSH ; (S1) <- X -Y
81H =
'='+80H
SUBB-4
EQUAL DOCOL
SUEB
ZEQU
SEMIS
DB 8 1H ; <
DB '<'+80H ; X < Y
DW EQUAL-4 ; S2 S1
LESS DW $+2
POP D ; (DE) <- ( S l ) Y
POP H ; (HL) <- ( S 2 ) = X
MOV APD ; I F X t Y HAVE SAME SIGNS
XRA H
JM LES 1
CALL SSUB ; (HL) <- X -Y
1NR H ; I F (HL) >= 0
DCR H
JM LES2
LX I H, 0 ; THEN X >= Y
JMP HPUSH ; ( S l ) <- FALSE
LXI Hs 1 ; ELSE X < Y
JMP HPUSH ; ( S l ) C- TRUE
81H ; >
'>'+80H
ULESS-5
GREAT DOCOL
SWAP
LESS
SEMIS
DB 83H ; ROT
DB 'RO'
DB 'T8+80H
DW GREAT-4
ROT DW $+2
POP D
POP H
XTHL
JMP DPUSH
85H ; SPACE
'SPAC'
'E8+8OH
ROT-6
SPACE DOCOL
BL
EMIT
SEM1 S
OEC9 84 84H ; -DUP
08CA 2D4455 '-DU'
08CD DO 'P'+80H
08CE B908 SPACE-8
08DO 1106 DDUP DOCOL
08D2 5605 DUP
08D4 9201 ZBRAN ; IF
08D6 0400 DDUPI-$
08D8 5605 DUP ; ENDIF
08DA 4704 DDUP1 SEM1S
9
08DC 88 88H ; TRAVERSE
08DD 5452415645 'TRAVERS '
OBE4 C5 'E'+80K
08E5 C908 DDUP- 7
08E7 1106 TRAV DOCOL
08E9 4905 SWAP
08EB 2D05 TRAV 1 OVER ; BEGIN
08ED C904 PLUS
08EF 5601 LIT
08Fl 7F00 7FH
08F3 2D05 OVER
08F5 A605 CAT
08F7 6108 LESS
08F9 9201 ZBRAN ; UNTIL
08FB FOFF TRAVI-$
O8FD 4905 SWAP
8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
DROP
SEMIS
86H 9 LATEST
'LATES'
'T8+80H
TRAV-OBH
DOCOL
CURR
AT
AT
SEMIS
8 3H ; LFA
'LF'
'A'+80H
LATES-9
LFA DOCOL
LIT
4
SUBB
SEMI S
83H ; CFA
'CF'
'A'+80H
LFA-6
CFA DOCOL
TKO
SUBB
S EM1 S
0934 83 DB 8 3H ; NFA
0935 4E46 DB 'NF'
0937 C1 DB 'A'+80H
0938 2609 DW CFA-6
093il 1106 NFA DW DOCOL
093C 5601 DW LIT
093E 0500 DW 5
0940 4708 DW SUBB
0942 5601 DW LIT
0944
0946
FFFF
E708
DW -1
DW TRAV
0948 4704 DW SEMIS
83H ; PFA
'PF'
'A8+80H
NFA-6
PFA DOCOL
ONE
TRAV
LIT
5
PLUS
SEMIS
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
9
DB 86H ; ?ERROR
DB ' ?ERRO'
DB 'R'+80H
DW SCSP-7
QERR DW DOCOL
DW SWAP
DW ZBRAN ; IF
DW QERRI-$
DW ERROR
DW BRAN ; ELSE
DW QERR2-$
QERRl DW DROP ; ENDIF
QERR2 DW SEMIS
P
DB 85H ; ?COMP
DB '?C0M0
DB 'P'+80H
DW QERR- 9
QCOMP DW DOCOL
DW STATE
DW AT
DW ZEQU
DW LIT
DW 11H
DW QERR
DW SEMIS
DB 85H ; ?EXEC
DB '?EXE'
DB 'C8+80H
DW QCOMP-8
QEXEC DW DOCOL
DW STATE
DW AT
DW LIT
DW 12H
DW QERR
DW SEMIS
DB 86H ; ?PAIRS
DB '?PAIR'
DB 'S8+808
DW QEXEC-8
QPAIH DW DOCOL
DW SUBB
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
09C5 5601 LIT
09C7 1300 13H
09C9 7809 Q ERR
09CB 4704 SEMIS
84H ; ?CSP
'? C S O
'P0+80H
QPAIR-9
DOCOL
SPAT
CSPP
AT
SUBB
LIT
14H
QERR
S EM1 S
88 H ; ?LOADING
09E7 3F4C4F4144 ' ?LOADIN'
09EE C 7 'G0+80H
09CF C D 0 9 QCSP-7
09F1 1106 DOCOL
C9F3 5D07 BLK
09F5 9705 AT
09F7 A304 ZEQU
09F9 5601 LIT
0 9 F B 1600 16H
09FD 7 8 0 9 QERR
C19FF 4 7 0 4 SEMIS
9
OAOl 87 8 7H ; COMPILE
0A02 434F4D5049 'COMPIL'
@A08 C5 'E'+80H
OAO9 E609 QLOAD-OBH
OAOB 1106 DOCOL
OAOD 9209 QCOMP
OAOF 8804 FROMR
OAll 5605 DUP
OA13 F407 TWOP
OA15 7204 TOR
OA17 9705 AT
OA19 1F08 COMMA
OAlB 4704 SEMIS
OAlD C1 DB OClH ; [
OAlE DR DB ' [ '+80H
OAlF OlOA DW corn- OAH
OA21 1106 LBRAC DW DOCOL
OA23 8F06 DW ZERO
OA25 A807 DW STATE
OA27 CEO5 DW STORE
OA29 4704 DW SEMIS
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
OA2C DD ' ] '+80H
OA2D lDOA LBRAC-4
OA2F 1106 RBRAC DOCOL
OA31 5 6 0 1 C 0 0 0 L I T , OCOH
0.435 A 8 0 7 C E 0 5 STATE, STORE
OA75 4 7 0 4 SEMIS
*
OA3B 86 86H ; SMUDGE
OA3C 534D554447 'SMUDG'
OA41 CS 'E'+80H
OA42 2BOA RBRAC-4
Oh44 1106 SMUDG DOCOL
OA46 OC09 LATES
C A 4 8 5601 LIT
OA4A 2000 2 OH
CA4G 8905 TOGGL
OA4E 4 7 0 4 SEMIS
OA62 87 8 7H ; DECIMAL
UA63 4 4 4 5 4 3 4 9 4 D 'DECIMA'
OA69 CC 'L0+80H
OA6A 5 0 0 A HEX-6
OA6C 1106 DEC DOCOL
OA6E 5601 LIT
0 A 7 0 OAOO OAH
0 A 7 2 I3207 BASE
ok74 CEO5 STORE
On16 4 7 0 4 S EM1S
87H ; (;CODE)
' ( ;CODE'
' ) '+80H
D EC- OAH
PSCOD DOCOL
FROMR
LATES
PFA
CFA
STORE
SEMIS
OC5H ; ;CODE
' ;COD0
'E0+80H
P SCOD-OAH
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
OA98 1 1 0 6 SEMIC DOCOL
O A ~ AD 4 0 9 QCSP
OA9C OBOA corn
OA9E 8 2 0 A PSCOD
!)AX0 2 1 0 A LBRAC
O M 2 3A06 SEMI 1 NOoP ; ( ASSEMBLER )
OAA4 4 7 0 4 SEMIS
9
OADF 85 8 5H ; COUNT
OAEO 434F554E 'COUN'
OAE4 D4 'T8+80H
OAE5 B80A DOES-8
OAE7 1106 COUNT DOCOL
OAE9 5605 DUP
OAEB E707 ONEP
OAED 4905 SWAP
OAEF A605 CAT
OAF1 4704 SEMIS
OdiC, 8 9 8 9H ; -TRAILING
OWlD 2D5h524149 *-TRAILIN'
OB25 C7 'G'+80~
OB26 F30A TYPE- 7
OR28 11116 DTRAl DOCOL
OHLA 5605 DUP
OU2C 8h0h ZERO
2B2E EPOl XDO ; DO
OH3d 2D05 DTRAl OVER
;I332 2D05 OVER
OH34 C904 PLUS
OB36 9706 ONE
OB38 4708 SUBB
0B3A A605 CAT
OB3C E006 BL
OB3E 4708 SUBB
0840 9201 ZBRAN ; IF
OB4L 080U DTRA2-$
OB44 5EO4 LEAVE
0546 7A01 BRAN ; ELSE
OB48 0600 DTRA3-$
OH4A o706 ONE
0H4C 4708 SUBB ; ENDIF
OUhE A8121 XLOOP ; LOOP
OB5C EOFF DTRAl-$
OB52 $704 S EM1 S
(="'
' ) '+80H
DTKAI-OCH
DOCOL
KR
COUNT
DUP
ONEP
FROM.
PLUS
C P / M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 V E R S I O N A 0 1 5 S E P 7 9
OBh9 7 2 0 4 TOR
OB6B FAOA TYPE
OB6D 4 7 0 4 SEMIS
O C l H 85 85H ; QUERY
OCJC 51554552 'QUER'
OC20 n9 "r"+80H
OC21 9EOB EXPEC- 9
OC23 11'36 DOCOL
OC25 1A07 TI8
0C27 9705 AT
OC29 5691 LIT
OC2B 5008 SOH
OC2D A70B EXPEC
OC2F 8F0b ZERO
OC31 6507 INN
OC33 CEO5 STORE
OC35 4704 SEMIS
OClH ; 0 (NULL)
80H
QUERY-8
DOCOL
CP/M MACRO ASSEM 2.0 038 8 0 8 0 FIG-FORTH 1.1 VERSION A0 15SEP79
OC3D 5D07 DW BLK
Or:3F 9705 DW AT
OC41 9.201 DW ZBRAN ; IF
OC43 2A00 DW NlJLL 1-$
OC45 9/36 DW ONE
CC47 5rO7 DW BLK
OC49 7205 DW PSTOR
O C 4 P 8F06 DW ZERO
OC4D 6 5 0 7 DW INN
OC4F CEO5 DW STORE
OC51 TiY'q7 nw BLK
OC53 9705 DW AT
OC55 LAO6 DW BSCR
Or57 9 0 b DW ONE
OC59 14 138 DW SUBB
OC5B C 3 0 3 DW ANDD
OC5D A304 DW ZEQU
9C5F 9201 DW ZBRAN ; IF
O C 6 1 ObOO DW NULL2-$
OC63 AA09 DW QEXEC
OC65 8 8 0 4 DW FROMR
OC67 3r05 DW DROP ; ENDIF
OC69 7101 DW BRAN ; ELSE
OChB OoOO DW NULL3-$
?COD 81104 DW FROMR
OC6F 1C05 DW DROP ; ENDIF
oc71 4 7 q 4 DW SEMIS
DB 84H ; FILL
DB 'FIL'
DB 'L'+80H
DW NULL-4
FILL DW $+2
MOV L,C
MOV H, B
POP D
POP B
XTHL
XCHG
MOV A, B ; BEGIN
ORA C
Jz FILL2 ; WHILE
MOV A,L
STAX D
INX D
DCX B
JMP FILLl ; REPEAT
POP B
JMP NEXT
8 5H ; ERASE
'ERAS '
'E8+80H
FILL- 7
DOCOL
ZERO
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION AO 1 5 S E P 7 9
OC9E 7AOC E'ILL
OCAO 4 7 0 4 SEMIS
Y
OCCC 83 8 3H ; PAD
OCCD 5041 'PA'
OCCP C4 'D'+80H
OCDO B30C HOLD- 7
OCD2 1106 PAD DOCOL
OCD4 0308 HERE
OCU6 5601 LIT
OCD8 4400 44H
OCDA 11004 PLUS
OCDC 4704 SEMIS
O D 7 8 86 DB 86H ; NUMBER
OD79 4 E 5 5 4 D 4 2 4 5 DB 'NUMBE'
OD7E D 2 DB 'R'+80H
OD7F 2BOD DW PNUMB-OBH
O D 8 1 1106 NUMB DW DOCOL
OD83 8 F 0 6 DW ZERO
O D 8 5 8F06 DW ZERO
OD87 B 1 0 8 DW ROT
O D 8 9 5605 DW DUP
OD8E E 7 0 7 D'W ONEP
OD8D A 6 0 5 DW CAT
OD8F 5601 DW LIT
OD91 2 D 0 0 DW 2DH
O D 9 3 5508 DW EQUAL
OD95 5 6 0 5 DW DUP
OD97 7 2 0 4 DW TOR
OD99 C 9 0 4 DW PLUS
OD9B 5 6 0 1 DW LIT
OD9D F F F F DW - 1
OD9F BB0 7 NUMB 1 DW DPL ; BEGIN
ODAl C E O 5 DW STORE
ODA3 3 6 0 D DW PNUMB
ODA5 5605 DW DUP
ODA7 A605 DW CAT
ODA9 BOO6 DW BL
DDAB 4 7 0 8 DW SUBB
ODAD 9 2 0 1 Dw ZBRAN ; WHILE
ODAF 1 6 0 0 DW NUMB2-$
ODBl 5605 DW DUP
ODB3 A 6 0 5 DW CAT
ODB5 5 6 0 1 nw LIT
ODB7 2 E 0 0 DW 2EH
ODB9 4 7 0 8 DW SUBB
ODBB 8 F O 4 DW ZERO
ODBD 7 8 0 9 I)W QERR
ODBF 8F06 DW ZERO
ODCl 7 A 0 l DW BRAN ; REPEAT
ODC3 D C F F DW NUMB1-$
ODC5 3 C 0 5 NUMB 2 DW DROP
ODC7 8804 DW FROMR
ODC9 9 2 0 1 DW ZBRAN ; IF
ODCB 0 4 0 0 I)W NUMB3-$
ODCD O F 0 5 DW DMINU ; ENDIF
ODCF 4 7 0 4 DW SEMIS
9DD1 85 ; - F I N D (0-3) S U C C E S S
ODD2 2D46494E ; (0-1) F A I L U R E
ODD6 C4
ODD7 780D NUMB- 9
ODD9 1106 DOCOL
ODDS ROO6 BL
ODDD E50C WORD
ODDF 0308 HERE
C P / M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
ODE1 9 0 0 7 CONT
ODE3 9 7 0 5 AT
ODE5 9 7 0 5 AT
ODE7 4D02 PFIND
GDE9 5 6 0 5 DUP
ODEB A 3 0 4 ZEQU
ODED 9201 ZBRAN ; IF
ODEF OkOO DFINI-$
ODFl 3C05 DROP
ODE3 0 3 0 8 HERE
ODFS CC09 LATES
O D F 41102
~ PFIND ; ENDIF
ODF9 4 7 0 4 DFIN l SEMIS
9
ODFB 87 8 7H ; (ABORT)
ODFC 2 3 4 14 2 4 F 5 2 ' /ABORT'
OEO? A9 ' ) '+80H
OE03 DlOD DFIND-8
OE05 1106 PABOR DOCOL
OE07 5810 ABORT
OE09 4704 S EM1 S
84H ; QUIT
'QUI'
'T8+80H
PAREN-4
QUIT DOCOL
ZERO
BLK
STORE
LBRAC
RPSTO ; BEGIN
CR
QUERY
INTER
STATE
AT
ZEQU
ZBRAN ; IF
QUITS-$
PDOTQ
2
'OK' ; ENDIF
BRAN ; AGAIN
QUIT1-$
85H ; ABORT
'ABOR'
'T8+80H
QUIT-7
ABORT DOCOL
SPSTO
DEC
QSTAC
CR
DOTCPU
PDOTQ
ODH
'FIG-FORTH '
FIGREL+30H,ADOT,FIGREV+30H
FORTH
DEFIN
QUIT
LXI B ,WRMl
3MP NEXT
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
1080 8910 WRMl w m
84H ; WARM
'WAR'
'~'980~
ABORT-8
WARM DOCOL
MTBUF
ABORT
I
CLD LXI
LHLD
SPHL
JMP NEXT
CLD 1 DW COLD
>
84N ; COLD
'COL'
'D8+80H
w m -7
COLD DOCOL
MTBUF
ZER0,DENSTY
STORE
LIT,BUFl
USE,STORE
LIT,BUF1
PREV,STORE
DRZER
LIT,0
LIT,EPRINT
STORE
LIT
ORIGi-12H
LIT
UP
AT
LIT
6
PLUS
LIT
1OH
CMOVE
LIT
ORIG+OCN
AT
LIT
FORTH+6
STORE
ABORT
8 4H ; S->D
'S->'
'D'+~oH
COLD- 7
CP/M MACRO ASSEM 2.0 U049 8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
10F3 FSlO STOD DW $4-2
10F5 Dl POP D
10F6 210000 LXI H, 0
10F9 7A MOV A,D
lOFA E680 AN1 80H
lOFC CAOOll JZ STOD 1
lOFF 2B DCX H
1100 C34301 STOD 1 SMP DPUSH
f
DB 82H ; -I--
DB ' +'
DB '-'+80H
DW STOD-7
DW DOCOL
DW ZLESS
DW ZBRAN ; IF
DW PMI-$
DW MINUS ; ENDIF
DIJ S EM1 S
DB 8 3H ; ABS
DB 'AB'
DB 'S8+80H
DW DPM-6
ABS DW DOCOL
DW DUP
nw PM
DW S EM1 S
DB 84H ; DABS
DB 'DAB'
DR 'S '+80H
DW ABS-6
DABS DW DOCOL
DW DUP
DW D PM
DW SEMIS
l l 6 F 82 82H ; M*
1170 4D 'M'
1172 AA ' *'+80H
1112 5911 MAX-6
1174 11066405 MSTAR DOCOL,TDUP
1178 E803 XORR
117A 7204 TOR
117C 2Cll AB S
117E 4905 SWAP
1180 2Cll AB S
1182 3A03 USTAR
1184 8804 FROMR
1186 1 A l l DPM
1188 4704 SEMIS
82H ; M/
" M'
'/'+80H
MSTAR-5
MSLAS DOCOL
OVER
TOR
TOR
DABS
RR
AB S
USLAS
FROMR
RR
XORR
PM
SWAP
FROMR
PM
SWAP
SEMIS
CP/H MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
l l B 3 8All MSLAS-5
llB5 1106 STAR DOCOL
llB7 7411 MSTAR
llB9 3C05 DROP
llBB 4704 SEM1S
84H ; /MOD
'/MO'
'D0+80H
STAR-4
SLMOD DOCOL
TOR
STOD
FROMR
MSLAS
SEMIS
8 1H ; /
'/'+80H
SLMOD- 7
SLASH DOCOL
SLMOD
SWAP
DROP
SEMIS
llDE 83 83H ; MOD
llDF hD4F 'MO '
llEl C4 'D0+80H
llE2 DO11 SLASH-4
llE4 1106 MODD DOCOL
llE6 C411 SLMOD
llE8 3C05 DROP
llEA 4704 SEMIS
9
11EC 85
llED 2A2F4D4F
llFl C4
llF2 DEll MODD-6
llF4 1106 SSMOD DOCOL
llF6 7204 TOR
llF8 7411 MSTAR
llFA 8804 FROMR
1lFC 8Fll MSLAS
llFE 4704 SEM1 S
82H ; */
'*0
'/'+80H
SSMOD-8
SSLA DOCOL
SSMOD
SWAP
DROP
SEMIS
8080 FIG-FORTH 1.1 VERSION A0 1 5 S E P 7 9
8 5H ; MIMOD
'M/MO'
'~'+80H
SSLA-5
MSMOD DOCOL
TOR
ZERO
RR
USLAS
FROMR
SWAP
TOR
USLAS
FROMR
SEMIS
DB 86H ; (LINE)
DB ' (LINE'
DB ' ) '+80H
DW MSMOD-8
PLINE DW DOCOL
DW TOR
nw LIT
DW 4 OH
DW BBUF
DW S SMOD
DW FROMR
DW BSCR
DW STAR
DW PLUS
DW BLOCK
DW PLUS
DW LIT
DW 4 OH
DW SEMIS
DB 85H ; .LINE
1255 2E4C494E DB ' .LIN'
i259 C5 DB 'E'+80H
125A 2D12 DW PLINE-9
125C 1106 DLINE DW DOCOL
125E 3612 DW PLINE
1260 280B DW DTRAI
1262 FAOA DW TYPE
1264 4704 DW SEM1S
9
.---------------------------I---------.-------
>
,
9 8 0 8 0 PORT FETCH AND STORE
3 ( SELF MODIFYING CODE, NOT REENTRANT )
DB 8 2H ; P@ "PORT @"
DB 'p'
DB "@'+$OH
DW MESS- OAH
PTAT: DW $,+2
POP D ; E <- PORT//
LXI H, $+5
MOV M,E
IN o ;( PORT!/ MODIFIED )
MOV L, A ; L <- (PORT//)
MVT H,0
JMP HPUSH
9 CP/M D I S K INTERFACE
¶
; PREV
8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
( ADDR O F PREVIOUSLY USED BUFFER )
'PRE'
'V'+80H
USE-6
PREV DOVAR
BUF 1
9 SERVICE REQUEST
9
SEC-RE.AD
( READ A SECTOR SETUP BY 'SET-DRIVE' & 'SETIO' )
DB 88H ; SEC-READ
DB 'SEC-REA'
DB 'D'+80H
DW TSCALC-10
SECRD DW $+2
PUSH B ; SAVE ( I P )
LXI D,RDSEC ; ASK CP/M TO READ SECTOR
CALL 10s
STA DSKERR+2 ; (DSKERR) <- ERROR STATUS
POP B ; RESTORE (IP)
JMP NEXT
SEC-WRITE
( WRITE A SECTOR SETUP BY "SET-DRIVE' c 'SETIO' )
DB 89H ; SEC-WRITE
DB 'sEC-WRIT'
DB 'E8+80H
DW SECRD-11
SECWT DW $+2
PUSH B ; SAVE (I!?)
LXI D,RITSEC ; ASK CP/M TO WRITE SECTOR
CALL 10s
STA DSKERR+2 ; (DSKERR) <- ERROR STATUS
POP B ; RESTORE (IP)
JMP NEXT
9
DEI 851-1 ; FLUSH
DEI 'FLUS'
D5 'H0+80H
DW RSLW-6
FLUSH DW DOCOL
DW NOBUF,ONEP
DW ZERO,XDO
FLUS1 DW ZER0,BUFFE
DW DROP
DW XLOOP,FLUS1-$
DW SEM1S
DB
DB
DB '>'+80H
DW LOAD- 7
ARROW DW DOCOL
C P / X MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A 0 15SEP79
1679 F 1 0 9 QLOAD
l 6 Z R SF06 ZERO
l h 2 I ) 6507 INN
162F' CE05 STORE
1631 LA06 BSCR
1633 5 D 0 7 BLK
1635 9705 AT
1637 21305 OVER
1639 Eitl 1 FlODD
163B 4708 SUBB
103D 5D07 BLK
163F 7205 PSTOR
1 6 4 1 47@& SEMIS
PAGE
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
9
- -----
PAGE
8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
OClH ( TICK )
OA 7H
ARROW- 6
TICK DOCOL
DFIND
ZEQU
ZERO
QERR
DROP
LITER
SEMIS
86H ; FORGET
'FORGE'
'T'+80H
TICK-4
FORG DOCOL
CURR
AT
CONT
AT
SUBB
LIT
18 H
QERR
TICK
DUP
FENCE
AT
LESS
LIT
15H '
QERR
DUP
NFA
DP
STORE
LFA
AT
CONT
AT
STORE
SEMIS
84H ; BACK
'BAC'
'K'+80H
FORG-9
BACK DOCOL
HERE
SUBB
COMMA
SEMIS
#066 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
DB OC5H ; BEGIN
DB 'BEGI'
D tl 'N0+80H
DW BACK- 7
BEGIN DW DOCOL
DW QCOMP
DW HERE
DW ONE
DW SEMIS
DB OC5H ; ENDIF
DB 'ENDI'
DB 'F8+80H
DW BEGIN-8
ENDIFF DW DOCOL
DW QCOMP
DW TWO
Dw QPAIR
DW HERE
DW OVER
DW SUBB
DW SWAP
DW STORE
DW SEMIS
OC4H ; THEN
'THE'
'N8+80H
ENDIFF-8
THEN DOCOL
END I F F
SEMIS
175A C2 OC2H ; DO
175B 44 'D'
175C CF 'O0+80H
175D 4D17 THEN- 7
175F 1106 DOCOL
1761 OBOA COMP
1763 SF01 W O
1765 0308 HERE
1767 A706 THREE
1769 4704 SEMIS
17AC C3 OC 3H ; END
17AD 454E 'EN'
17AF C4 'D8+80H
17BO 9617 UNTIL-8
17B2 1106 ENDD DOCOL
1784 9E17 UNTIL
17136 4704 SEMIS
>
17B8 C5 DB OC5H ; AGAIN
17B9 41474149 DB AGAI '
17BD CE DB 'N8+808
17BE AC17 DW ENDD-6
17CO 1106 AGAIN DW DOCOL
17C2 9706 D'W ONE
17C4 C109 DW QPAIR
17C6 OBOA DW COW
17C8 7A01 DW BRAN
17CA 1517 DW BACK
17CC 4704 DW SEMIS
>
17CE C6 OC6H ; REPEAT
17CF 5245504541 'REPEA'
17D4 D4 'T'+80H
17D5 B817 AGAIN-8
17D7 1106 REPEA DOCOL
17D9 7204 TOR
17DB 7204 TOR
17DD C017 AGAIN
17DF 8804 FROMR
17E1 8804 FROMR
17E3 9F06 TWO
17E5 4708 SUBB
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
17E7 3917 END IFF
17E9 4704 SZMIS
l l E B C2
17EC 49 'I'
17ED C6 'F'f80H
17EF: CEE7 REPEA-9
17FO 1106 IFF DOCOL
17F2 OSOA COW
17F4 9201 ZBRAN
17F6 0308 HERE
17F8 8F06 ZERO
17FA IF08 COMMA
17FC 9F06 TWO
17FE 4704 SEMIS
1861 82 8 2H ; #>
1862 23 '#'
1863 BE '>'+$OH
1864 5218 BDIGS-5
1866 1106 ED IGS DOCOL
1868 3C05 DROP
186A 3C05 DROP
186C DE07 HLD
186E 9705 AT
1870 D20C PAD
1872 2D05 OVER
1874 4708 SUBB
1876 4704 S EM1S
8 1H ; #
'1/'+80H
SIGN-7
DIG DOCOL
BASE
AT
MSMOD
ROT
LIT
9
OVER
LESS
ZBRAN ; IF
DIG1-$
CP/M MACRO ASSEM 2 . 0 8080 FIG-FORTH 1.1 VERSION A 0 1 5 S E P 7 9
18AB 5601 LIT
18AD 0700 7
18AF C904 PLUS ; ENDIF
18B1 5601 LIT
18B3 3000 30H
1885 C904 PLUS
1887 BAOC HOLD
18B9 4704 SEMIS
82H ; #S
'/I'
's'+80H
DIG-4
DIGS DOCOL
DIGS 1 DIG ; BEGIN
OVER
OVER
ORR
ZEQU
ZBRAN ; UNTIL
DIGSI-$
SEMIS
82H
# .
'R'+80H
DDOTR-6
DOTR DOCOL
TOR
STOD
FROMR
DDOTR
S EM1S
82H
'D'
8 0 8 0 FIG-FORTH 1 . 1 VERSION A0 15SEP79
CP/M MACRO ASSEM 2.0
1909 AE .
' '+80~
DOTR-5
190A F618
190C 1106 DDOT DOCOL
190E 8F06 ZERO
1910 D818 DDOTR
1912 C108 SPACE
1914 4704 SEMIS
.
8 1H
' '+80H
DDOT-5
9
DOT DOCOL
STOD
DDOT
SEMIS
8 1H ;
'? '+80H
DOT-4
QUES DOCOL
AT
DOT
SEMIS
8 2H ; U.
'U '
.
' '+80H
QUES-4
UDOT DOCOL
ZERO
DDOT
SEMIS
DB 858 ; INDEX
DB 'INDE'
DB 'X'+8OH
DW LIST-7
INDEX DW DOCOL
DW LIT,FF
DW EMIT, CR
DW ONEP ,SWAP
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
19FO EFOl D O
19F2 10030B02 INDEl CR,ID0
L9F6 56010300 LIT,3
19FA FB18C108 DOTR,SPACE
19FE 8F060B02 ZERO,ID0
LA02 5C120303 DLINE,QTERM
1A06 92010400 ZBRAN,INDE2-$
lAOA 5E04 LEAVE
lAOC A801B4FF INDE2 XLOOP,INDEl-$
lAlO 4704 SEMIS
,
1A12 85 85H ; TRIAD
1A13 54524941 'TRIA'
IA17 C4 'I)'+80H
1A18 DA19 INDEX-8
lAlA 1106 TRIAD DOCOL
lAlC 56010C00 LIT,FF
1A20 E002 EMIT
1A22 56010300 LIT,3
1A26 D411 SLASH
1A2S 56010300 LIT,3
1A2C B511 STAR
l A 2 F 56010300 LIT,3
IA3XD05C904 OVER,PLUS
1A36 4905EF01 SWAP,XDO
1A3A 10030B02 TRIAl CR,ID0
1A3E 9719 LIST
1A40 0303 QTERM ; ?TERMINAL
iA42 92010400 ZBRAN,TRIA2-$ ; IF
1A46 5E04 LEAVE ; LEAVE
LA48 A8OlFOFF TRIA2 XLOOP,TRIA~-$ ; ENDIF
iA4C 1003 CR
1A4E 56010F00 LIT, 15
1A52 70121003 MESS,CR
1A56 4704 SEM1 S
lA58 84 84H ; .CPU
1A59 2E4350
lA5C D5
.
' CP'
'U8+8OH
1A5D 121A TRIAD-8
1A5F 1106 DOTCPU DOCOL
1A61 B.2079705 BASE,AT
1A65 56012400 LIT,36
1A69 R207CE05 BASE,STORE
1AbD 56012200 LIT,22H
1A71 F806R405 PORIG,TAT
LA75 O C 1 9 DDOT
1A77 B207CE05 BASE,STORE
l A i B 4704 SEM1S
84H ; TASK
'TAS'
'K8+80H
DOTCPU-7
TASK DOCOL
SEMIS
CP/M MACRO ASSEM 2.0 a074 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
3
PAGE
CP/M MACRO ASSEM 2.0 8080 FIG-FORTH 1.1 VERSION A0 15SEP79
MEMORY MAP
( THE FOLLOWING EQUATES ARE NOT REFERENCED ELSEWHERE )
LOCATION CONTENTS
Y
9
-------- --------
MCOLD EQU ORIG ;JMP TO COLD START
MWARM EQU ORIGi-4 ;JMP TO W A R M START
MA2 EQU ORIGi-8 ;COLD START PARAMETERS
MUP EQU UP ;USER VARIABLES' BASE 'REG'
MRP EQU RPP ;RETURN STACK 'REGISTER'
;
MBIP EQU BIP ;DEBUG SUPPORT
MDPUSH EQU DPUSH ;ADDRESS INTERPRETER
MHPUSH EQU HPUSH
MNEXT EQU NEXT
I
MDPO EQU DPO ;START FORTH DICTIONARY
MDIO EQU DRIVE ;CP/M DISK INTERFACE
MCIO EQU EPRINT ;CONSOLE 6 PRINTER INTERFACE
MIDP EQU INITDP ;END INITIAL FORTH DICTIONARY
Y
*
9
-
= COLD (DP) VALUE
COLD (FENCE) VALUE
I NEW
9 I DEFINITIONS
7 v
I I DATA
I I STACK
MIS0 EQU ; = COLD (SP) VALUE = (SO)
Y = (TIB)
9 I TERMINAL INPUT
I BUFFER
v
Y I RETURN
9 I STACK
MIRO EQU INITRO ;START USER VARIABLES
7 = COLD (RP) VALUE = (RO)
Y = (UP)
7 ;END USER VARIABLES
MFIRST EQU BUF 1 ;START DISK BUFFERS
Y = FIRST
MEND EQU EM- 1 ;END DISK BUFFERS
MLIMIT EQU EM ;LAST MEMORY LOC USED + 1
7 = LIMIT
Y
END ORIG
0 0 2 0 ABL 1058 ABORT 1 1 2 C ABS OOOD ACR OOZE ADOT
1 7 C O AGAIN 08 1 3 ALLOT 0 3 C 3 ANDD 1 6 2 7 ARROW 0 5 9 7 AT
1 7 1 5 BACK 0 7 B 2 BASE 0 6 D E BBUF OED7 BCOMP 1 8 5 7 BDIGS
1 7 2 7 BEGIN 0 0 0 7 BELL 012A BIP 0 6 B 0 BL OCAB BLANK
0 7 5 D BLK 1 4 7 1 BL,OCl 1 4 3 F BLOC2 1 4 5 9 BLOC3 1 4 2 1 BLOCK
0080 B P S 017A B W 0 1 7 C BRAN1 01 3A BREAK 0 6 E A RSCR
0 0 7 F BSIN 0008 BSOUT 3BE0 BUFl 1 3 E 3 BUFF1 1 4 0 9 BUFF2
1 3 D 9 BUFFE OABO BUILD 1 9 8 B BYE 0 5 A 6 CAT 0830 CCOMM
0 9 2 C CFA 164E CIN 108F CLD 1099 C L D l 0 3 2 7 CMOVl
0 3 2 C CMOV2 0 3 1 D CMOVE 0084 CO 1 0 A 2 COLD 0 5 F D COLON
0 8 1 F COMMA OAOB COMP 0 6 4 9 CON 0 7 9 0 CONT OAE7 COUNT
1 6 5 7 COUT 1 6 7 7 CPOUl 1 6 6 7 CPOUT 0310 CR O E 9 5 CKEAl
O E 7 F CREAT 06BA CSLL 07CD CSPP 1645 CSTAT 0 5 D D CSTOR
0 79D CURR 1 1 3 B DABS 1 8 D 8 DDOTR 1 9 0 C DDOT 0 8 D 0 DDUP
08DA DDUPl OA6C DEC lOOA D E F I N 1 3 2 5 DEKSTY ODF9 D F I N l
OED9 DFIND 18B1 DIG1 0 2 3 5 DIG11 0 2 4 0 DIG12 021F DIGIT
1 8 9 5 DIG 18CO D I G S 18C2 DIGS1 0010 DLE 1 2 5 C DLINE
OF20 DLITl OF10 DLITE 0 5 0 F DMINU 0611 DOCOL 0653 DOCON
OACC DODOE 1 7 5 F DO OACO DOES 1 A 5 F DOTCPU 0 B 7 4 DOTQ
O B 9 4 DOTQl OB9C DOTQ2 1 9 1 A DOT 1 8 F B DOTR 0 6 7 F DOUSE
0 6 6 D DOVAR O F E 2 DOVOC 0150 DPO 07BB DPL 0 4 D 6 DPLUS
0 7 4 5 DP l l l A DPM 11 2 4 DPMl 0 1 4 3 DPUSH 1 2 D 2 DRIVE
1 3 C 6 DRONl 13CA DRON 2 1 3 B 4 DRONE 0 5 3 C DROP 1 3 A 4 DRZER
1 3 3 6 DSKERR O B 3 0 DTRAl OB4A DTRA2 OB4E DTRA3 O B 2 8 DTRAI
0 5 5 6 DUP 1866 E D I G S 1 8 0 7 ELSEE 4 0 0 0 EM 02EO EMIT
0 2 9 C ENCL 0 2 A 6 ENCLl 0 2 B E ENCL2 0 2 C A ENCI,3 0 2 D 1 ENCL4
1 7 3 2 ENDD 1 7 3 9 ENDIFF 1 6 4 3 EPRINT 0855 EQUAL OC9A ERASEE
O E 2 i ERR01 OE40 ERR02 O E 1 3 ERROR 0 1 6 B EXEC OBBl E X P E l
OBEB E X P E 2 OCl 1 EXPE3 O C 0 3 EXPE4 OC05 EXPE5 ORE3 E X P E 6
OBE7 EXPE7 OBA7 EXPEC 0 7 3 0 FENCE OOOC F F 0001 F I G R E L
0001 F I G R E V OC7A F I L L OC82 F I L L 1 OC8E F I L L 2 06C6 FIRST
0 7 C 4 FLD 1 5 E 2 FLUS1 1 5 D 8 FLUSH 1 6 D 8 FORG O F F 2 FORTH
0 4 8 8 FROMR 0 8 A 3 GREAT 0803 HERE OA56 HEX 0 7 D E HLD
OCBA HOLD 0 1 4 4 HPUSH O E 4 8 IDDOT 020B ID0 17FO I F F
OFA9 IMMED 1 9 F 2 INDEl lAOC I N D E Z 1 9 E 2 INDEX iA88 INITDP
3BA0 INITRO 3B00 INITSO 0 7 6 5 INN OF5D I N T E l OF7F INTE2
OF75 INTE3 OF79 INTE4 OF99 INTE5 OF93 INTE6 OF97 INTE7
OF5B INTER 1 4 7 9 10s 0080 KBBUF 0006 K C I N 0009 KCOUT
0003 KCSTAT 0 2 F 2 KEY OOOC KPOUT 0 9 0 C LATES OA21 LBRAC
0 4 5 E LEAVE 086D LESl 0 8 7 8 LES2 0861 L E S S OOOA L F
0 9 1 C LFA 06D2 LIMIT 1997 LIST 19B6 LIST1 19D2 LIST2
0156 LIT OF03 L I T E l OEF3 L I T E R 1 5 F 5 LOAD 1 7 7 2 LOOP
0108 MA2 115F MAX 1 1 6 B MAX1 0 1 2 A MBIP 1643 X C I O
0 100 MCOLD 1 2 D 2 MDIO 0150 MDPO 0143 MDPUSH 3 F F F MEND
1 2 7 0 MESS 1 2 9 6 MESS1 1 2 9 2 MESS2 1 2 A 1 MESS3 3BEO M F I R S T
0 1 4 4 MHPUSH 1 A 8 8 MIDP 1149 M I N 1155 M I N l 04F9 MINUS
3 B A 0 MIRO 3B00 MIS0 4000 M L I M I T 0145 MNEXT 11E 4 MODD
0358 MPYX 0 3 5 D ?-PYX1 0365 MPYX2 0 1 2 8 MRP 118F MSLAS
1 2 1 7 MSMOD 1 1 7 4 MSTAR 1390 MTBUF 0126 MUP 0 1 0 4 MWARM
0 0 0 2 MXDRV 0008 NBUF 0 1 4 5 NEXT 0 1 4 B NEXT1 0 9 3 A NFA
1317 NOBUF 0 6 3 A NOOP 0001 NSCR OC3B NULL OC6D NULL1
O C 6 9 NULL2 OC7 1 NULL3 O D 8 1 NUMB O D 9 F NUMB1 ODC5 NUMB2
ODCF NUMB3 0 7 8 3 OFSET 0 6 9 7 ONE 0 7 E 7 ONEP 0100 O R I G
62
FORTH INTEREST GROUP o e - e * F?O. Box 1105 San Carlos, Ca. 94070
03D5 ORR 076E OUTT 052D OVER OE05 PABOR OCD2 PAD
1 6 1 PAREN
~ 1341 PBUF 1357 PBUFl 16AA P C R OB5B PDOTQ
1 6 9 E PEMIT 0950 PFA 0250 PFINl 0259 PFIN2 0278 PFIN3
027B PFIN4 0281 PFIN5 0269 PFIN6 024D PFIND 1686 PKEY
1 6 9 8 PKEYl 1236 PLINE 1788 PLOOP 04C9 PLUS 1108 PM
1 1 1 2 PM1 OD38 PNUMl OD74 PNUM2 OD6E PNUM3 OD36 PNUMB
0 6 F 8 PORIG 1660 POUT 1683 PQTEl 1678 PQTER 12FD PREV
OA82 PSCOD 0572 PSTOR 12A8 PTAT 12BC PTSTO 0992 QCOMP
09D4 QCSP 0978 QERR 0986 QERRl 0988 QERR2 09AA QEXEC
0 9 F 1 QLOAD 0 9 C l QPAIR OF2B QSTAC 0303 QTERM OC23 QUERY
1 9 2 6 QUES 102B QUIT 1035 QUIT1 104C QUIT2 OA2F RBRAC
0 0 2 4 RDSEC 17D7 REPEA 0027 RITSEC 0 7D5 RNUM 08B1 ROT
0 4 2 1 RPAT 0 1 2 8 RPP 042F RPSTO 049C RR 1588 RSLW
15A2 RSLWl 15B4 RSLW2 15B6 RSLW3 OOAi) RTS 0710 RZERO
0 7 7 7 SCR 0 9 6 5 SCSP 12DC SEC 1556 SECRD 1572 SECWT
0 6 2 5 SEMI OAA2 SEMI1 OA98 SEMIC 0447 SEMIS 0021 SETDMA
14BA SETDRV 0 0 1 8 SETDSK 1487 SET10 OOlE SETSEC OOlB SETTRK
1 8 7 F SIGN 1 8 8 F SIGN1 llD4 SLASH llC4 SLMOD OA44 SMUDG
0 8 C l SPACE 183A SPACS 03FB SPAT 1850 SPAXl 184A SPAX2
130B SPBLK 07D2 SPDRVL OFA4 SPDRV2 040A SPSTO OOlA SPTl
0 0 3 4 SPT2 1 2 0 5 SSLA llF4 SSMOD 083C SSUB llB5 STAR
07A8 STATE 1 0 F 3 STOD 1100 STODl 05CE STORE 0847 SUBB
0 5 4 9 SWAP 0 7 0 7 SZERO 1A84 TASK 05B4 TAT 0564 TDUP
1 7 5 4 THEN 06A7 THREE 071A TIB 16BF TICK 012C TNEXT
0 13D TNEXTl 0 5 8 9 TOGGL 0 4 7 2 TOR 12E8 TRACK 08E7 TRAV
08EB TRAVl 1A3A TRIAl 1A48 TRIA2 lAlA TRIAD 004D TRKSl
004D TRKS2 14FD TSCALl 1 5 0 3 TSCAL2 1533 TSCAL3 1539 TSCAL4
14D5 TSCALC 1 5 1 5 TSCALS 05EA TSTOR 069F TWO 07F4 TWOP
OAFA TYPE OBI8 TYPE1 OBOA TYPE2 OBiA TYPE3 1933 UDOT
0 8 9 9 ULESl 089D ULES2 0 8 8 3 ULESS 179E UNTIL 0126 UP
136A UPDAT 0 0 4 0 US 0 6 7 9 USER 12F2 USE 038C USLAl
0 3 8 E USLA2 0 3 9 7 USLA3 03A6 USLA4 03B1 USLA5 03B2 USLA6
03B7 USLA7 0 3 6 F USLAS 0 0 0 0 USRVER 033A USTAR 0667 VAR
1953 VLISl 1 9 6 7 VLIS2 1 9 4 3 VLIST OFC2 VOCAB 0753 VOCL
1 0 8 9 WARM 0 7 3 2 WARN 1 8 2 9 WHILE 0725 WIDTH OCE5 WORD
OCF9 WORD 1 OCFD WORD2 10 7A WRM 1080 WRMl OlEF XDO
OlAD XLOOl 01C7 Z O O 2 OlCC XL003 01A8 XLOOP 03E8 XORR
0 l E 2 XPLOO 0 1 9 2 ZBRAN 04A3 ZEQU 04AF ZEQUl 068F ZERO
04C2 ZLESl 04B7 ZLESS
FORTH INTEREST GROUP * - = - * P O . Box 1105 --*". San Carlos, Ca. 94070