Ze začátku souboru FIG6502.ASX
; ; Through the courtesy of ; ; FORTH INTEREST GROUP ; P.O. BOX 2154 ; OAKLAND, CALIFORNIA ; 94621 ; ; ; ; Release 1.k0010 ; ; with compiler security ; and ; variable length names ; ; Further dstribution need not include this notice ; The FIG installation Manual is required as it contains ; the model of FORTH and glossary of the system. ; Might be available from FIG at the above address for $95.00 postpaid. ; ; Translated from FIG model by W.F. Ragsdale with input- ; output given for Rockwell System-65. Transportation to ; other systems requires only the alteration of : ; XEMIT, XKEY, XQTER, XCR, AND RSWL ;
; Equates giving memory assignments, machine
; registers, and disk parameters.
;
SSIZE EQU 128 ; sector size in bytes
NBUF EQU 8 ; number of buffers desired in RAM
; (SSIZE*NBUF >= 1024 bytes)
SECTR EQU 800 ; sector per drive
; forcing high drive to zero
SECTL EQU 1600 ; sector limit for two drives
; of 800 per drive.
BMAG EQU 1056 ; total buffer magnitude, in bytes
; expressed by (SSIZE+4)*NBUF
;
BOS EQU $20 ; bottom of data stack, in zero-page.
TOS EQU $9E ; top of data stack, in zero-page.
N EQU TOS+8 ; scratch workspace
IP EQU N+8 ; interpretive pointer
W EQU IP+3 ; code field pointer
UP EQU W+2 ; user area pointer
XSAVE EQU UP+2 ; temporary for X register.
;
TIBX EQU $0100 ; terminal input buffer of 84 bytes.
ORIG EQU $0200 ; origin of FORTH's Dictionary.
MEM EQU $4000 ; top of assigned memory+1 byte.
UAREA EQU MEM-128 ; 128 bytes of user area
DAREA EQU UAREA-BMAG ; disk buffer space.
;
; Monitor calls for terminal support
;
OUTCH EQU $D2C1 ; output one ASCII char. to term.
INCH EQU $D1DC ; input one ASCII char. to term.
TCR EQU $D0F1 ; terminal return and line feed.
;
; From DAREA downward to the top of the dictionary is free
; space where the user's applications are compiled.
![]() | Terminal Input Buffer |
;
; Boot up parameters. This area provides jump vectors
; to Boot up code, and parameters describing the system.
;
;
ORG ORIG
;
; User cold entry point
ENTER NOP ; Vector to COLD entry
JMP COLD+2 ;
REENTR NOP ; User Warm entry point
JMP WARM ; Vector to WARM entry
.WORD $0004 ; 6502 in radix-36
.WORD $5ED2 ;
.WORD NTOP ; Name address of MON
.WORD $7F ; Backspace Character
.WORD UAREA ; Initial User Area
.WORD TOS ; Initial Top of Stack
.WORD $1FF ; Initial Top of Return Stack
.WORD TIBX ; Initial terminal input buffer
;
;
.WORD 31 ; Initial name field width
.WORD 0 ; 0=no disk, 1=disk
.WORD TOP ; Initial fence address
.WORD TOP ; Initial top of dictionary
.WORD VL0 ; Initial Vocabulary link ptr.
;
; NEXT is the address interpreter that moves from machine
; level word to word.
;
NEXT LDY #1
LDA (IP),Y ; Fetch code field address pointed
STA W+1 ; to by IP
DEY
LDA (IP),Y
STA W
JSR TRACE ; Remove this when all is well
CLC ; Increment IP by two.
LDA IP
ADC #2
STA IP
BCC L54
INC IP+1
L54 JMP W-1 ; Jump to an indirect jump (W) which
; vectors to code pointed to by a code
; field.