TriOS-alt/flash/regnatix/regflash.spin

5956 lines
570 KiB
Plaintext
Raw Normal View History

2011-11-11 17:41:02 +01:00
<EFBFBD><EFBFBD>{{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Autor: Ingo Kripahle %
% Copyright (c) 2010 Ingo Kripahle %
% See end of file for terms of use. %
% Die Nutzungsbedingungen befinden sich am Ende der Datei %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Informationen : hive-project.de
Kontakt : drohne235@googlemail.com
System : TriOS
Name : Regnatix-Flash
Chip : Regnatix
Typ : Flash
Version : 01
Subversion : 1
Beschreibung : Residenter Bootloader des Systems. L<00>uft auf der ersten COG und startet BIN-Dateien
von SD-Card. Gesteuert wird er von den Programmen <00>ber ein einfaches Interface: Im
eRAM <00>bergibt der Loader einen Pointer auf das Loaderflag und einen anschlie<00>enden
Puffer von 16 Byte f<00>r einen Dateinamen. Ein Programm kann also einen Dateinamen
hinterlegen und das Flag auf 1 setzen, worauf der Loader die COGs 1..7 stoppt, die
BIN-Datei in den Heap l<00>dt und startet.
Bootvorgang: Bei Systemstart wird die Datei "reg.sys" in den Heap geladen und
gestartet.
Logbuch:
19-11-2008-dr235 - erste version startet sys.bin
- steuerung durch anwendung integriert
22-03-2010-dr235 - anpassung trios
26-04-2010-dr235 - fehlerabfrage beim mount (in einigen f<00>llen war die fatengine noch nicht so weit)
16-05-2011-dr235 - umstellung blocktransfer zu administra
- einbindung propforth :)
header einer bin-datei
00 00 b400 ' clkfreq low
02 02 04c4 ' clkfreq hi
04 04 ca6f ' sum byte, clkmode byte
06 06 0010 ' (obj) object start addr
08 08 005c ' (vars) variables start
10 0A 0088 ' (stk) stack start
12 0C 002c ' (PUB) obchain first PUB method start
14 0E 008c ' (isp) initial stack pointer value
word[3] - PBASE - Program base. This is the start of the DAT variables and program code after the 16-byte header. It always has a value of 16, or $10
word[4] - VBASE - Variable base. This starts immediately after the program code. It should always be the same as the file size.
word[5] - DBASE - Stack variable base. This points to the first variable on the stack at program start, which is the RESULT variable.
word[6] - PCURR - Current program counter. This points at the starting address of the first instruction to be executed.
word[7] - DCURR - Stack pointer. This is the initial value of the stack pointer.
--------------------------------------------------------------------------------------------------------- }}
CON ' KONFIGURATION
{
Achtung: Nur eine Konfiguration w<00>hlen!
}
'#define forth ' forth + spin-loader
#define regime ' spin-loader OHNE FORTH, reg.sys wird sofort automatisch gestartet
CON ' LOADER-KONSTANTEN
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
COGMAX = 8
INTERPRETER = $f004 'interpreteradresse (rom)
'signaldefinition regnatix
#0, D0,D1,D2,D3,D4,D5,D6,D7 'datenbus
#8, A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 'adressbus
#19, REG_RAM1,REG_RAM2 'selektionssignale rambank 1 und 2
#21, REG_PROP1,REG_PROP2 'selektionssignale f<00>r administra und bellatrix
#23, REG_AL 'strobesignal f<00>r adresslatch
#24, HBEAT 'front-led
BUSCLK 'bustakt
BUS_WR '/wr - schreibsignal
BUS_HS ' '/hs - quittungssignal
'system
LOADERPTR = $0FFFFB 'eram-adresse mit pointer auf loader-register
MAGIC = $0FFFFA 'Warmstartflag
'prop 1 - administra (bus_putchar1, bus_getchar1)
'prop 2 - bellatrix (bus_putchar2, bus_getchar2)
' +------------------------- al
' |+------------------------ /prop2
' hbeat --------+ ||+----------------------- /prop1
' clk -------+| |||+---------------------- /ram2
' /wr ------+|| ||||+--------------------- /ram1
' /hs -----+||| ||||| +--------- a0..a10
' |||| ||||| |
' |||| |||||-----------+ -------- d0..d7
DB_OFF = %00000000_00000000_00000000_00000000 'maske: bus inaktiv
DB_IN = %00000111_11111111_11111111_00000000 'maske: dbus-eingabe
DB_OUT = %00000111_11111111_11111111_11111111 'maske: dbus-ausgabe
M1 = %00000000_01011000_00000000_00000000 '/prop1=0, /wr=0, busclk=0 frida
M2 = %00000110_01011000_00000000_00000000 '/prop1=0, /wr=1, busclk=1 frida
M3 = %00000100_01111000_00000000_00000000 '/prop1=1, /wr=1, busclk=0 frida
M4 = %00000000_00000000_00000000_00000000
M5 = %00001000_00000000_00000000_00000000 '/hs=0?
#0, OPT
SD_MOUNT
SD_DIROPEN
SD_NEXTFILE
SD_OPEN
SD_CLOSE
SD_GETC
SD_PUTC
SD_GETBLK
SD_PUTBLK
SD_SEEK
SD_FATTRIB
SD_VOLNAME
SD_CHECKMOUNTED
SD_CHECKOPEN
SD_CHECKUSED
SD_CHECKFREE
SD_NEWFILE
SD_NEWDIR
SD_DEL
SD_RENAME
SD_CHATTRIB
SD_CHDIR
SD_FORMAT
SD_UNMOUNT
SD_DMACT
SD_DMSET
SD_DMGET
SD_DMCLR
SD_DMPUT
SD_EOF
CON ' FORTH-KONSTANTEN
_cogDataSize = 224 ' _cdsz forth word
_wordMASK = $FFFF
' for the serial driver
_buffer_length = 128 ' 32 64 OR 128
_buffer_mask = _buffer_length - 1 ' bitmaske f<00>r ringpuffer
VAR
byte proghdr[16] 'puffer f<00>r objektkopf
' achtung: reihenfolge der folgenden zwei variablen nicht <00>ndern!
byte lflag 'flag zur steuerung des loaders
byte lname[16] 'stringpuffer f<00>r dateinamen
PUB main | spinbin,i 'loader: hauptroutine
{{main - loader: hauptroutine}}
bus_init 'bus initialisieren
wr_long(@lflag,LOADERPTR) 'zeiger auf loader-register setzen
' ----------------------------------------------------- FORTH
#ifdef forth
word[@ldvarVAL] := @lflag 'zeiger auf loader-register f<00>r forth setzen
bus_off 'bus f<00>r loader deaktivieren
' allocate locks 0 and 1 for PropForth
i := locknew
i := locknew
' and the memory variables
if WORD[ @herePFA + 2] == 0
WORD[ @herePFA + 2] := @wfreespacestart + $10
bytefill( @cogdataPFA, 0, 8 * _cogDataSize)
WORD[ @_finitPFA + 2] := 0
WORD[ @dictendPFA + 2] := @ForthDictEnd + $10
WORD[ @memendPFA + 2] := @ForthMemoryEnd + $10
WORD[ @_cdszPFA + 2] := _cogdatasize
' start forth cog
coginit(6, @entryPFA, @cogdataPFA + (6 * _cogDataSize))
#endif
' ----------------------------------------------------- REGIME
#ifdef regime
spinbin := load(@sysname) 'start-bin laden
bus_off 'bus deaktivieren
run(spinbin) 'sys-objekt ausf<00>hren
#endif
' ----------------------------------------------------- LOADER
repeat 'kommandoschleife
repeat until lflag <> 0 'warte das flag gesetzt ist
lflag := 0
repeat i from 1 to 7 'cog 1..7 anhalten
cogstop(i)
bus_init 'objekt laden und ausf<00>hren
spinbin := load(@lname)
bus_off
run(spinbin)
PRI errorled(time) 'loader: fehleranzeige <00>ber cardreader-led
{{errorled(time) - loader: fehleranzeige <00>ber cardreader-led}}
repeat
bus_putchar1(OPT)
waitcnt(clkfreq / 4 * time + cnt)
PRI run(spinptr) 'loader: bin-datei bei adresse starten
{{run(spinprt) - loader: bin-datei bei adresse starten}}
if spinptr
cognew(INTERPRETER, spinptr+4) 'neuen cog mit objekt starten
PRI load(fname) | rc,ii,plen,progptr 'loader: datei in heap laden
{{load(fname) - loader: datei in heap laden}}
' kopf der bin-datei einlesen ------------------------------------------------------
rc := sdopen("r",fname) 'datei <00>ffnen
if rc > 0 'fehler bei <00>ffnen?
errorled(1)
repeat ii from 0 to 15 '16 bytes --> proghdr
byte[@proghdr][ii] := sdgetc
plen := word[@proghdr+$A] '$a ist stackposition und damit l<00>nge der objektdatei
if plen > (@heapend - @heap) 'objekt gr<00><00>er als verf<00>gbarer speicher?
errorled(1)
sdclose 'bin-datei schie<00>en
' bin-datei einlesen ------------------------------------------------------
progptr := @heap
progptr := (progptr + 4) & !3
sdopen("r",fname) 'bin-datei <00>ffnen
' repeat ii from 0 to plen-1 'datei --> heap
' byte[progptr][ii] := sdgetc
sdgetblk(plen,progptr)
sdclose
' zeiger im header mit offset versehen ------------------------------------------------------
Repeat ii from 0 to 4
Word[progptr+6+ii<<1] += progptr
' variablenbereich l<00>schen ------------------------------------------------------
rc := word[@proghdr+$8]
Repeat ii from rc to plen step 4
long[progptr + ii] := 0
' stackwerte setzen? ------------------------------------------------------
long[progptr+plen-4] := $fff9ffff
long[progptr+plen-8] := $fff9ffff
return progptr
CON ' SYSTEMROUTINEN
PUB sdgetblk(count,bufadr) | i 'sd-card: block lesen
''funktionsgruppe : sdcard
''funktion : block aus datei lesen
''busprotokoll : [008][sub_putlong.count][get.char(1)]..[get.char(count)]
'' : count - anzahl der zu lesenden zeichen
'' : char - gelesenes zeichen
i := 0
bus_putchar1(SD_GETBLK)
bus_putlong1(count)
repeat count
byte[bufadr][i++] := bus_getchar1
PUB sdgetc: char 'sd-card: liest ein byte aus ge<00>ffneter datei
{{sdgetc: char - sd-card: liest ein byte aus ge<00>ffneter datei}}
bus_putchar1(SD_GETC)
char := bus_getchar1
PUB sdclose:err 'sd-card: schlie<00>t datei
{{sdclose: err - sd-card: schlie<00>t datei}}
bus_putchar1(SD_CLOSE)
err := bus_getchar1
PUB sdopen(modus,stradr):err | len,i 'sd-card: <00>ffnet eine datei
{{sdopen(modus,stradr - sd-card: <00>ffnet eine datei}}
bus_putchar1(SD_OPEN)
bus_putchar1(modus)
len := strsize(stradr)
bus_putchar1(len)
repeat i from 0 to len - 1
bus_putchar1(byte[stradr++])
err := bus_getchar1
PUB bus_putlong1(wert) 'bus: long zu administra senden hsb/lsb
bus_putchar1(wert >> 24) '32bit wert senden hsb/lsb
bus_putchar1(wert >> 16)
bus_putchar1(wert >> 8)
bus_putchar1(wert)
PUB bus_putchar1(c) 'bus: byte an prop1 (administra) senden 'frida prop2 --> prop1
{{bus_putchar1(c) - bus: byte senden an prop1 (administra)}}
outa := M1 '/prop1=0, /wr=0, busclk=0
dira := db_out 'datenbus auf ausgabe stellen
outa[7..0] := c 'daten --> dbus
outa[busclk] := 1 'busclk=1
waitpeq(M4,M5,0) '/hs=0?
dira := db_in 'bus freigeben
outa := M3 '/prop1=1, /wr=1, busclk=0
PUB bus_getchar1:wert 'bus: byte vom prop1 (administra) empfangen 'frida prop2 --> prop1
{{bus_getchar1:wert - bus: byte empfangen von prop1 (administra)}}
outa := M2 '/prop1=0, /wr=1, busclk=1
waitpeq(M4,M5,0) 'hs=0?
wert := ina[7..0] 'daten einlesen
outa := M3 '/prop1=1, /wr=1, busclk=0
PUB ram_write(wert,adresse) 'schreibt ein byte in eram
{{ram_write(wert,adresse) - ein byte in externen ram schreiben}}
'rambank 1 000000 - 07FFFF
'rambank 2 080000 - 0FFFFF
outa[bus_wr] := 0 'schreiben aktivieren
dira := db_out 'datenbus --> ausgang
outa[7..0] := wert 'wert --> datenbus
outa[15..8] := adresse >> 11 'h<00>herwertige adresse setzen
outa[reg_al] := 1 'obere adresse in adresslatch <00>bernehmen frida
outa[reg_al] := 0 'frida
outa[18..8] := adresse 'niederwertige adresse setzen
if adresse < $080000 'rambank 1?
outa[reg_ram1] := 0 'ram1 selektieren (wert wird geschrieben)
outa[reg_ram1] := 1 'ram1 deselektieren
else
outa[reg_ram2] := 0 'ram2 selektieren (wert wird geschrieben)
outa[reg_ram2] := 1 'ram2 deselektieren
dira := db_in 'datenbus --> eingang
outa[bus_wr] := 1 'schreiben deaktivieren
PUB wr_long(wert,eadr) | n 'schreibt long ab eadr
{{wr_long(wert,eadr) - schreibt long ab eadr}}
n := wert & $FF
ram_write(n,eadr)
n := (wert >> 8) & $FF
ram_write(n,eadr + 1)
n := (wert >> 16) & $FF
ram_write(n,eadr + 2)
n := (wert >> 24) & $FF
ram_write(n,eadr + 3)
PUB bus_off 'bus: bus komplett abschalten
{{bus_off - bus: bus kompeltt abschalten}}
dira := db_off ' datenbus auf eingabe schalten
PUB bus_init 'bus: initialisiert bussystem
{{bus_init - bus: initialisierung aller bussignale }}
outa[18..8] := 0 ' adresse a0..a10 auf 0 setzen
outa[reg_ram1] := 1 ' ram1 inaktiv
outa[reg_ram2] := 1 ' ram2 inaktiv
outa[reg_prop1] := 1 ' prop1 inaktiv
outa[reg_prop2] := 1 ' prop2 inaktiv
outa[busclk] := 0 ' busclk startwert
outa[bus_wr] := 1 ' schreiben inaktiv
dira := db_in ' datenbus auf eingabe schalten frida
outa[reg_al] := 1 ' obere adresse in adresslatch <00>bernehmen frida
outa[reg_al] := 0 'frida
DAT
sysname byte "reg.sys", 0 'name der systemdatei
DAT ' HEAP FORTH-KONF
#ifdef forth
heap
a_base
org 0
{{
Assembler Code
Assembler routines which correspond to forth words are documented in the forth area
}}
entryPFA
jmp #a_next
a__execasmtwogtone
rdword treg1, IP
movi a__execasmtwogtonei, treg1
add IP, #2
call #a_stpoptreg
a__execasmtwogtonei
and stTOS, treg1
jmp #a_next
a__execasmonegtone
rdword treg1, IP
movi a__execasmonegtonei, treg1
add IP, #2
a__execasmonegtonei
abs stTOS, stTOS
jmp #a_next
a__execasmtwogtz
rdword treg1, IP
movi a__execasmtwogtzi, treg1
add IP, #2
call #a_stpoptreg
a__execasmtwogtzi
abs stTOS, treg1
a_drop
call #a_stPop
jmp #a_next
a_COGat
movs a_COGatget, stTOS
nop ' necessary, really needs to be documented
a_COGatget mov stTOS, stTOS
jmp #a_next
a_COGbang
movd a_COGbangput, stTOS
call #a_stPop
a_COGbangput mov stTOS, stTOS
jmp #a_drop
a_branch
rdword treg1,IP ' the next word
add IP, treg1 ' add the offset
and IP , fAddrMask
jmp #a_next
a_doconw
call #a_stPush
rdword stTOS, IP
jmp #a_exit
a_dovarl
add IP, #3
andn IP, #3 ' align to a long boundary
a_dovarw
call #a_stPush
mov stTOS, IP
jmp #a_exit
a_litl
call #a_stPush
add IP, #3
andn IP, #3 ' align to a long boundary
rdlong stTOS, IP
add IP, #4
jmp #a_next
a_doconl
call #a_stPush
add IP, #3
andn IP, #3 ' align to a long boundary
rdlong stTOS, IP
jmp #a_exit
a_dup
call #a_stPush
jmp #a_next
' treg1 - cstr2 (name)
' stTOS - cstr1 (name)
' uses treg2, treg4, and treg5
' z flag set if strings are equal
c_streq
c_streq5
mov treg4 , # $1F
' length of cstr2 (name)
rdbyte treg2 , treg1 wz
' length of cstr2 (name) - truncate to appropriate length
if_nz and treg2 , treg4 wz
' length of cstr1 (name)
if_nz rdbyte treg5 , stTOS wz
' length of cstr1 (name) - truncate to appropriate length
if_nz and treg5 , treg4 wz
' if either length is 0, move -1 into length of cstr1 to cause a mismatch
if_z mov treg5 , fLongMask
cmp treg2 , treg5 wz
if_nz jmp # c_streq7
a_cstreqloop
add stTOS , # 1
rdbyte treg4 , stTOS
add treg1 , # 1
a_cstreqlp
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
rdbyte treg5 , treg1
cmp treg4 , treg5 wz
if_z djnz treg2 , # a_cstreqloop
c_streq7
c_streq_ret
ret
' a_nameeq (name name -- t/f)
a_nameeq
movs c_streq5 , # $1F
jmp # a_nameeq4
' a_cstreq (cstr1 cstr2 -- t/f)
a_cstreq
movs c_streq5 , # $FF
a_nameeq4
call #a_stpoptreg
' treg1 - cstr2
' stTOS - dict cstr1
jmpret c_streq_ret , # c_streq
muxz stTOS , fLongMask
jmp # a_next
a__dictsearch
call #a_stpoptreg
mov treg6 , treg1
mov treg3 , stTOS
movs c_streq5 , # $1F
' treg6 - cstr
' treg3 - nfa
a__dictsearchlp
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
' treg1 - nfa
' stTOS - cstr
mov treg1 , treg6
mov stTOS , treg3
jmpret c_streq_ret , # c_streq
if_nz jmp # a__dictsearch2
a__dictsearch1
mov stTOS , treg3
jmp # a_next
a__dictsearch2
mov treg2 , treg3
sub treg2 , # 2
rdword treg3 , treg2 wz
if_z jmp # a__dictsearch1
jmp # a__dictsearchlp
a_eq
call #a_stpoptreg
cmp treg1, stTOS wz, wc
muxz stTOS, fLongMask
jmp #a_next
a_gt
'( n1 n2 -- flag )
call #a_stpoptreg ' flag is true if and only if n1 is greater than n2
cmps stTOS, treg1 wz, wc
if_a neg stTOS, #1
if_be mov stTOS, #0
jmp #a_next
a_hubop
call #a_stpoptreg
hubop stTOS, treg1 wr,wc
muxc treg1, fLongMask
call #a_stPush
mov stTOS, treg1
jmp #a_next
a_litw
call #a_stPush
rdword stTOS, IP
a_litw1
add IP, #2
jmp #a_next
a_lt
'( n1 n2 -- flag )
call #a_stpoptreg ' flag is true if and only if n1 is less than n2
cmps stTOS, treg1 wz, wc
if_b neg stTOS, #1
if_ae mov stTOS, #0
jmp #a_next
a_exit
call #a_rsPop
mov IP, treg5
' jmp #a_next SINCE WE ARE ALREADY There
a_next
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
a_debugonoff
if_never jmpret a_dum_ret, # a_dum ' when debug is loaded this address will be patched
rdword treg1,IP ' the next word
test treg1, fMask wz
if_z add IP, #2 ' if the one of the hi bits is not set, it is an assembler word, inc IP
if_z jmp treg1
rdword treg1, IP ' otherwise it is a forth word
mov treg5, IP
add treg5, #2
mov IP, treg1
call #a_rsPush
jmp #a_next
a_over
call #a_stpoptreg
mov treg2, stTOS
call #a_stPush
mov stTOS, treg1
call #a_stPush
mov stTOS, treg2
jmp #a_next
a__maskin
and stTOS, ina wz
muxnz stTOS, fLongMask
jmp # a_next
a__maskouthi
jmp # a__maskoutex wz
a__maskoutlo
test stTOS, #0 wz
a__maskoutex
muxnz outa, stTOS
jmp # a_drop
a_rot
call #a_stpoptreg
mov treg2, stTOS
call #a_stPop
mov treg3, stTOS
mov stTOS, treg2
call #a_stPush
mov stTOS, treg1
call #a_stPush
mov stTOS, treg3
jmp #a_next
a_rgt
call #a_rsPop
call #a_stPush
mov stTOS, treg5
jmp #a_next
a_twogtr
mov treg5, stTOS
call #a_stPop
call #a_rsPush
a_gtr
mov treg5, stTOS
call #a_stPop
call #a_rsPush
jmp #a_next
a_lparenlooprparen
mov treg1, #1
jmp #a_lparenpluslooprparen1
a_lparenpluslooprparen
call #a_stpoptreg
a_lparenpluslooprparen1
call #a_rsPop
mov treg2, treg5
call #a_rsPop
add treg5, treg1
cmp treg2, treg5 wc ,wz
if_a call #a_rsPush ' branch
if_a mov treg5, treg2 ' branch
if_a call #a_rsPush ' branch
if_a jmp #a_branch
jmp #a_litw1
a_swap
call #a_stpoptreg
mov treg2, stTOS
mov stTOS, treg1
call #a_stPush
mov stTOS, treg2
jmp #a_next
a_umstar
call #a_stpoptreg
mov treg4, #0
mov treg2, #0
mov treg3, #0
a_umstarlp
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
shr stTOS, #1 wz,wc
if_nc jmp #a_umstar1
add treg4, treg1 wc
addx treg2, treg3
a_umstar1
shl treg1, #1 wc
rcl treg3, #1
if_nz jmp #a_umstarlp
mov stTOS, treg4
call #a_stPush
mov stTOS, treg2
jmp #a_next
a_umslashmod
call #a_stpoptreg
mov treg6, stTOS
call #a_stPop
mov treg3, #$40
mov treg2, #0
a_umslashmodlp
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
shl stTOS, #1 wc ' dividend
rcl treg6, #1 wc
rcl treg2, #1 wc ' hi bit from dividend
if_c sub treg2, treg1
if_nc cmpsub treg2, treg1 wc ' cmp divisor
rcl treg4, #1 ' treg1 - quotient
djnz treg3, #a_umslashmodlp
mov stTOS, treg2
call #a_stPush
mov stTOS, treg4
jmp #a_next
a_zbranch
call #a_stpoptreg
cmp treg1, #0 wz ' is the TOS zero?
if_z jmp #a_branch
jmp #a_litw1
a_reset
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses will be patched
wrword fLongMask , par
wrbyte treg6 , par
coginit resetDreg
{{
a_stPush - push stTOS on to stack
}}
a_stPush
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
movd a_stPush1, stPtr
cmp stPtr, #stBot wc
if_b mov treg6 , # $11
if_b jmp # a_reset
a_stPush1 mov stPtr, stTOS
sub stPtr, #1
a_stPush_ret
ret
{{
a_rsPush - push treg5 on to return stack
}}
a_rsPush
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
movd a_rsPush1, rsPtr
cmp rsPtr, #rsBot wc
if_b mov treg6 , # $12
if_b jmp # a_reset
a_rsPush1 mov treg1, treg5
sub rsPtr, #1
a_rsPush_ret
ret
{{
a_stpoptreg - move stTOS to treg1, and pop stTOS from stack
}}
a_stpoptreg
mov treg1, stTOS
{{
a_stPop - pop stTOS from stack
}}
a_stPop
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
add stPtr, #1
movs a_stPop1, stPtr
cmp stPtr, #stTop wc,wz
if_ae mov treg6 , # $21
if_ae jmp # a_reset
a_stPop1 mov stTOS, stPtr
a_stPop_ret
a_stpoptreg_ret
ret
{{
a_rsPop - pop treg5 from return stack
}}
a_rsPop
if_never jmpret a_stPop_ret, # a_stPop_ret ' when task manager is loaded these addresses wil be patched
add rsPtr, #1
movs a_rsPop1, rsPtr
cmp rsPtr, #rsTop wc,wz
if_ae mov treg6 , # $22
if_ae jmp # a_reset
a_rsPop1
a_dum
mov treg5, treg1
a_dum_ret
a_rsPop_ret
ret
'
' variables used by the forth interpreter, do not change the order or size -- or if you do, be really careful and update the forth code
'
varStart
fMask long $FE00 ' 0
fAddrMask long $7FFF ' 1
fLongMask long $FFFFFFFF ' 2
resetDreg long 0 ' 3
IP long @fstartPFA + $10 ' 4
stPtr long ((@stTop - @a_base) /4) - 1 ' 5
rsPtr long ((@rsTop - @a_base) /4) - 1 ' 6
stTOS long 0 ' 7
{{
These variables are overlapped with the cog data area variables to save space
}}
cogdataPFA
treg1 long 0 ' 8 working reg
treg2 long 0 ' 9 working reg
treg3 long 0 ' a working reg
treg4 long 0 ' b working reg
treg5 long 0 ' c working reg / call parameter reg
treg6 long 0 ' d working reg
stBot ' e
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' e
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 1e
stTop ' 2e
rsBot
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 2e
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 3e
rsTop ' 4e
varEnd
{{
cogdata
This data area is used for variables which are unique to each instance of forth, like
inbyte, emitptr, >in, pad, etc...
}}
'cogdataPFA long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 0
' long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
' long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
' long 0,0, 0,0, 0,0, 0,0,
' long 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 1
' long 0,0, 0,0, 0,0,
long 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 2
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 3
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 4
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 5 long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 6
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0 ' 224 bytes cog 7
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
{{
Start of the Forth Dicitonary
Dictionary Entry Structure
- there is no code pointer, it is inherent
LinkField - points to the previous name field in the dictionary
word
NameField
byte - length of the name field (lo 5 bits)
- bit 7 ($80) set if it is a forth word
- bit 6 ($40) set if it is an immediate word
- bit 5 ($20) set if it is an eXecute word - execute this word in interactive mode as well
if the immediate flag is set
bytes - the actual name
- if the name is a word constant, and it starts with $C_ the spinMaker assumes it to be a reference to the cog data
space and sets the constant to be (name - a_base) /4. If it starts with $H_ it is assumed to be a main memory
reference and the constant is set to be namePFA +$10
if the name is an assembler word the address is set to (a_name - a_base)/4 assembler names are not constants, they
are a different type of dictionary entry
ParameterField - the list of addresses to execute, and literals for a forth word
- if it is a forth word one ofthe hi bit ($FE00) will be set
- assembler addresses are always < 512
- this of course means that the ForthDictStart must have at least 512 bytes used before it, since this is only
128 longs, and the assembler code, and forth stacks are before this, this is not an issue
- if it is an assembler word there is only 1 word and it is the assembler address
Generated form forth code from here on in - written in forth spin generated
***************************************************************************************************************
***************************************************************************************************************
***************************************************************************************************************
}}
ForthDictStart
word 0
hereNFA byte $84,"here"
herePFA word (@a_dovarw - @a_base)/4
word $0000
word @hereNFA + $10
dictendNFA byte $87,"dictend"
dictendPFA word (@a_dovarw - @a_base)/4
word $7F40
word @dictendNFA + $10
memendNFA byte $86,"memend"
memendPFA word (@a_dovarw - @a_base)/4
word $7F40
word @memendNFA + $10
propidNFA byte $86,"propid"
propidPFA word (@a_dovarw - @a_base)/4
word $0000
word @propidNFA + $10
lparenproprparenNFA byte $86,"(prop)"
lparenproprparenPFA word @cqPFA + $10
byte $04,"Prop"
word (@a_exit - @a_base)/4
word @lparenproprparenNFA + $10
lparenversionrparenNFA byte $89,"(version)"
lparenversionrparenPFA word @cqPFA + $10
byte $20,"PropForth v4.0 2010NOV28 13:00 0"
word (@a_exit - @a_base)/4
word @lparenversionrparenNFA + $10
propNFA byte $84,"prop"
propPFA word (@a_dovarw - @a_base)/4
word $0000
word @propNFA + $10
versionNFA byte $87,"version"
versionPFA word (@a_dovarw - @a_base)/4
word $0000
word @versionNFA + $10
_finitNFA byte $86,"_finit"
_finitPFA word (@a_dovarw - @a_base)/4
word $FFFF
word @_finitNFA + $10
_cdszNFA byte $85,"_cdsz"
_cdszPFA word (@a_doconw - @a_base)/4
word $00E0
word @_cdszNFA + $10
conNFA byte $83,"con"
conPFA word (@a_doconw - @a_base)/4
word $0007
word @conNFA + $10
dlrH_serentryNFA byte $8B,"$H_serentry"
dlrH_serentryPFA word (@a_doconw - @a_base)/4
word @serentryPFA + $10
word @dlrH_serentryNFA + $10
dlrH_entryNFA byte $88,"$H_entry"
dlrH_entryPFA word (@a_doconw - @a_base)/4
word @entryPFA + $10
word @dlrH_entryNFA + $10
dlrH_cogdataNFA byte $8A,"$H_cogdata"
dlrH_cogdataPFA word (@a_doconw - @a_base)/4
word @cogdataPFA + $10
word @dlrH_cogdataNFA + $10
dlrH_cqNFA byte $85,"$H_cq"
dlrH_cqPFA word (@a_doconw - @a_base)/4
word @cqPFA + $10
word @dlrH_cqNFA + $10
dlrH_dqNFA byte $85,"$H_dq"
dlrH_dqPFA word (@a_doconw - @a_base)/4
word @dqPFA + $10
word @dlrH_dqNFA + $10
dlrC_a_exitNFA byte $89,"$C_a_exit"
dlrC_a_exitPFA word (@a_doconw - @a_base)/4
word (@a_exit - @a_base)/4
word @dlrC_a_exitNFA + $10
dlrC_a_dovarwNFA byte $8B,"$C_a_dovarw"
dlrC_a_dovarwPFA word (@a_doconw - @a_base)/4
word (@a_dovarw - @a_base)/4
word @dlrC_a_dovarwNFA + $10
dlrC_a_doconwNFA byte $8B,"$C_a_doconw"
dlrC_a_doconwPFA word (@a_doconw - @a_base)/4
word (@a_doconw - @a_base)/4
word @dlrC_a_doconwNFA + $10
dlrC_a_branchNFA byte $8B,"$C_a_branch"
dlrC_a_branchPFA word (@a_doconw - @a_base)/4
word (@a_branch - @a_base)/4
word @dlrC_a_branchNFA + $10
dlrC_a_litwNFA byte $89,"$C_a_litw"
dlrC_a_litwPFA word (@a_doconw - @a_base)/4
word (@a_litw - @a_base)/4
word @dlrC_a_litwNFA + $10
dlrC_a_twogtrNFA byte $88,"$C_a_2>r"
dlrC_a_twogtrPFA word (@a_doconw - @a_base)/4
word (@a_twogtr - @a_base)/4
word @dlrC_a_twogtrNFA + $10
dlrC_a_lparenlooprparenNFA byte $8B,"$C_a_(loop)"
dlrC_a_lparenlooprparenPFA word (@a_doconw - @a_base)/4
word (@a_lparenlooprparen - @a_base)/4
word @dlrC_a_lparenlooprparenNFA + $10
dlrC_a_lparenpluslooprparenNFA byte $8C,"$C_a_(+loop)"
dlrC_a_lparenpluslooprparenPFA word (@a_doconw - @a_base)/4
word (@a_lparenpluslooprparen - @a_base)/4
word @dlrC_a_lparenpluslooprparenNFA + $10
dlrC_a_zbranchNFA byte $8C,"$C_a_0branch"
dlrC_a_zbranchPFA word (@a_doconw - @a_base)/4
word (@a_zbranch - @a_base)/4
word @dlrC_a_zbranchNFA + $10
dlrC_a_dovarlNFA byte $8B,"$C_a_dovarl"
dlrC_a_dovarlPFA word (@a_doconw - @a_base)/4
word (@a_dovarl - @a_base)/4
word @dlrC_a_dovarlNFA + $10
dlrC_a_doconlNFA byte $8B,"$C_a_doconl"
dlrC_a_doconlPFA word (@a_doconw - @a_base)/4
word (@a_doconl - @a_base)/4
word @dlrC_a_doconlNFA + $10
dlrC_a_litlNFA byte $89,"$C_a_litl"
dlrC_a_litlPFA word (@a_doconw - @a_base)/4
word (@a_litl - @a_base)/4
word @dlrC_a_litlNFA + $10
dlrC_a_debugonoffNFA byte $8F,"$C_a_debugonoff"
dlrC_a_debugonoffPFA word (@a_doconw - @a_base)/4
word (@a_debugonoff - @a_base)/4
word @dlrC_a_debugonoffNFA + $10
dlrC_a_resetNFA byte $8A,"$C_a_reset"
dlrC_a_resetPFA word (@a_doconw - @a_base)/4
word (@a_reset - @a_base)/4
word @dlrC_a_resetNFA + $10
dlrC_a__execasmtwogtoneNFA byte $90,"$C_a__execasm2>1"
dlrC_a__execasmtwogtonePFA word (@a_doconw - @a_base)/4
word (@a__execasmtwogtone - @a_base)/4
word @dlrC_a__execasmtwogtoneNFA + $10
dlrC_a__execasmonegtoneNFA byte $90,"$C_a__execasm1>1"
dlrC_a__execasmonegtonePFA word (@a_doconw - @a_base)/4
word (@a__execasmonegtone - @a_base)/4
word @dlrC_a__execasmonegtoneNFA + $10
dlrC_a__execasmtwogtzNFA byte $90,"$C_a__execasm2>0"
dlrC_a__execasmtwogtzPFA word (@a_doconw - @a_base)/4
word (@a__execasmtwogtz - @a_base)/4
word @dlrC_a__execasmtwogtzNFA + $10
dlrC_a_umstarlpNFA byte $8D,"$C_a_umstarlp"
dlrC_a_umstarlpPFA word (@a_doconw - @a_base)/4
word (@a_umstarlp - @a_base)/4
word @dlrC_a_umstarlpNFA + $10
dlrC_a_umslashmodlpNFA byte $91,"$C_a_umslashmodlp"
dlrC_a_umslashmodlpPFA word (@a_doconw - @a_base)/4
word (@a_umslashmodlp - @a_base)/4
word @dlrC_a_umslashmodlpNFA + $10
dlrC_a_cstreqlpNFA byte $8D,"$C_a_cstreqlp"
dlrC_a_cstreqlpPFA word (@a_doconw - @a_base)/4
word (@a_cstreqlp - @a_base)/4
word @dlrC_a_cstreqlpNFA + $10
dlrC_a__dictsearchlpNFA byte $92,"$C_a__dictsearchlp"
dlrC_a__dictsearchlpPFA word (@a_doconw - @a_base)/4
word (@a__dictsearchlp - @a_base)/4
word @dlrC_a__dictsearchlpNFA + $10
dlrC_a_stpushNFA byte $8B,"$C_a_stpush"
dlrC_a_stpushPFA word (@a_doconw - @a_base)/4
word (@a_stpush - @a_base)/4
word @dlrC_a_stpushNFA + $10
dlrC_a_stpush_retNFA byte $8F,"$C_a_stpush_ret"
dlrC_a_stpush_retPFA word (@a_doconw - @a_base)/4
word (@a_stpush_ret - @a_base)/4
word @dlrC_a_stpush_retNFA + $10
dlrC_a_rspushNFA byte $8B,"$C_a_rspush"
dlrC_a_rspushPFA word (@a_doconw - @a_base)/4
word (@a_rspush - @a_base)/4
word @dlrC_a_rspushNFA + $10
dlrC_a_rspush_retNFA byte $8F,"$C_a_rspush_ret"
dlrC_a_rspush_retPFA word (@a_doconw - @a_base)/4
word (@a_rspush_ret - @a_base)/4
word @dlrC_a_rspush_retNFA + $10
dlrC_a_stpopNFA byte $8A,"$C_a_stpop"
dlrC_a_stpopPFA word (@a_doconw - @a_base)/4
word (@a_stpop - @a_base)/4
word @dlrC_a_stpopNFA + $10
dlrC_a_stpoptregNFA byte $8E,"$C_a_stpoptreg"
dlrC_a_stpoptregPFA word (@a_doconw - @a_base)/4
word (@a_stpoptreg - @a_base)/4
word @dlrC_a_stpoptregNFA + $10
dlrC_a_stpop_retNFA byte $8E,"$C_a_stpop_ret"
dlrC_a_stpop_retPFA word (@a_doconw - @a_base)/4
word (@a_stpop_ret - @a_base)/4
word @dlrC_a_stpop_retNFA + $10
dlrC_a_stpoptreg_retNFA byte $92,"$C_a_stpoptreg_ret"
dlrC_a_stpoptreg_retPFA word (@a_doconw - @a_base)/4
word (@a_stpoptreg_ret - @a_base)/4
word @dlrC_a_stpoptreg_retNFA + $10
dlrC_a_rspopNFA byte $8A,"$C_a_rspop"
dlrC_a_rspopPFA word (@a_doconw - @a_base)/4
word (@a_rspop - @a_base)/4
word @dlrC_a_rspopNFA + $10
dlrC_a_rspop_retNFA byte $8E,"$C_a_rspop_ret"
dlrC_a_rspop_retPFA word (@a_doconw - @a_base)/4
word (@a_rspop_ret - @a_base)/4
word @dlrC_a_rspop_retNFA + $10
dlrC_a_nextNFA byte $89,"$C_a_next"
dlrC_a_nextPFA word (@a_doconw - @a_base)/4
word (@a_next - @a_base)/4
word @dlrC_a_nextNFA + $10
dlrC_varstartNFA byte $8B,"$C_varstart"
dlrC_varstartPFA word (@a_doconw - @a_base)/4
word (@varstart - @a_base)/4
word @dlrC_varstartNFA + $10
dlrC_varendNFA byte $89,"$C_varend"
dlrC_varendPFA word (@a_doconw - @a_base)/4
word (@varend - @a_base)/4
word @dlrC_varendNFA + $10
_cvNFA byte $83,"_cv"
_cvPFA word @dlrC_varstartPFA + $10
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @_cvNFA + $10
_fmaskNFA byte $86,"_fmask"
_fmaskPFA word @zPFA + $10
word @_cvPFA + $10
word (@a_exit - @a_base)/4
word @_fmaskNFA + $10
_resetdregNFA byte $8A,"_resetdreg"
_resetdregPFA word (@a_litw - @a_base)/4
word $0003
word @_cvPFA + $10
word (@a_exit - @a_base)/4
word @_resetdregNFA + $10
ipNFA byte $82,"ip"
ipPFA word (@a_litw - @a_base)/4
word $0004
word @_cvPFA + $10
word (@a_exit - @a_base)/4
word @ipNFA + $10
_rsptrNFA byte $86,"_rsptr"
_rsptrPFA word (@a_litw - @a_base)/4
word $0006
word @_cvPFA + $10
word (@a_exit - @a_base)/4
word @_rsptrNFA + $10
_rstopNFA byte $86,"_rstop"
_rstopPFA word (@a_litw - @a_base)/4
word $004E
word @_cvPFA + $10
word (@a_exit - @a_base)/4
word @_rstopNFA + $10
blNFA byte $82,"bl"
blPFA word (@a_doconw - @a_base)/4
word $0020
word @blNFA + $10
minusoneNFA byte $82,"-1"
minusonePFA word (@a_litl - @a_base)/4
long $FFFFFFFF
word (@a_exit - @a_base)/4
word @minusoneNFA + $10
zNFA byte $81,"0"
zPFA word (@a_doconw - @a_base)/4
word $0000
word @zNFA + $10
parNFA byte $83,"par"
parPFA word (@a_doconw - @a_base)/4
word $01F0
word @parNFA + $10
cntNFA byte $83,"cnt"
cntPFA word (@a_doconw - @a_base)/4
word $01F1
word @cntNFA + $10
inaNFA byte $83,"ina"
inaPFA word (@a_doconw - @a_base)/4
word $01F2
word @inaNFA + $10
outaNFA byte $84,"outa"
outaPFA word (@a_doconw - @a_base)/4
word $01F4
word @outaNFA + $10
diraNFA byte $84,"dira"
diraPFA word (@a_doconw - @a_base)/4
word $01F6
word @diraNFA + $10
_wkeytoNFA byte $87,"_wkeyto"
_wkeytoPFA word (@a_dovarw - @a_base)/4
word $2000
word @_wkeytoNFA + $10
_crfNFA byte $84,"_crf"
_crfPFA word (@a_dovarw - @a_base)/4
word $FFFF
word @_crfNFA + $10
_cnipNFA byte $C5,"_cnip"
_cnipPFA word @herePFA + $10
word @WatPFA + $10
word @twominusPFA + $10
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_over - @a_base)/4
word @twominusPFA + $10
word @WbangPFA + $10
word @herePFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @_cnipNFA + $10
_execasmtwogtoneNFA byte $0B,"_execasm2>1"
_execasmtwogtonePFA word (@a__execasmtwogtone - @a_base)/4
word @_execasmtwogtoneNFA + $10
_execasmonegtoneNFA byte $0B,"_execasm1>1"
_execasmonegtonePFA word (@a__execasmonegtone - @a_base)/4
word @_execasmonegtoneNFA + $10
_execasmtwogtzNFA byte $0B,"_execasm2>0"
_execasmtwogtzPFA word (@a__execasmtwogtz - @a_base)/4
word @_execasmtwogtzNFA + $10
_dictsearchNFA byte $0B,"_dictsearch"
_dictsearchPFA word (@a__dictsearch - @a_base)/4
word @_dictsearchNFA + $10
_maskinNFA byte $07,"_maskin"
_maskinPFA word (@a__maskin - @a_base)/4
word @_maskinNFA + $10
_maskoutloNFA byte $0A,"_maskoutlo"
_maskoutloPFA word (@a__maskoutlo - @a_base)/4
word @_maskoutloNFA + $10
_maskouthiNFA byte $0A,"_maskouthi"
_maskouthiPFA word (@a__maskouthi - @a_base)/4
word @_maskouthiNFA + $10
nameeqNFA byte $05,"name="
nameeqPFA word (@a_nameeq - @a_base)/4
word @nameeqNFA + $10
cstreqNFA byte $05,"cstr="
cstreqPFA word (@a_cstreq - @a_base)/4
word @cstreqNFA + $10
andNFA byte $83,"and"
andPFA word (@a__execasmtwogtone - @a_base)/4
word $00C1
word (@a_exit - @a_base)/4
word @andNFA + $10
andnNFA byte $84,"andn"
andnPFA word (@a__execasmtwogtone - @a_base)/4
word $00C9
word (@a_exit - @a_base)/4
word @andnNFA + $10
LatNFA byte $82,"L@"
LatPFA word (@a__execasmonegtone - @a_base)/4
word $0011
word (@a_exit - @a_base)/4
word @LatNFA + $10
CatNFA byte $82,"C@"
CatPFA word (@a__execasmonegtone - @a_base)/4
word $0001
word (@a_exit - @a_base)/4
word @CatNFA + $10
WatNFA byte $82,"W@"
WatPFA word (@a__execasmonegtone - @a_base)/4
word $0009
word (@a_exit - @a_base)/4
word @WatNFA + $10
COGatNFA byte $04,"COG@"
COGatPFA word (@a_COGat - @a_base)/4
word @COGatNFA + $10
LbangNFA byte $82,"L!"
LbangPFA word (@a__execasmtwogtz - @a_base)/4
word $0010
word (@a_exit - @a_base)/4
word @LbangNFA + $10
CbangNFA byte $82,"C!"
CbangPFA word (@a__execasmtwogtz - @a_base)/4
word $0000
word (@a_exit - @a_base)/4
word @CbangNFA + $10
WbangNFA byte $82,"W!"
WbangPFA word (@a__execasmtwogtz - @a_base)/4
word $0008
word (@a_exit - @a_base)/4
word @WbangNFA + $10
COGbangNFA byte $04,"COG!"
COGbangPFA word (@a_COGbang - @a_base)/4
word @COGbangNFA + $10
branchNFA byte $06,"branch"
branchPFA word (@a_branch - @a_base)/4
word @branchNFA + $10
hubopNFA byte $05,"hubop"
hubopPFA word (@a_hubop - @a_base)/4
word @hubopNFA + $10
doconwNFA byte $06,"doconw"
doconwPFA word (@a_doconw - @a_base)/4
word @doconwNFA + $10
doconlNFA byte $06,"doconl"
doconlPFA word (@a_doconl - @a_base)/4
word @doconlNFA + $10
dovarwNFA byte $06,"dovarw"
dovarwPFA word (@a_dovarw - @a_base)/4
word @dovarwNFA + $10
dovarlNFA byte $06,"dovarl"
dovarlPFA word (@a_dovarl - @a_base)/4
word @dovarlNFA + $10
dropNFA byte $04,"drop"
dropPFA word (@a_drop - @a_base)/4
word @dropNFA + $10
dupNFA byte $03,"dup"
dupPFA word (@a_dup - @a_base)/4
word @dupNFA + $10
eqNFA byte $01,"="
eqPFA word (@a_eq - @a_base)/4
word @eqNFA + $10
exitNFA byte $04,"exit"
exitPFA word (@a_exit - @a_base)/4
word @exitNFA + $10
gtNFA byte $01,">"
gtPFA word (@a_gt - @a_base)/4
word @gtNFA + $10
litwNFA byte $04,"litw"
litwPFA word (@a_litw - @a_base)/4
word @litwNFA + $10
litlNFA byte $04,"litl"
litlPFA word (@a_litl - @a_base)/4
word @litlNFA + $10
lshiftNFA byte $86,"lshift"
lshiftPFA word (@a__execasmtwogtone - @a_base)/4
word $0059
word (@a_exit - @a_base)/4
word @lshiftNFA + $10
ltNFA byte $01,"<"
ltPFA word (@a_lt - @a_base)/4
word @ltNFA + $10
maxNFA byte $83,"max"
maxPFA word (@a__execasmtwogtone - @a_base)/4
word $0081
word (@a_exit - @a_base)/4
word @maxNFA + $10
minNFA byte $83,"min"
minPFA word (@a__execasmtwogtone - @a_base)/4
word $0089
word (@a_exit - @a_base)/4
word @minNFA + $10
minusNFA byte $81,"-"
minusPFA word (@a__execasmtwogtone - @a_base)/4
word $0109
word (@a_exit - @a_base)/4
word @minusNFA + $10
orNFA byte $82,"or"
orPFA word (@a__execasmtwogtone - @a_base)/4
word $00D1
word (@a_exit - @a_base)/4
word @orNFA + $10
overNFA byte $04,"over"
overPFA word (@a_over - @a_base)/4
word @overNFA + $10
plusNFA byte $81,"+"
plusPFA word (@a__execasmtwogtone - @a_base)/4
word $0101
word (@a_exit - @a_base)/4
word @plusNFA + $10
rotNFA byte $03,"rot"
rotPFA word (@a_rot - @a_base)/4
word @rotNFA + $10
rshiftNFA byte $86,"rshift"
rshiftPFA word (@a__execasmtwogtone - @a_base)/4
word $0051
word (@a_exit - @a_base)/4
word @rshiftNFA + $10
rashiftNFA byte $87,"rashift"
rashiftPFA word (@a__execasmtwogtone - @a_base)/4
word $0071
word (@a_exit - @a_base)/4
word @rashiftNFA + $10
rgtNFA byte $02,"r>"
rgtPFA word (@a_rgt - @a_base)/4
word @rgtNFA + $10
gtrNFA byte $02,">r"
gtrPFA word (@a_gtr - @a_base)/4
word @gtrNFA + $10
twogtrNFA byte $03,"2>r"
twogtrPFA word (@a_twogtr - @a_base)/4
word @twogtrNFA + $10
zbranchNFA byte $07,"0branch"
zbranchPFA word (@a_zbranch - @a_base)/4
word @zbranchNFA + $10
lparenlooprparenNFA byte $06,"(loop)"
lparenlooprparenPFA word (@a_lparenlooprparen - @a_base)/4
word @lparenlooprparenNFA + $10
lparenpluslooprparenNFA byte $07,"(+loop)"
lparenpluslooprparenPFA word (@a_lparenpluslooprparen - @a_base)/4
word @lparenpluslooprparenNFA + $10
swapNFA byte $04,"swap"
swapPFA word (@a_swap - @a_base)/4
word @swapNFA + $10
umstarNFA byte $03,"um*"
umstarPFA word (@a_umstar - @a_base)/4
word @umstarNFA + $10
umslashmodNFA byte $06,"um/mod"
umslashmodPFA word (@a_umslashmod - @a_base)/4
word @umslashmodNFA + $10
uslashmodNFA byte $85,"u/mod"
uslashmodPFA word @zPFA + $10
word (@a_swap - @a_base)/4
word (@a_umslashmod - @a_base)/4
word (@a_exit - @a_base)/4
word @uslashmodNFA + $10
xorNFA byte $83,"xor"
xorPFA word (@a__execasmtwogtone - @a_base)/4
word $00D9
word (@a_exit - @a_base)/4
word @xorNFA + $10
rebootNFA byte $86,"reboot"
rebootPFA word (@a_litw - @a_base)/4
word $00FF
word @zPFA + $10
word (@a_hubop - @a_base)/4
word (@a_exit - @a_base)/4
word @rebootNFA + $10
cogstopNFA byte $87,"cogstop"
cogstopPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0003
word (@a_hubop - @a_base)/4
word @twodropPFA + $10
word @cogioPFA + $10
word @fourplusPFA + $10
word @_cdszPFA + $10
word @twominusPFA + $10
word @twominusPFA + $10
word @zPFA + $10
word @fillPFA + $10
word (@a_exit - @a_base)/4
word @cogstopNFA + $10
cogresetNFA byte $88,"cogreset"
cogresetPFA word (@a_litw - @a_base)/4
word $0007
word @andPFA + $10
word (@a_dup - @a_base)/4
word @cogidPFA + $10
word @ltgtPFA + $10
word (@a_zbranch - @a_base)/4
word $0006
word (@a_dup - @a_base)/4
word @cogstopPFA + $10
word (@a_dup - @a_base)/4
word (@a_dup - @a_base)/4
word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $0010
word @lshiftPFA + $10
word @dlrH_entryPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @lshiftPFA + $10
word @orPFA + $10
word @orPFA + $10
word (@a_litw - @a_base)/4
word $0002
word (@a_hubop - @a_base)/4
word @twodropPFA + $10
word @cogstatePFA + $10
word (@a_litw - @a_base)/4
word $8000
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word (@a_dup - @a_base)/4
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0004
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0004
word @leavePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFEE
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @cogresetNFA + $10
resetNFA byte $85,"reset"
resetPFA word @mydictlockPFA + $10
word @CatPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @zPFA + $10
word @lockclrPFA + $10
word (@a_drop - @a_base)/4
word @cogidPFA + $10
word @cogresetPFA + $10
word (@a_exit - @a_base)/4
word @resetNFA + $10
clkfreqNFA byte $87,"clkfreq"
clkfreqPFA word @zPFA + $10
word @LatPFA + $10
word (@a_exit - @a_base)/4
word @clkfreqNFA + $10
paratNFA byte $85,"parat"
paratPFA word @parPFA + $10
word (@a_COGat - @a_base)/4
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @paratNFA + $10
cogioNFA byte $85,"cogio"
cogioPFA word (@a_litw - @a_base)/4
word $0007
word @andPFA + $10
word @_cdszPFA + $10
word @ustarPFA + $10
word @dlrH_cogdataPFA + $10
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogioNFA + $10
cogiochanNFA byte $89,"cogiochan"
cogiochanPFA word (@a_over - @a_base)/4
word @cognchanPFA + $10
word @oneminusPFA + $10
word @minPFA + $10
word @fourstarPFA + $10
word (@a_swap - @a_base)/4
word @cogioPFA + $10
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogiochanNFA + $10
iogtcogchanNFA byte $8A,"io>cogchan"
iogtcogchanPFA word @dlrH_cogdataPFA + $10
word @minusPFA + $10
word (@a_dup - @a_base)/4
word @zltPFA + $10
word (@a_zbranch - @a_base)/4
word $000C
word (@a_drop - @a_base)/4
word @minusonePFA + $10
word (@a_dup - @a_base)/4
word (@a_branch - @a_base)/4
word $001A
word @_cdszPFA + $10
word @uslashmodPFA + $10
word (@a_litw - @a_base)/4
word $0007
word @andPFA + $10
word (@a_dup - @a_base)/4
word @cognchanPFA + $10
word (@a_rot - @a_base)/4
word (@a_litw - @a_base)/4
word $0004
word @uslashPFA + $10
word @minPFA + $10
word (@a_exit - @a_base)/4
word @iogtcogchanNFA + $10
iogtcogNFA byte $86,"io>cog"
iogtcogPFA word @iogtcogchanPFA + $10
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @iogtcogNFA + $10
ioNFA byte $82,"io"
ioPFA word @parPFA + $10
word (@a_COGat - @a_base)/4
word (@a_exit - @a_base)/4
word @ioNFA + $10
ERRNFA byte $83,"ERR"
ERRPFA word @clearkeysPFA + $10
word @ioPFA + $10
word @WbangPFA + $10
word @resetPFA + $10
word (@a_exit - @a_base)/4
word @ERRNFA + $10
lpareniodisrparenNFA byte $87,"(iodis)"
lpareniodisrparenPFA word @cogiochanPFA + $10
word @twoplusPFA + $10
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_swap - @a_base)/4
word @zPFA + $10
word (@a_swap - @a_base)/4
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $000E
word @zPFA + $10
word (@a_swap - @a_base)/4
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @lpareniodisrparenNFA + $10
iodisNFA byte $85,"iodis"
iodisPFA word @zPFA + $10
word @lpareniodisrparenPFA + $10
word (@a_exit - @a_base)/4
word @iodisNFA + $10
lparenioconnrparenNFA byte $88,"(ioconn)"
lparenioconnrparenPFA word @twodupPFA + $10
word @lpareniodisrparenPFA + $10
word (@a_gtr - @a_base)/4
word (@a_gtr - @a_base)/4
word @twodupPFA + $10
word @lpareniodisrparenPFA + $10
word (@a_rgt - @a_base)/4
word (@a_rgt - @a_base)/4
word @cogiochanPFA + $10
word @rottwoPFA + $10
word @cogiochanPFA + $10
word @twodupPFA + $10
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_swap - @a_base)/4
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @lparenioconnrparenNFA + $10
ioconnNFA byte $86,"ioconn"
ioconnPFA word @zPFA + $10
word @tuckPFA + $10
word @lparenioconnrparenPFA + $10
word (@a_exit - @a_base)/4
word @ioconnNFA + $10
lpareniolinkrparenNFA byte $88,"(iolink)"
lpareniolinkrparenPFA word @cogiochanPFA + $10
word @rottwoPFA + $10
word @cogiochanPFA + $10
word (@a_swap - @a_base)/4
word (@a_over - @a_base)/4
word @twoplusPFA + $10
word @WatPFA + $10
word (@a_over - @a_base)/4
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_swap - @a_base)/4
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @lpareniolinkrparenNFA + $10
iolinkNFA byte $86,"iolink"
iolinkPFA word @zPFA + $10
word @tuckPFA + $10
word @lpareniolinkrparenPFA + $10
word (@a_exit - @a_base)/4
word @iolinkNFA + $10
lpareniounlinkrparenNFA byte $8A,"(iounlink)"
lpareniounlinkrparenPFA word @cogiochanPFA + $10
word @twoplusPFA + $10
word (@a_dup - @a_base)/4
word @WatPFA + $10
word @twoplusPFA + $10
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_rot - @a_base)/4
word @WbangPFA + $10
word @zPFA + $10
word (@a_swap - @a_base)/4
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @lpareniounlinkrparenNFA + $10
iounlinkNFA byte $88,"iounlink"
iounlinkPFA word @zPFA + $10
word @lpareniounlinkrparenPFA + $10
word (@a_exit - @a_base)/4
word @iounlinkNFA + $10
debugcmdNFA byte $88,"debugcmd"
debugcmdPFA word (@a_litw - @a_base)/4
word $0006
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @debugcmdNFA + $10
cogdebugcmdNFA byte $8B,"cogdebugcmd"
cogdebugcmdPFA word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $0006
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogdebugcmdNFA + $10
debugvalueNFA byte $8A,"debugvalue"
debugvaluePFA word (@a_litw - @a_base)/4
word $0008
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @debugvalueNFA + $10
cogdebugvalueNFA byte $8D,"cogdebugvalue"
cogdebugvaluePFA word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $0008
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogdebugvalueNFA + $10
baseNFA byte $84,"base"
basePFA word (@a_litw - @a_base)/4
word $000C
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @baseNFA + $10
coghereNFA byte $87,"coghere"
cogherePFA word (@a_litw - @a_base)/4
word $000E
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @coghereNFA + $10
execwordNFA byte $88,"execword"
execwordPFA word (@a_litw - @a_base)/4
word $0010
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @execwordNFA + $10
executeNFA byte $87,"execute"
executePFA word (@a_dup - @a_base)/4
word @_fmaskPFA + $10
word (@a_COGat - @a_base)/4
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @ipPFA + $10
word (@a_COGbang - @a_base)/4
word (@a_branch - @a_base)/4
word $0014
word @execwordPFA + $10
word @WbangPFA + $10
word @dlrC_a_exitPFA + $10
word @execwordPFA + $10
word @twoplusPFA + $10
word @WbangPFA + $10
word @execwordPFA + $10
word @ipPFA + $10
word (@a_COGbang - @a_base)/4
word (@a_exit - @a_base)/4
word @executeNFA + $10
gtoutNFA byte $84,">out"
gtoutPFA word (@a_litw - @a_base)/4
word $0014
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @gtoutNFA + $10
gtinNFA byte $83,">in"
gtinPFA word (@a_litw - @a_base)/4
word $0016
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @gtinNFA + $10
padNFA byte $83,"pad"
padPFA word (@a_litw - @a_base)/4
word $0018
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @padNFA + $10
cogpadNFA byte $86,"cogpad"
cogpadPFA word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $0018
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogpadNFA + $10
padgtinNFA byte $86,"pad>in"
padgtinPFA word @gtinPFA + $10
word @WatPFA + $10
word @padPFA + $10
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @padgtinNFA + $10
namemaxNFA byte $87,"namemax"
namemaxPFA word (@a_litw - @a_base)/4
word $001F
word (@a_exit - @a_base)/4
word @namemaxNFA + $10
padsizeNFA byte $87,"padsize"
padsizePFA word (@a_doconw - @a_base)/4
word $0080
word @padsizeNFA + $10
tzNFA byte $82,"t0"
tzPFA word (@a_litw - @a_base)/4
word $0098
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @tzNFA + $10
toneNFA byte $82,"t1"
tonePFA word (@a_litw - @a_base)/4
word $009A
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @toneNFA + $10
tbufNFA byte $84,"tbuf"
tbufPFA word (@a_litw - @a_base)/4
word $009C
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @tbufNFA + $10
numpadNFA byte $86,"numpad"
numpadPFA word (@a_litw - @a_base)/4
word $00BC
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @numpadNFA + $10
cognumpadNFA byte $89,"cognumpad"
cognumpadPFA word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $00BC
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cognumpadNFA + $10
padgtoutNFA byte $87,"pad>out"
padgtoutPFA word @gtoutPFA + $10
word @WatPFA + $10
word @numpadPFA + $10
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @padgtoutNFA + $10
numpadsizeNFA byte $8A,"numpadsize"
numpadsizePFA word (@a_doconw - @a_base)/4
word $0022
word @numpadsizeNFA + $10
mydictlockNFA byte $8A,"mydictlock"
mydictlockPFA word (@a_litw - @a_base)/4
word $00DE
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @mydictlockNFA + $10
stateNFA byte $85,"state"
statePFA word (@a_litw - @a_base)/4
word $00DF
word @paratPFA + $10
word (@a_exit - @a_base)/4
word @stateNFA + $10
cogstateNFA byte $88,"cogstate"
cogstatePFA word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $00DF
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cogstateNFA + $10
cognchanNFA byte $88,"cognchan"
cognchanPFA word @cogstatePFA + $10
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0005
word @rshiftPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @cognchanNFA + $10
gtconNFA byte $84,">con"
gtconPFA word @conPFA + $10
word @ioconnPFA + $10
word (@a_exit - @a_base)/4
word @gtconNFA + $10
compileqNFA byte $88,"compile?"
compileqPFA word @statePFA + $10
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @andPFA + $10
word (@a_exit - @a_base)/4
word @compileqNFA + $10
emitqNFA byte $85,"emit?"
emitqPFA word @ioPFA + $10
word @twoplusPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0010
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0100
word @andPFA + $10
word @zltgtPFA + $10
word (@a_branch - @a_base)/4
word $0006
word (@a_drop - @a_base)/4
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @emitqNFA + $10
femitqNFA byte $86,"femit?"
femitqPFA word @ioPFA + $10
word @twoplusPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $002A
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0100
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0014
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $00FF
word @andPFA + $10
word (@a_swap - @a_base)/4
word @WbangPFA + $10
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0006
word @twodropPFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $0006
word @twodropPFA + $10
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @femitqNFA + $10
emitNFA byte $84,"emit"
emitPFA word (@a_dup - @a_base)/4
word @femitqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFFA
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @emitNFA + $10
keyqNFA byte $84,"key?"
keyqPFA word @ioPFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0100
word @andPFA + $10
word @zeqPFA + $10
word (@a_exit - @a_base)/4
word @keyqNFA + $10
fkeyqNFA byte $85,"fkey?"
fkeyqPFA word @ioPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0100
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @zPFA + $10
word (@a_branch - @a_base)/4
word $000C
word (@a_litw - @a_base)/4
word $0100
word @ioPFA + $10
word @WbangPFA + $10
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @fkeyqNFA + $10
keyNFA byte $83,"key"
keyPFA word @zPFA + $10
word (@a_drop - @a_base)/4
word @fkeyqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFFA
word (@a_exit - @a_base)/4
word @keyNFA + $10
twodupNFA byte $84,"2dup"
twodupPFA word (@a_over - @a_base)/4
word (@a_over - @a_base)/4
word (@a_exit - @a_base)/4
word @twodupNFA + $10
twodropNFA byte $85,"2drop"
twodropPFA word (@a_drop - @a_base)/4
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @twodropNFA + $10
threedropNFA byte $85,"3drop"
threedropPFA word @twodropPFA + $10
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @threedropNFA + $10
uslashNFA byte $82,"u/"
uslashPFA word @uslashmodPFA + $10
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @uslashNFA + $10
ustarNFA byte $82,"u*"
ustarPFA word (@a_umstar - @a_base)/4
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @ustarNFA + $10
invertNFA byte $86,"invert"
invertPFA word @minusonePFA + $10
word @xorPFA + $10
word (@a_exit - @a_base)/4
word @invertNFA + $10
negateNFA byte $86,"negate"
negatePFA word (@a__execasmonegtone - @a_base)/4
word $0149
word (@a_exit - @a_base)/4
word @negateNFA + $10
zeqNFA byte $82,"0="
zeqPFA word @zPFA + $10
word (@a_eq - @a_base)/4
word (@a_exit - @a_base)/4
word @zeqNFA + $10
ltgtNFA byte $82,"<>"
ltgtPFA word (@a_eq - @a_base)/4
word @invertPFA + $10
word (@a_exit - @a_base)/4
word @ltgtNFA + $10
zltgtNFA byte $83,"0<>"
zltgtPFA word @zeqPFA + $10
word @invertPFA + $10
word (@a_exit - @a_base)/4
word @zltgtNFA + $10
zltNFA byte $82,"0<"
zltPFA word @zPFA + $10
word (@a_lt - @a_base)/4
word (@a_exit - @a_base)/4
word @zltNFA + $10
zgtNFA byte $82,"0>"
zgtPFA word @zPFA + $10
word (@a_gt - @a_base)/4
word (@a_exit - @a_base)/4
word @zgtNFA + $10
oneplusNFA byte $82,"1+"
oneplusPFA word (@a_litw - @a_base)/4
word $0001
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @oneplusNFA + $10
oneminusNFA byte $82,"1-"
oneminusPFA word (@a_litw - @a_base)/4
word $0001
word @minusPFA + $10
word (@a_exit - @a_base)/4
word @oneminusNFA + $10
twoplusNFA byte $82,"2+"
twoplusPFA word (@a_litw - @a_base)/4
word $0002
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @twoplusNFA + $10
twominusNFA byte $82,"2-"
twominusPFA word (@a_litw - @a_base)/4
word $0002
word @minusPFA + $10
word (@a_exit - @a_base)/4
word @twominusNFA + $10
fourplusNFA byte $82,"4+"
fourplusPFA word (@a_litw - @a_base)/4
word $0004
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @fourplusNFA + $10
twostarNFA byte $82,"2*"
twostarPFA word (@a_litw - @a_base)/4
word $0001
word @lshiftPFA + $10
word (@a_exit - @a_base)/4
word @twostarNFA + $10
fourstarNFA byte $82,"4*"
fourstarPFA word (@a_litw - @a_base)/4
word $0002
word @lshiftPFA + $10
word (@a_exit - @a_base)/4
word @fourstarNFA + $10
twoslashNFA byte $82,"2/"
twoslashPFA word (@a_litw - @a_base)/4
word $0001
word @rashiftPFA + $10
word (@a_exit - @a_base)/4
word @twoslashNFA + $10
rottwoNFA byte $84,"rot2"
rottwoPFA word (@a_rot - @a_base)/4
word (@a_rot - @a_base)/4
word (@a_exit - @a_base)/4
word @rottwoNFA + $10
nipNFA byte $83,"nip"
nipPFA word (@a_swap - @a_base)/4
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @nipNFA + $10
tuckNFA byte $84,"tuck"
tuckPFA word (@a_swap - @a_base)/4
word (@a_over - @a_base)/4
word (@a_exit - @a_base)/4
word @tuckNFA + $10
gteqNFA byte $82,">="
gteqPFA word @twodupPFA + $10
word (@a_gt - @a_base)/4
word @rottwoPFA + $10
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_exit - @a_base)/4
word @gteqNFA + $10
lteqNFA byte $82,"<="
lteqPFA word @twodupPFA + $10
word (@a_lt - @a_base)/4
word @rottwoPFA + $10
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_exit - @a_base)/4
word @lteqNFA + $10
zgteqNFA byte $83,"0>="
zgteqPFA word (@a_dup - @a_base)/4
word @zPFA + $10
word (@a_gt - @a_base)/4
word (@a_swap - @a_base)/4
word @zeqPFA + $10
word @orPFA + $10
word (@a_exit - @a_base)/4
word @zgteqNFA + $10
WplusbangNFA byte $83,"W+!"
WplusbangPFA word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_rot - @a_base)/4
word @plusPFA + $10
word (@a_swap - @a_base)/4
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @WplusbangNFA + $10
orCbangNFA byte $84,"orC!"
orCbangPFA word (@a_dup - @a_base)/4
word @CatPFA + $10
word (@a_rot - @a_base)/4
word @orPFA + $10
word (@a_swap - @a_base)/4
word @CbangPFA + $10
word (@a_exit - @a_base)/4
word @orCbangNFA + $10
andnCbangNFA byte $86,"andnC!"
andnCbangPFA word (@a_dup - @a_base)/4
word @CatPFA + $10
word (@a_rot - @a_base)/4
word @andnPFA + $10
word (@a_swap - @a_base)/4
word @CbangPFA + $10
word (@a_exit - @a_base)/4
word @andnCbangNFA + $10
betweenNFA byte $87,"between"
betweenPFA word @rottwoPFA + $10
word (@a_over - @a_base)/4
word @lteqPFA + $10
word @rottwoPFA + $10
word @gteqPFA + $10
word @andPFA + $10
word (@a_exit - @a_base)/4
word @betweenNFA + $10
crNFA byte $82,"cr"
crPFA word (@a_litw - @a_base)/4
word $000D
word @emitPFA + $10
word @_crfPFA + $10
word @WatPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $000A
word @emitPFA + $10
word (@a_exit - @a_base)/4
word @crNFA + $10
spaceNFA byte $85,"space"
spacePFA word @blPFA + $10
word @emitPFA + $10
word (@a_exit - @a_base)/4
word @spaceNFA + $10
spacesNFA byte $86,"spaces"
spacesPFA word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0010
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word @spacePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFFC
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @spacesNFA + $10
dothexNFA byte $84,".hex"
dothexPFA word (@a_litw - @a_base)/4
word $000F
word @andPFA + $10
word (@a_litw - @a_base)/4
word $0030
word @plusPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0039
word (@a_gt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $0007
word @plusPFA + $10
word @emitPFA + $10
word (@a_exit - @a_base)/4
word @dothexNFA + $10
dotbyteNFA byte $85,".byte"
dotbytePFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0004
word @rshiftPFA + $10
word @dothexPFA + $10
word @dothexPFA + $10
word (@a_exit - @a_base)/4
word @dotbyteNFA + $10
dotwordNFA byte $85,".word"
dotwordPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0008
word @rshiftPFA + $10
word @dotbytePFA + $10
word @dotbytePFA + $10
word (@a_exit - @a_base)/4
word @dotwordNFA + $10
boundsNFA byte $86,"bounds"
boundsPFA word (@a_over - @a_base)/4
word @plusPFA + $10
word (@a_swap - @a_base)/4
word (@a_exit - @a_base)/4
word @boundsNFA + $10
alignlNFA byte $86,"alignl"
alignlPFA word (@a_litw - @a_base)/4
word $0003
word @plusPFA + $10
word (@a_litl - @a_base)/4
long $FFFFFFFC
word @andPFA + $10
word (@a_exit - @a_base)/4
word @alignlNFA + $10
alignwNFA byte $86,"alignw"
alignwPFA word @oneplusPFA + $10
word (@a_litl - @a_base)/4
long $FFFFFFFE
word @andPFA + $10
word (@a_exit - @a_base)/4
word @alignwNFA + $10
CatplusplusNFA byte $84,"C@++"
CatplusplusPFA word (@a_dup - @a_base)/4
word @CatPFA + $10
word (@a_swap - @a_base)/4
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word (@a_exit - @a_base)/4
word @CatplusplusNFA + $10
ctoupperNFA byte $88,"ctoupper"
ctoupperPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0061
word (@a_litw - @a_base)/4
word $007A
word @betweenPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $00DF
word @andPFA + $10
word (@a_exit - @a_base)/4
word @ctoupperNFA + $10
todigitNFA byte $87,"todigit"
todigitPFA word @ctoupperPFA + $10
word (@a_litw - @a_base)/4
word $0030
word @minusPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0009
word (@a_gt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0018
word (@a_litw - @a_base)/4
word $0007
word @minusPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $000A
word (@a_lt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0006
word (@a_drop - @a_base)/4
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @todigitNFA + $10
isdigitNFA byte $87,"isdigit"
isdigitPFA word @todigitPFA + $10
word (@a_dup - @a_base)/4
word @zgteqPFA + $10
word (@a_swap - @a_base)/4
word @basePFA + $10
word @WatPFA + $10
word (@a_lt - @a_base)/4
word @andPFA + $10
word (@a_exit - @a_base)/4
word @isdigitNFA + $10
isunumberNFA byte $89,"isunumber"
isunumberPFA word @boundsPFA + $10
word @minusonePFA + $10
word @rottwoPFA + $10
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word @CatPFA + $10
word @isdigitPFA + $10
word @andPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF6
word (@a_exit - @a_base)/4
word @isunumberNFA + $10
unumberNFA byte $87,"unumber"
unumberPFA word @boundsPFA + $10
word @zPFA + $10
word @rottwoPFA + $10
word (@a_twogtr - @a_base)/4
word @basePFA + $10
word @WatPFA + $10
word @ustarPFA + $10
word @iPFA + $10
word @CatPFA + $10
word @todigitPFA + $10
word @plusPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF0
word (@a_exit - @a_base)/4
word @unumberNFA + $10
numberNFA byte $86,"number"
numberPFA word (@a_over - @a_base)/4
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $002D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0016
word @oneminusPFA + $10
word @zPFA + $10
word @maxPFA + $10
word (@a_swap - @a_base)/4
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word @unumberPFA + $10
word @negatePFA + $10
word (@a_branch - @a_base)/4
word $0004
word @unumberPFA + $10
word (@a_exit - @a_base)/4
word @numberNFA + $10
isnumberNFA byte $88,"isnumber"
isnumberPFA word (@a_over - @a_base)/4
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $002D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $000E
word @oneminusPFA + $10
word @zPFA + $10
word @maxPFA + $10
word (@a_swap - @a_base)/4
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word @isunumberPFA + $10
word (@a_exit - @a_base)/4
word @isnumberNFA + $10
dotstrNFA byte $84,".str"
dotstrPFA word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0014
word @boundsPFA + $10
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word @CatPFA + $10
word @emitPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF8
word (@a_branch - @a_base)/4
word $0004
word @twodropPFA + $10
word (@a_exit - @a_base)/4
word @dotstrNFA + $10
npfxNFA byte $84,"npfx"
npfxPFA word @namelenPFA + $10
word (@a_rot - @a_base)/4
word @namelenPFA + $10
word (@a_rot - @a_base)/4
word @twodupPFA + $10
word @gteqPFA + $10
word (@a_zbranch - @a_base)/4
word $0024
word @minPFA + $10
word @boundsPFA + $10
word (@a_twogtr - @a_base)/4
word @CatplusplusPFA + $10
word @iPFA + $10
word @CatPFA + $10
word @ltgtPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_drop - @a_base)/4
word @zPFA + $10
word @leavePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFEC
word @zltgtPFA + $10
word (@a_branch - @a_base)/4
word $0008
word @twodropPFA + $10
word @twodropPFA + $10
word @zPFA + $10
word (@a_exit - @a_base)/4
word @npfxNFA + $10
namelenNFA byte $87,"namelen"
namelenPFA word @CatplusplusPFA + $10
word @namemaxPFA + $10
word @andPFA + $10
word (@a_exit - @a_base)/4
word @namelenNFA + $10
cmoveNFA byte $85,"cmove"
cmovePFA word (@a_dup - @a_base)/4
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @threedropPFA + $10
word (@a_branch - @a_base)/4
word $0010
word @boundsPFA + $10
word (@a_twogtr - @a_base)/4
word @CatplusplusPFA + $10
word @iPFA + $10
word @CbangPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF8
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @cmoveNFA + $10
namecopyNFA byte $88,"namecopy"
namecopyPFA word (@a_over - @a_base)/4
word @namelenPFA + $10
word @oneplusPFA + $10
word @nipPFA + $10
word @cmovePFA + $10
word (@a_exit - @a_base)/4
word @namecopyNFA + $10
ccopyNFA byte $85,"ccopy"
ccopyPFA word (@a_over - @a_base)/4
word @CatPFA + $10
word @oneplusPFA + $10
word @cmovePFA + $10
word (@a_exit - @a_base)/4
word @ccopyNFA + $10
cappendNFA byte $87,"cappend"
cappendPFA word (@a_dup - @a_base)/4
word (@a_dup - @a_base)/4
word @CatPFA + $10
word @plusPFA + $10
word @oneplusPFA + $10
word @rottwoPFA + $10
word (@a_over - @a_base)/4
word @CatPFA + $10
word (@a_over - @a_base)/4
word @CatPFA + $10
word @plusPFA + $10
word (@a_swap - @a_base)/4
word @CbangPFA + $10
word (@a_dup - @a_base)/4
word @CatPFA + $10
word (@a_swap - @a_base)/4
word @oneplusPFA + $10
word @rottwoPFA + $10
word @cmovePFA + $10
word (@a_exit - @a_base)/4
word @cappendNFA + $10
cappendnNFA byte $88,"cappendn"
cappendnPFA word (@a_swap - @a_base)/4
word @lthashPFA + $10
word @hashsPFA + $10
word @hashgtPFA + $10
word (@a_swap - @a_base)/4
word @cappendPFA + $10
word (@a_exit - @a_base)/4
word @cappendnNFA + $10
lparennfcogrparenNFA byte $87,"(nfcog)"
lparennfcogrparenPFA word @minusonePFA + $10
word @minusonePFA + $10
word (@a_litw - @a_base)/4
word $0008
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word @cogstatePFA + $10
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0004
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0018
word @iPFA + $10
word @cogioPFA + $10
word @twoplusPFA + $10
word @WatPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @twodropPFA + $10
word @iPFA + $10
word @zPFA + $10
word @leavePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFD8
word (@a_exit - @a_base)/4
word @lparennfcogrparenNFA + $10
nfcogNFA byte $85,"nfcog"
nfcogPFA word @lparennfcogrparenPFA + $10
word (@a_zbranch - @a_base)/4
word $0012
word (@a_drop - @a_base)/4
word @lparencogplusrparenPFA + $10
word @lparennfcogrparenPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $8001
word @ERRPFA + $10
word (@a_exit - @a_base)/4
word @nfcogNFA + $10
cogxNFA byte $84,"cogx"
cogxPFA word @ioPFA + $10
word @twoplusPFA + $10
word @WatPFA + $10
word @rottwoPFA + $10
word @cogioPFA + $10
word @ioPFA + $10
word @twoplusPFA + $10
word @WbangPFA + $10
word @dotcstrPFA + $10
word @crPFA + $10
word @ioPFA + $10
word @twoplusPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @cogxNFA + $10
dotstrnameNFA byte $88,".strname"
dotstrnamePFA word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $000A
word @namelenPFA + $10
word @dotstrPFA + $10
word (@a_branch - @a_base)/4
word $000A
word (@a_drop - @a_base)/4
word (@a_litw - @a_base)/4
word $003F
word @emitPFA + $10
word (@a_exit - @a_base)/4
word @dotstrnameNFA + $10
dotcstrNFA byte $85,".cstr"
dotcstrPFA word @CatplusplusPFA + $10
word @dotstrPFA + $10
word (@a_exit - @a_base)/4
word @dotcstrNFA + $10
dqNFA byte $82,"dq"
dqPFA word (@a_rgt - @a_base)/4
word @CatplusplusPFA + $10
word @twodupPFA + $10
word @plusPFA + $10
word @alignwPFA + $10
word (@a_gtr - @a_base)/4
word @dotstrPFA + $10
word (@a_exit - @a_base)/4
word @dqNFA + $10
iNFA byte $81,"i"
iPFA word @_rsptrPFA + $10
word (@a_COGat - @a_base)/4
word (@a_litw - @a_base)/4
word $0003
word @plusPFA + $10
word (@a_COGat - @a_base)/4
word (@a_exit - @a_base)/4
word @iNFA + $10
iboundNFA byte $86,"ibound"
iboundPFA word @_rsptrPFA + $10
word (@a_COGat - @a_base)/4
word @twoplusPFA + $10
word (@a_COGat - @a_base)/4
word (@a_exit - @a_base)/4
word @iboundNFA + $10
setiNFA byte $84,"seti"
setiPFA word @_rsptrPFA + $10
word (@a_COGat - @a_base)/4
word (@a_litw - @a_base)/4
word $0003
word @plusPFA + $10
word (@a_COGbang - @a_base)/4
word (@a_exit - @a_base)/4
word @setiNFA + $10
fillNFA byte $84,"fill"
fillPFA word @rottwoPFA + $10
word @boundsPFA + $10
word (@a_twogtr - @a_base)/4
word (@a_dup - @a_base)/4
word @iPFA + $10
word @CbangPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF8
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @fillNFA + $10
nfagtlfaNFA byte $87,"nfa>lfa"
nfagtlfaPFA word @twominusPFA + $10
word (@a_exit - @a_base)/4
word @nfagtlfaNFA + $10
nfagtpfaNFA byte $87,"nfa>pfa"
nfagtpfaPFA word (@a_litw - @a_base)/4
word $7FFF
word @andPFA + $10
word @namelenPFA + $10
word @plusPFA + $10
word @alignwPFA + $10
word (@a_exit - @a_base)/4
word @nfagtpfaNFA + $10
nfagtnextNFA byte $88,"nfa>next"
nfagtnextPFA word @nfagtlfaPFA + $10
word @WatPFA + $10
word (@a_exit - @a_base)/4
word @nfagtnextNFA + $10
lastnfaNFA byte $87,"lastnfa"
lastnfaPFA word @wlastnfaPFA + $10
word @WatPFA + $10
word (@a_exit - @a_base)/4
word @lastnfaNFA + $10
isnamecharNFA byte $8A,"isnamechar"
isnamecharPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0020
word (@a_gt - @a_base)/4
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $007F
word (@a_lt - @a_base)/4
word @andPFA + $10
word (@a_exit - @a_base)/4
word @isnamecharNFA + $10
_forthpfagtnfaNFA byte $8D,"_forthpfa>nfa"
_forthpfagtnfaPFA word (@a_litw - @a_base)/4
word $7FFF
word @andPFA + $10
word @oneminusPFA + $10
word @oneminusPFA + $10
word (@a_dup - @a_base)/4
word @CatPFA + $10
word @isnamecharPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFF4
word (@a_exit - @a_base)/4
word @_forthpfagtnfaNFA + $10
_asmpfagtnfaNFA byte $8B,"_asmpfa>nfa"
_asmpfagtnfaPFA word @lastnfaPFA + $10
word @twodupPFA + $10
word @nfagtpfaPFA + $10
word @WatPFA + $10
word (@a_eq - @a_base)/4
word (@a_over - @a_base)/4
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0080
word @andPFA + $10
word @zeqPFA + $10
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0008
word @nfagtnextPFA + $10
word (@a_dup - @a_base)/4
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFD8
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @_asmpfagtnfaNFA + $10
pfagtnfaNFA byte $87,"pfa>nfa"
pfagtnfaPFA word (@a_dup - @a_base)/4
word @_fmaskPFA + $10
word (@a_COGat - @a_base)/4
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @_forthpfagtnfaPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @_asmpfagtnfaPFA + $10
word (@a_exit - @a_base)/4
word @pfagtnfaNFA + $10
acceptNFA byte $86,"accept"
acceptPFA word (@a_litw - @a_base)/4
word $0003
word @maxPFA + $10
word @twodupPFA + $10
word @blPFA + $10
word @fillPFA + $10
word @oneminusPFA + $10
word (@a_swap - @a_base)/4
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word @boundsPFA + $10
word @zPFA + $10
word @keyPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $000A
word (@a_eq - @a_base)/4
word (@a_over - @a_base)/4
word (@a_litw - @a_base)/4
word $000D
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_zbranch - @a_base)/4
word $000C
word @crPFA + $10
word (@a_drop - @a_base)/4
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $006E
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0008
word (@a_eq - @a_base)/4
word (@a_over - @a_base)/4
word (@a_litw - @a_base)/4
word $007F
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_zbranch - @a_base)/4
word $002E
word (@a_drop - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0020
word (@a_litw - @a_base)/4
word $0008
word @emitPFA + $10
word @blPFA + $10
word @emitPFA + $10
word (@a_litw - @a_base)/4
word $0008
word @emitPFA + $10
word @oneminusPFA + $10
word (@a_swap - @a_base)/4
word @oneminusPFA + $10
word @blPFA + $10
word (@a_over - @a_base)/4
word @CbangPFA + $10
word (@a_swap - @a_base)/4
word @zPFA + $10
word (@a_branch - @a_base)/4
word $002C
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0009
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0006
word (@a_drop - @a_base)/4
word @blPFA + $10
word (@a_dup - @a_base)/4
word @emitPFA + $10
word (@a_swap - @a_base)/4
word (@a_gtr - @a_base)/4
word (@a_over - @a_base)/4
word @CbangPFA + $10
word @oneplusPFA + $10
word @twodupPFA + $10
word @oneplusPFA + $10
word (@a_eq - @a_base)/4
word (@a_rgt - @a_base)/4
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word (@a_zbranch - @a_base)/4
word $FF70
word @nipPFA + $10
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @acceptNFA + $10
parseNFA byte $85,"parse"
parsePFA word @padsizePFA + $10
word @gtinPFA + $10
word @WatPFA + $10
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word @zPFA + $10
word (@a_branch - @a_base)/4
word $0020
word @zPFA + $10
word @twodupPFA + $10
word @padgtinPFA + $10
word @plusPFA + $10
word @CatPFA + $10
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0006
word @oneplusPFA + $10
word @zPFA + $10
word (@a_zbranch - @a_base)/4
word $FFE6
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @parseNFA + $10
skipblNFA byte $86,"skipbl"
skipblPFA word @padgtinPFA + $10
word @CatPFA + $10
word @blPFA + $10
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0016
word @gtinPFA + $10
word @WatPFA + $10
word @oneplusPFA + $10
word (@a_dup - @a_base)/4
word @gtinPFA + $10
word @WbangPFA + $10
word @padsizePFA + $10
word (@a_eq - @a_base)/4
word (@a_branch - @a_base)/4
word $0004
word @minusonePFA + $10
word (@a_zbranch - @a_base)/4
word $FFDC
word (@a_exit - @a_base)/4
word @skipblNFA + $10
nextwordNFA byte $88,"nextword"
nextwordPFA word @padsizePFA + $10
word @gtinPFA + $10
word @WatPFA + $10
word (@a_gt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0012
word @padgtinPFA + $10
word @CatPFA + $10
word @gtinPFA + $10
word @WatPFA + $10
word @plusPFA + $10
word @oneplusPFA + $10
word @gtinPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @nextwordNFA + $10
parsewordNFA byte $89,"parseword"
parsewordPFA word @skipblPFA + $10
word @parsePFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0014
word @gtinPFA + $10
word @WatPFA + $10
word @oneminusPFA + $10
word @twodupPFA + $10
word @padPFA + $10
word @plusPFA + $10
word @CbangPFA + $10
word @gtinPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @parsewordNFA + $10
parseblNFA byte $87,"parsebl"
parseblPFA word @blPFA + $10
word @parsewordPFA + $10
word @zltgtPFA + $10
word (@a_exit - @a_base)/4
word @parseblNFA + $10
parsenwNFA byte $87,"parsenw"
parsenwPFA word @parseblPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @padgtinPFA + $10
word @nextwordPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @zPFA + $10
word (@a_exit - @a_base)/4
word @parsenwNFA + $10
findNFA byte $84,"find"
findPFA word @lastnfaPFA + $10
word (@a_over - @a_base)/4
word (@a__dictsearch - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0048
word @nipPFA + $10
word (@a_dup - @a_base)/4
word @nfagtpfaPFA + $10
word (@a_over - @a_base)/4
word @CatPFA + $10
word (@a_litw - @a_base)/4
word $0080
word @andPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0004
word @WatPFA + $10
word (@a_swap - @a_base)/4
word @CatPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0040
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $001C
word (@a_litw - @a_base)/4
word $0020
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word (@a_litw - @a_base)/4
word $0002
word (@a_branch - @a_base)/4
word $0006
word (@a_litw - @a_base)/4
word $0001
word (@a_branch - @a_base)/4
word $0006
word (@a_drop - @a_base)/4
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @findNFA + $10
lthashNFA byte $82,"<#"
lthashPFA word @numpadsizePFA + $10
word @gtoutPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @lthashNFA + $10
hashgtNFA byte $82,"#>"
hashgtPFA word (@a_drop - @a_base)/4
word @numpadsizePFA + $10
word @gtoutPFA + $10
word @WatPFA + $10
word @minusPFA + $10
word @minusonePFA + $10
word @gtoutPFA + $10
word @WplusbangPFA + $10
word @padgtoutPFA + $10
word @CbangPFA + $10
word @padgtoutPFA + $10
word (@a_exit - @a_base)/4
word @hashgtNFA + $10
tocharNFA byte $86,"tochar"
tocharPFA word (@a_litw - @a_base)/4
word $001F
word @andPFA + $10
word (@a_litw - @a_base)/4
word $0030
word @plusPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0039
word (@a_gt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $0007
word @plusPFA + $10
word (@a_exit - @a_base)/4
word @tocharNFA + $10
hashNFA byte $81,"#"
hashPFA word @basePFA + $10
word @WatPFA + $10
word @uslashmodPFA + $10
word (@a_swap - @a_base)/4
word @tocharPFA + $10
word @minusonePFA + $10
word @gtoutPFA + $10
word @WplusbangPFA + $10
word @padgtoutPFA + $10
word @CbangPFA + $10
word (@a_exit - @a_base)/4
word @hashNFA + $10
hashsNFA byte $82,"#s"
hashsPFA word @hashPFA + $10
word (@a_dup - @a_base)/4
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFF8
word (@a_exit - @a_base)/4
word @hashsNFA + $10
dotbvalueNFA byte $87,".bvalue"
dotbvaluePFA word @lthashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashgtPFA + $10
word @dotcstrPFA + $10
word (@a_exit - @a_base)/4
word @dotbvalueNFA + $10
dotaddrNFA byte $85,".addr"
dotaddrPFA word @lthashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashgtPFA + $10
word @dotcstrPFA + $10
word (@a_exit - @a_base)/4
word @dotaddrNFA + $10
dotvalueNFA byte $86,".value"
dotvaluePFA word @lthashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashPFA + $10
word @hashgtPFA + $10
word @dotcstrPFA + $10
word (@a_exit - @a_base)/4
word @dotvalueNFA + $10
dotNFA byte $81,"."
dotPFA word (@a_dup - @a_base)/4
word @zltPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word (@a_litw - @a_base)/4
word $002D
word @emitPFA + $10
word @negatePFA + $10
word @lthashPFA + $10
word @hashsPFA + $10
word @hashgtPFA + $10
word @dotcstrPFA + $10
word (@a_litw - @a_base)/4
word $0020
word @emitPFA + $10
word (@a_exit - @a_base)/4
word @dotNFA + $10
cogidNFA byte $85,"cogid"
cogidPFA word @minusonePFA + $10
word (@a_litw - @a_base)/4
word $0001
word (@a_hubop - @a_base)/4
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @cogidNFA + $10
locksetNFA byte $87,"lockset"
locksetPFA word (@a_litw - @a_base)/4
word $0006
word (@a_hubop - @a_base)/4
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @locksetNFA + $10
lockclrNFA byte $87,"lockclr"
lockclrPFA word (@a_litw - @a_base)/4
word $0007
word (@a_hubop - @a_base)/4
word @nipPFA + $10
word (@a_exit - @a_base)/4
word @lockclrNFA + $10
lockdictqNFA byte $89,"lockdict?"
lockdictqPFA word @mydictlockPFA + $10
word @CatPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0014
word @oneplusPFA + $10
word (@a_litw - @a_base)/4
word $00FF
word @minPFA + $10
word @mydictlockPFA + $10
word @CbangPFA + $10
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0018
word @locksetPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @zPFA + $10
word (@a_branch - @a_base)/4
word $000C
word (@a_litw - @a_base)/4
word $0001
word @mydictlockPFA + $10
word @CbangPFA + $10
word @minusonePFA + $10
word (@a_exit - @a_base)/4
word @lockdictqNFA + $10
freedictNFA byte $88,"freedict"
freedictPFA word @mydictlockPFA + $10
word @CatPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $001A
word @oneminusPFA + $10
word (@a_dup - @a_base)/4
word @mydictlockPFA + $10
word @CbangPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @zPFA + $10
word @lockclrPFA + $10
word (@a_drop - @a_base)/4
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @freedictNFA + $10
lockdictNFA byte $88,"lockdict"
lockdictPFA word @lockdictqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFFC
word (@a_exit - @a_base)/4
word @lockdictNFA + $10
checkdictNFA byte $89,"checkdict"
checkdictPFA word @herePFA + $10
word @WatPFA + $10
word @plusPFA + $10
word @dictendPFA + $10
word @WatPFA + $10
word @gteqPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $8002
word @ERRPFA + $10
word (@a_exit - @a_base)/4
word @checkdictNFA + $10
lparencreatebeginrparenNFA byte $8D,"(createbegin)"
lparencreatebeginrparenPFA word @lockdictPFA + $10
word @wlastnfaPFA + $10
word @WatPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word @twoplusPFA + $10
word @wlastnfaPFA + $10
word @WbangPFA + $10
word (@a_swap - @a_base)/4
word (@a_over - @a_base)/4
word @WbangPFA + $10
word @twoplusPFA + $10
word (@a_exit - @a_base)/4
word @lparencreatebeginrparenNFA + $10
lparencreateendrparenNFA byte $8B,"(createend)"
lparencreateendrparenPFA word (@a_over - @a_base)/4
word @namecopyPFA + $10
word @namelenPFA + $10
word @plusPFA + $10
word @alignwPFA + $10
word @herePFA + $10
word @WbangPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @lparencreateendrparenNFA + $10
ccreateNFA byte $87,"ccreate"
ccreatePFA word @lparencreatebeginrparenPFA + $10
word (@a_swap - @a_base)/4
word @lparencreateendrparenPFA + $10
word (@a_exit - @a_base)/4
word @ccreateNFA + $10
createNFA byte $86,"create"
createPFA word @blPFA + $10
word @parsewordPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @lparencreatebeginrparenPFA + $10
word @padgtinPFA + $10
word @lparencreateendrparenPFA + $10
word @nextwordPFA + $10
word (@a_exit - @a_base)/4
word @createNFA + $10
clabelNFA byte $86,"clabel"
clabelPFA word @lockdictPFA + $10
word @ccreatePFA + $10
word @dlrC_a_doconwPFA + $10
word @wcommaPFA + $10
word @cogherePFA + $10
word @WatPFA + $10
word @wcommaPFA + $10
word @forthentryPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @clabelNFA + $10
herewalNFA byte $87,"herewal"
herewalPFA word @lockdictPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @checkdictPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @alignwPFA + $10
word @herePFA + $10
word @WbangPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @herewalNFA + $10
allotNFA byte $85,"allot"
allotPFA word @lockdictPFA + $10
word (@a_dup - @a_base)/4
word @checkdictPFA + $10
word @herePFA + $10
word @WplusbangPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @allotNFA + $10
wcommaNFA byte $82,"w,"
wcommaPFA word @lockdictPFA + $10
word @herewalPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @WbangPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @allotPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @wcommaNFA + $10
ccommaNFA byte $82,"c,"
ccommaPFA word @lockdictPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @CbangPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @allotPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @ccommaNFA + $10
herelalNFA byte $87,"herelal"
herelalPFA word @lockdictPFA + $10
word (@a_litw - @a_base)/4
word $0004
word @checkdictPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @alignlPFA + $10
word @herePFA + $10
word @WbangPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @herelalNFA + $10
lcommaNFA byte $82,"l,"
lcommaPFA word @lockdictPFA + $10
word @herelalPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @LbangPFA + $10
word (@a_litw - @a_base)/4
word $0004
word @allotPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @lcommaNFA + $10
orlnfaNFA byte $86,"orlnfa"
orlnfaPFA word @lockdictPFA + $10
word @lastnfaPFA + $10
word @orCbangPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @orlnfaNFA + $10
forthentryNFA byte $8A,"forthentry"
forthentryPFA word @lockdictPFA + $10
word (@a_litw - @a_base)/4
word $0080
word @orlnfaPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @forthentryNFA + $10
immediateNFA byte $89,"immediate"
immediatePFA word @lockdictPFA + $10
word (@a_litw - @a_base)/4
word $0040
word @orlnfaPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @immediateNFA + $10
execNFA byte $84,"exec"
execPFA word @lockdictPFA + $10
word (@a_litw - @a_base)/4
word $0060
word @orlnfaPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @execNFA + $10
leaveNFA byte $85,"leave"
leavePFA word (@a_rgt - @a_base)/4
word (@a_rgt - @a_base)/4
word (@a_rgt - @a_base)/4
word (@a_drop - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_twogtr - @a_base)/4
word (@a_gtr - @a_base)/4
word (@a_exit - @a_base)/4
word @leaveNFA + $10
clearkeysNFA byte $89,"clearkeys"
clearkeysPFA word (@a_litw - @a_base)/4
word $0001
word @statePFA + $10
word @andnCbangPFA + $10
word @minusonePFA + $10
word @_wkeytoPFA + $10
word @WatPFA + $10
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word @keyqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @keyPFA + $10
word @twodropPFA + $10
word @zPFA + $10
word @leavePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF0
word (@a_zbranch - @a_base)/4
word $FFE2
word (@a_exit - @a_base)/4
word @clearkeysNFA + $10
wgtlNFA byte $83,"w>l"
wgtlPFA word (@a_litw - @a_base)/4
word $FFFF
word @andPFA + $10
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $0010
word @lshiftPFA + $10
word @orPFA + $10
word (@a_exit - @a_base)/4
word @wgtlNFA + $10
lgtwNFA byte $83,"l>w"
lgtwPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0010
word @rshiftPFA + $10
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $FFFF
word @andPFA + $10
word (@a_exit - @a_base)/4
word @lgtwNFA + $10
colonNFA byte $81,":"
colonPFA word @lockdictPFA + $10
word @createPFA + $10
word (@a_litw - @a_base)/4
word $3741
word (@a_litw - @a_base)/4
word $0001
word @statePFA + $10
word @orCbangPFA + $10
word (@a_exit - @a_base)/4
word @colonNFA + $10
_mmcsNFA byte $85,"_mmcs"
_mmcsPFA word @dqPFA + $10
byte $1F,"MISMATCHED CONTROL STRUCTURE(S)"
word @crPFA + $10
word @clearkeysPFA + $10
word (@a_exit - @a_base)/4
word @_mmcsNFA + $10
_scolonNFA byte $82,"_;"
_scolonPFA word @wcommaPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @statePFA + $10
word @andnCbangPFA + $10
word @forthentryPFA + $10
word (@a_litw - @a_base)/4
word $3741
word @ltgtPFA + $10
word (@a_zbranch - @a_base)/4
word $0004
word @_mmcsPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @_scolonNFA + $10
scolonscolonNFA byte $C2,";;"
scolonscolonPFA word @dlrC_a_exitPFA + $10
word @_scolonPFA + $10
word (@a_exit - @a_base)/4
word @scolonscolonNFA + $10
scolonNFA byte $C1,";"
scolonPFA word @dlrC_a_exitPFA + $10
word @_scolonPFA + $10
word (@a_exit - @a_base)/4
word @scolonNFA + $10
dothenNFA byte $86,"dothen"
dothenPFA word @lgtwPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $1235
word (@a_eq - @a_base)/4
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $1239
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_zbranch - @a_base)/4
word $0014
word (@a_dup - @a_base)/4
word @herePFA + $10
word @WatPFA + $10
word (@a_swap - @a_base)/4
word @minusPFA + $10
word (@a_swap - @a_base)/4
word @WbangPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @_mmcsPFA + $10
word (@a_exit - @a_base)/4
word @dothenNFA + $10
thenNFA byte $C4,"then"
thenPFA word @dothenPFA + $10
word (@a_exit - @a_base)/4
word @thenNFA + $10
thensNFA byte $C5,"thens"
thensPFA word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $FFFF
word @andPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $1235
word (@a_eq - @a_base)/4
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $1239
word (@a_eq - @a_base)/4
word @orPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @dothenPFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @minusonePFA + $10
word (@a_zbranch - @a_base)/4
word $FFD6
word (@a_exit - @a_base)/4
word @thensNFA + $10
ifNFA byte $C2,"if"
ifPFA word @dlrC_a_zbranchPFA + $10
word @wcommaPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $1235
word @wgtlPFA + $10
word @zPFA + $10
word @wcommaPFA + $10
word (@a_exit - @a_base)/4
word @ifNFA + $10
elseNFA byte $C4,"else"
elsePFA word @dlrC_a_branchPFA + $10
word @wcommaPFA + $10
word @zPFA + $10
word @wcommaPFA + $10
word @dothenPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @twominusPFA + $10
word (@a_litw - @a_base)/4
word $1239
word @wgtlPFA + $10
word (@a_exit - @a_base)/4
word @elseNFA + $10
untilNFA byte $C5,"until"
untilPFA word @lgtwPFA + $10
word (@a_litw - @a_base)/4
word $1317
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0012
word @dlrC_a_zbranchPFA + $10
word @wcommaPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @minusPFA + $10
word @wcommaPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @_mmcsPFA + $10
word (@a_exit - @a_base)/4
word @untilNFA + $10
beginNFA byte $C5,"begin"
beginPFA word @herePFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $1317
word @wgtlPFA + $10
word (@a_exit - @a_base)/4
word @beginNFA + $10
doloopNFA byte $86,"doloop"
doloopPFA word (@a_swap - @a_base)/4
word @lgtwPFA + $10
word (@a_litw - @a_base)/4
word $2329
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0012
word (@a_swap - @a_base)/4
word @wcommaPFA + $10
word @herePFA + $10
word @WatPFA + $10
word @minusPFA + $10
word @wcommaPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @_mmcsPFA + $10
word (@a_exit - @a_base)/4
word @doloopNFA + $10
loopNFA byte $C4,"loop"
loopPFA word @dlrC_a_lparenlooprparenPFA + $10
word @doloopPFA + $10
word (@a_exit - @a_base)/4
word @loopNFA + $10
plusloopNFA byte $C5,"+loop"
plusloopPFA word @dlrC_a_lparenpluslooprparenPFA + $10
word @doloopPFA + $10
word (@a_exit - @a_base)/4
word @plusloopNFA + $10
doNFA byte $C2,"do"
doPFA word @dlrC_a_twogtrPFA + $10
word @wcommaPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $2329
word @wgtlPFA + $10
word (@a_exit - @a_base)/4
word @doNFA + $10
_ecsNFA byte $84,"_ecs"
_ecsPFA word (@a_litw - @a_base)/4
word $003A
word @emitPFA + $10
word @spacePFA + $10
word (@a_exit - @a_base)/4
word @_ecsNFA + $10
_udfNFA byte $84,"_udf"
_udfPFA word @dqPFA + $10
byte $0F,"UNDEFINED WORD "
word (@a_exit - @a_base)/4
word @_udfNFA + $10
_spNFA byte $83,"_sp"
_spPFA word @wcommaPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @gtinPFA + $10
word @WplusbangPFA + $10
word (@a_litw - @a_base)/4
word $0022
word @parsePFA + $10
word (@a_dup - @a_base)/4
word @ccommaPFA + $10
word (@a_dup - @a_base)/4
word @padgtinPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_rot - @a_base)/4
word @cmovePFA + $10
word (@a_dup - @a_base)/4
word @allotPFA + $10
word @oneplusPFA + $10
word @gtinPFA + $10
word @WplusbangPFA + $10
word @herewalPFA + $10
word (@a_exit - @a_base)/4
word @_spNFA + $10
dotquoteNFA byte $C2,".",$22
dotquotePFA word @dlrH_dqPFA + $10
word @_spPFA + $10
word (@a_exit - @a_base)/4
word @dotquoteNFA + $10
fisnumberNFA byte $89,"fisnumber"
fisnumberPFA word @isnumberPFA + $10
word (@a_exit - @a_base)/4
word @fisnumberNFA + $10
fnumberNFA byte $87,"fnumber"
fnumberPFA word @numberPFA + $10
word (@a_exit - @a_base)/4
word @fnumberNFA + $10
interpretpadNFA byte $8C,"interpretpad"
interpretpadPFA word @zPFA + $10
word @gtinPFA + $10
word @WbangPFA + $10
word @blPFA + $10
word @parsewordPFA + $10
word (@a_zbranch - @a_base)/4
word $00C0
word @padgtinPFA + $10
word @nextwordPFA + $10
word @findPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0062
word (@a_dup - @a_base)/4
word @minusonePFA + $10
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0018
word (@a_drop - @a_base)/4
word @compileqPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @wcommaPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @executePFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $003E
word (@a_litw - @a_base)/4
word $0002
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $000A
word @executePFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $002C
word @compileqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @executePFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $001E
word @pfagtnfaPFA + $10
word @dqPFA + $10
byte $0F,"IMMEDIATE WORD "
word @dotstrnamePFA + $10
word @clearkeysPFA + $10
word @crPFA + $10
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0050
word (@a_drop - @a_base)/4
word (@a_dup - @a_base)/4
word @CatplusplusPFA + $10
word @fisnumberPFA + $10
word (@a_zbranch - @a_base)/4
word $0030
word @CatplusplusPFA + $10
word @fnumberPFA + $10
word @compileqPFA + $10
word (@a_zbranch - @a_base)/4
word $0020
word (@a_dup - @a_base)/4
word @zPFA + $10
word (@a_litw - @a_base)/4
word $FFFF
word @betweenPFA + $10
word (@a_zbranch - @a_base)/4
word $000C
word @dlrC_a_litwPFA + $10
word @wcommaPFA + $10
word @wcommaPFA + $10
word (@a_branch - @a_base)/4
word $0008
word @dlrC_a_litlPFA + $10
word @wcommaPFA + $10
word @lcommaPFA + $10
word @zPFA + $10
word (@a_branch - @a_base)/4
word $0016
word (@a_litw - @a_base)/4
word $0001
word @statePFA + $10
word @andnCbangPFA + $10
word @freedictPFA + $10
word @_udfPFA + $10
word @dotstrnamePFA + $10
word @crPFA + $10
word @clearkeysPFA + $10
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0004
word @minusonePFA + $10
word (@a_zbranch - @a_base)/4
word $FF36
word (@a_exit - @a_base)/4
word @interpretpadNFA + $10
interpretNFA byte $89,"interpret"
interpretPFA word @padPFA + $10
word @padsizePFA + $10
word @acceptPFA + $10
word (@a_drop - @a_base)/4
word @interpretpadPFA + $10
word (@a_exit - @a_base)/4
word @interpretNFA + $10
_wconeNFA byte $84,"_wc1"
_wconePFA word @lockdictPFA + $10
word @createPFA + $10
word @dlrC_a_doconwPFA + $10
word @wcommaPFA + $10
word @wcommaPFA + $10
word @forthentryPFA + $10
word @lastnfaPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @_wconeNFA + $10
wconstantNFA byte $89,"wconstant"
wconstantPFA word @_wconePFA + $10
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @wconstantNFA + $10
wvariableNFA byte $89,"wvariable"
wvariablePFA word @lockdictPFA + $10
word @createPFA + $10
word @dlrC_a_dovarwPFA + $10
word @wcommaPFA + $10
word @zPFA + $10
word @wcommaPFA + $10
word @forthentryPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @wvariableNFA + $10
asmlabelNFA byte $88,"asmlabel"
asmlabelPFA word @lockdictPFA + $10
word @createPFA + $10
word @wcommaPFA + $10
word @freedictPFA + $10
word (@a_exit - @a_base)/4
word @asmlabelNFA + $10
hexNFA byte $83,"hex"
hexPFA word (@a_litw - @a_base)/4
word $0010
word @basePFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @hexNFA + $10
decimalNFA byte $87,"decimal"
decimalPFA word (@a_litw - @a_base)/4
word $000A
word @basePFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @decimalNFA + $10
delmsNFA byte $85,"delms"
delmsPFA word (@a_litl - @a_base)/4
long $7FFFFFFF
word @clkfreqPFA + $10
word (@a_litw - @a_base)/4
word $03E8
word @uslashPFA + $10
word @uslashPFA + $10
word @minPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @maxPFA + $10
word @clkfreqPFA + $10
word (@a_litw - @a_base)/4
word $03E8
word @uslashPFA + $10
word @ustarPFA + $10
word @cntPFA + $10
word (@a_COGat - @a_base)/4
word @plusPFA + $10
word (@a_dup - @a_base)/4
word @cntPFA + $10
word (@a_COGat - @a_base)/4
word @minusPFA + $10
word @zltPFA + $10
word (@a_zbranch - @a_base)/4
word $FFF4
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @delmsNFA + $10
delsecNFA byte $86,"delsec"
delsecPFA word (@a_litw - @a_base)/4
word $0010
word @uslashmodPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0014
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word (@a_litw - @a_base)/4
word $3E80
word @delmsPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF8
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0014
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word (@a_litw - @a_base)/4
word $03E8
word @delmsPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF8
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @delsecNFA + $10
gtmNFA byte $82,">m"
gtmPFA word (@a_litw - @a_base)/4
word $0001
word (@a_swap - @a_base)/4
word @lshiftPFA + $10
word (@a_exit - @a_base)/4
word @gtmNFA + $10
pininNFA byte $85,"pinin"
pininPFA word @gtmPFA + $10
word @invertPFA + $10
word @diraPFA + $10
word (@a_COGat - @a_base)/4
word @andPFA + $10
word @diraPFA + $10
word (@a_COGbang - @a_base)/4
word (@a_exit - @a_base)/4
word @pininNFA + $10
pinoutNFA byte $86,"pinout"
pinoutPFA word @gtmPFA + $10
word @diraPFA + $10
word (@a_COGat - @a_base)/4
word @orPFA + $10
word @diraPFA + $10
word (@a_COGbang - @a_base)/4
word (@a_exit - @a_base)/4
word @pinoutNFA + $10
pinloNFA byte $85,"pinlo"
pinloPFA word @gtmPFA + $10
word (@a__maskoutlo - @a_base)/4
word (@a_exit - @a_base)/4
word @pinloNFA + $10
pinhiNFA byte $85,"pinhi"
pinhiPFA word @gtmPFA + $10
word (@a__maskouthi - @a_base)/4
word (@a_exit - @a_base)/4
word @pinhiNFA + $10
pxNFA byte $82,"px"
pxPFA word (@a_swap - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word @pinhiPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @pinloPFA + $10
word (@a_exit - @a_base)/4
word @pxNFA + $10
_sdaiNFA byte $85,"_sdai"
_sdaiPFA word (@a_litw - @a_base)/4
word $001D
word @pininPFA + $10
word (@a_exit - @a_base)/4
word @_sdaiNFA + $10
_sdaoNFA byte $85,"_sdao"
_sdaoPFA word (@a_litw - @a_base)/4
word $001D
word @pinoutPFA + $10
word (@a_exit - @a_base)/4
word @_sdaoNFA + $10
_scliNFA byte $85,"_scli"
_scliPFA word (@a_litw - @a_base)/4
word $001C
word @pininPFA + $10
word (@a_exit - @a_base)/4
word @_scliNFA + $10
_scloNFA byte $85,"_sclo"
_scloPFA word (@a_litw - @a_base)/4
word $001C
word @pinoutPFA + $10
word (@a_exit - @a_base)/4
word @_scloNFA + $10
_sdalNFA byte $85,"_sdal"
_sdalPFA word (@a_litl - @a_base)/4
long $20000000
word (@a__maskoutlo - @a_base)/4
word (@a_exit - @a_base)/4
word @_sdalNFA + $10
_sdahNFA byte $85,"_sdah"
_sdahPFA word (@a_litl - @a_base)/4
long $20000000
word (@a__maskouthi - @a_base)/4
word (@a_exit - @a_base)/4
word @_sdahNFA + $10
_scllNFA byte $85,"_scll"
_scllPFA word (@a_litl - @a_base)/4
long $10000000
word (@a__maskoutlo - @a_base)/4
word (@a_exit - @a_base)/4
word @_scllNFA + $10
_sclhNFA byte $85,"_sclh"
_sclhPFA word (@a_litl - @a_base)/4
long $10000000
word (@a__maskouthi - @a_base)/4
word (@a_exit - @a_base)/4
word @_sclhNFA + $10
_sdaqNFA byte $85,"_sda?"
_sdaqPFA word (@a_litl - @a_base)/4
long $20000000
word (@a__maskin - @a_base)/4
word (@a_exit - @a_base)/4
word @_sdaqNFA + $10
_eestartNFA byte $88,"_eestart"
_eestartPFA word @_sclhPFA + $10
word @_scloPFA + $10
word @_sdahPFA + $10
word @_sdaoPFA + $10
word @_sdalPFA + $10
word @_scllPFA + $10
word (@a_exit - @a_base)/4
word @_eestartNFA + $10
_eestopNFA byte $87,"_eestop"
_eestopPFA word @_sclhPFA + $10
word @_sdahPFA + $10
word @_scllPFA + $10
word @_scliPFA + $10
word @_sdaiPFA + $10
word (@a_exit - @a_base)/4
word @_eestopNFA + $10
_eewriteNFA byte $88,"_eewrite"
_eewritePFA word (@a_litw - @a_base)/4
word $0080
word (@a_litw - @a_base)/4
word $0008
word @zPFA + $10
word (@a_twogtr - @a_base)/4
word @twodupPFA + $10
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @_sdahPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @_sdalPFA + $10
word @_sclhPFA + $10
word @_scllPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @rshiftPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFE4
word @twodropPFA + $10
word @_sdaiPFA + $10
word @_sclhPFA + $10
word @_sdaqPFA + $10
word @_scllPFA + $10
word @_sdalPFA + $10
word @_sdaoPFA + $10
word (@a_exit - @a_base)/4
word @_eewriteNFA + $10
eewritepageNFA byte $8B,"eewritepage"
eewritepagePFA word (@a_litw - @a_base)/4
word $0001
word @locksetPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFF6
word (@a_litw - @a_base)/4
word $0001
word @maxPFA + $10
word (@a_rot - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $00FF
word @andPFA + $10
word (@a_swap - @a_base)/4
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0008
word @rshiftPFA + $10
word (@a_litw - @a_base)/4
word $00FF
word @andPFA + $10
word (@a_swap - @a_base)/4
word (@a_litw - @a_base)/4
word $0010
word @rshiftPFA + $10
word (@a_litw - @a_base)/4
word $0007
word @andPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @lshiftPFA + $10
word @_eestartPFA + $10
word (@a_litw - @a_base)/4
word $00A0
word @orPFA + $10
word @_eewritePFA + $10
word (@a_swap - @a_base)/4
word @_eewritePFA + $10
word @orPFA + $10
word (@a_swap - @a_base)/4
word @_eewritePFA + $10
word @orPFA + $10
word @rottwoPFA + $10
word @boundsPFA + $10
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word @CatPFA + $10
word @_eewritePFA + $10
word @orPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF6
word @_eestopPFA + $10
word (@a_litw - @a_base)/4
word $0010
word @delmsPFA + $10
word (@a_litw - @a_base)/4
word $0001
word @lockclrPFA + $10
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @eewritepageNFA + $10
EWbangNFA byte $83,"EW!"
EWbangPFA word (@a_swap - @a_base)/4
word @tzPFA + $10
word @WbangPFA + $10
word @tzPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @eewritepagePFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $8003
word @ERRPFA + $10
word (@a_exit - @a_base)/4
word @EWbangNFA + $10
bsNFA byte $E1,"\"
bsPFA word @padsizePFA + $10
word @gtinPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @bsNFA + $10
cboNFA byte $81,"{"
cboPFA word @fkeyqPFA + $10
word (@a_drop - @a_base)/4
word (@a_litw - @a_base)/4
word $007D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $FFF4
word (@a_exit - @a_base)/4
word @cboNFA + $10
cbcNFA byte $81,"}"
cbcPFA word (@a_exit - @a_base)/4
word @cbcNFA + $10
sboifNFA byte $83,"[if"
sboifPFA word @parsenwPFA + $10
word @nipPFA + $10
word @findPFA + $10
word (@a_zbranch - @a_base)/4
word $0010
word @fkeyqPFA + $10
word (@a_drop - @a_base)/4
word (@a_litw - @a_base)/4
word $005D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $FFF4
word (@a_exit - @a_base)/4
word @sboifNFA + $10
sbcNFA byte $81,"]"
sbcPFA word (@a_exit - @a_base)/4
word @sbcNFA + $10
tickNFA byte $81,"'"
tickPFA word @parseblPFA + $10
word (@a_zbranch - @a_base)/4
word $001A
word @padgtinPFA + $10
word @nextwordPFA + $10
word @findPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @_udfPFA + $10
word @crPFA + $10
word (@a_drop - @a_base)/4
word @zPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @zPFA + $10
word (@a_exit - @a_base)/4
word @tickNFA + $10
cqNFA byte $82,"cq"
cqPFA word (@a_rgt - @a_base)/4
word (@a_dup - @a_base)/4
word @CatplusplusPFA + $10
word @plusPFA + $10
word @alignwPFA + $10
word (@a_gtr - @a_base)/4
word (@a_exit - @a_base)/4
word @cqNFA + $10
cquoteNFA byte $E2,"c",$22
cquotePFA word @compileqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word @dlrH_cqPFA + $10
word @_spPFA + $10
word (@a_branch - @a_base)/4
word $0018
word (@a_litw - @a_base)/4
word $0022
word @parsePFA + $10
word @oneminusPFA + $10
word @padgtinPFA + $10
word @twodupPFA + $10
word @CbangPFA + $10
word (@a_swap - @a_base)/4
word @twoplusPFA + $10
word @gtinPFA + $10
word @WplusbangPFA + $10
word (@a_exit - @a_base)/4
word @cquoteNFA + $10
fl_lockNFA byte $87,"fl_lock"
fl_lockPFA word (@a_dovarw - @a_base)/4
word $0000
word @fl_lockNFA + $10
fl_inNFA byte $85,"fl_in"
fl_inPFA word (@a_dovarw - @a_base)/4
word $69D6
word @fl_inNFA + $10
lparenfloutrparenNFA byte $87,"(flout)"
lparenfloutrparenPFA word @ioPFA + $10
word @twoplusPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0100
word @andPFA + $10
word @dictendPFA + $10
word @WatPFA + $10
word @fl_inPFA + $10
word @WatPFA + $10
word (@a_lt - @a_base)/4
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0018
word @dictendPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word @oneplusPFA + $10
word @dictendPFA + $10
word @WbangPFA + $10
word @CatPFA + $10
word (@a_swap - @a_base)/4
word @WbangPFA + $10
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word (@a_exit - @a_base)/4
word @lparenfloutrparenNFA + $10
lparenflrparenNFA byte $84,"(fl)"
lparenflrparenPFA word @dictendPFA + $10
word @WatPFA + $10
word @twominusPFA + $10
word @tzPFA + $10
word @WbangPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0080
word @plusPFA + $10
word (@a_dup - @a_base)/4
word @fl_inPFA + $10
word @WbangPFA + $10
word @dictendPFA + $10
word @WbangPFA + $10
word @_wkeytoPFA + $10
word @WatPFA + $10
word @minusonePFA + $10
word @fkeyqPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $000A
word (@a_drop - @a_base)/4
word @lparenfloutrparenPFA + $10
word (@a_branch - @a_base)/4
word $00CA
word @fl_inPFA + $10
word @WatPFA + $10
word @tzPFA + $10
word @WatPFA + $10
word @gteqPFA + $10
word (@a_zbranch - @a_base)/4
word $000C
word (@a_litw - @a_base)/4
word $8004
word @ERRPFA + $10
word (@a_branch - @a_base)/4
word $009E
word (@a_swap - @a_base)/4
word (@a_zbranch - @a_base)/4
word $007E
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $005C
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0018
word (@a_drop - @a_base)/4
word @fkeyqPFA + $10
word (@a_drop - @a_base)/4
word (@a_litw - @a_base)/4
word $000D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $FFF4
word @minusonePFA + $10
word (@a_branch - @a_base)/4
word $0058
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $007B
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0032
word (@a_drop - @a_base)/4
word @zPFA + $10
word @oneplusPFA + $10
word (@a_litw - @a_base)/4
word $001F
word (@a_over - @a_base)/4
word @andPFA + $10
word (@a_litw - @a_base)/4
word $001F
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0004
word @lparenfloutrparenPFA + $10
word @fkeyqPFA + $10
word (@a_drop - @a_base)/4
word (@a_litw - @a_base)/4
word $007D
word (@a_eq - @a_base)/4
word (@a_zbranch - @a_base)/4
word $FFDE
word (@a_drop - @a_base)/4
word @zPFA + $10
word (@a_branch - @a_base)/4
word $001C
word (@a_dup - @a_base)/4
word @fl_inPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0001
word @plusPFA + $10
word @fl_inPFA + $10
word @WbangPFA + $10
word @CbangPFA + $10
word (@a_litw - @a_base)/4
word $000D
word (@a_eq - @a_base)/4
word (@a_branch - @a_base)/4
word $001C
word (@a_dup - @a_base)/4
word @fl_inPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $0001
word @plusPFA + $10
word @fl_inPFA + $10
word @WbangPFA + $10
word @CbangPFA + $10
word (@a_litw - @a_base)/4
word $000D
word (@a_eq - @a_base)/4
word @lparenfloutrparenPFA + $10
word @fkeyqPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FF44
word (@a_drop - @a_base)/4
word @nipPFA + $10
word @_wkeytoPFA + $10
word @WatPFA + $10
word (@a_swap - @a_base)/4
word (@a_swap - @a_base)/4
word @oneminusPFA + $10
word (@a_swap - @a_base)/4
word (@a_over - @a_base)/4
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FF1C
word @twodropPFA + $10
word @dictendPFA + $10
word @WatPFA + $10
word @fl_inPFA + $10
word @WatPFA + $10
word (@a_lt - @a_base)/4
word (@a_zbranch - @a_base)/4
word $001C
word @fl_inPFA + $10
word @WatPFA + $10
word @dictendPFA + $10
word @WatPFA + $10
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word (@a_dup - @a_base)/4
word @CatPFA + $10
word @emitPFA + $10
word @dictendPFA + $10
word @WbangPFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFF2
word (@a_litw - @a_base)/4
word $000D
word @emitPFA + $10
word (@a_litw - @a_base)/4
word $000D
word @emitPFA + $10
word @tzPFA + $10
word @WatPFA + $10
word @twoplusPFA + $10
word @dictendPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @lparenflrparenNFA + $10
flNFA byte $82,"fl"
flPFA word @lockdictPFA + $10
word @fl_lockPFA + $10
word @WatPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @freedictPFA + $10
word (@a_branch - @a_base)/4
word $001C
word @minusonePFA + $10
word @fl_lockPFA + $10
word @WbangPFA + $10
word @cogidPFA + $10
word @nfcogPFA + $10
word @iolinkPFA + $10
word @freedictPFA + $10
word @lparenflrparenPFA + $10
word @cogidPFA + $10
word @iounlinkPFA + $10
word @zPFA + $10
word @fl_lockPFA + $10
word @WbangPFA + $10
word (@a_exit - @a_base)/4
word @flNFA + $10
saveforthNFA byte $89,"saveforth"
saveforthPFA word @cqPFA + $10
byte $04,"here"
word @findPFA + $10
word (@a_zbranch - @a_base)/4
word $0066
word @versionPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word @CatPFA + $10
word @plusPFA + $10
word (@a_dup - @a_base)/4
word @CatPFA + $10
word @oneplusPFA + $10
word (@a_swap - @a_base)/4
word @CbangPFA + $10
word @pfagtnfaPFA + $10
word @herePFA + $10
word @WatPFA + $10
word (@a_swap - @a_base)/4
word (@a_dup - @a_base)/4
word @WatPFA + $10
word (@a_over - @a_base)/4
word @EWbangPFA + $10
word @twoplusPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $003F
word @andPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFEA
word (@a_twogtr - @a_base)/4
word @iboundPFA + $10
word @iPFA + $10
word @minusPFA + $10
word (@a_litw - @a_base)/4
word $0040
word @minPFA + $10
word (@a_dup - @a_base)/4
word @iPFA + $10
word (@a_dup - @a_base)/4
word (@a_rot - @a_base)/4
word @eewritepagePFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word (@a_litw - @a_base)/4
word $8003
word @ERRPFA + $10
word (@a_litw - @a_base)/4
word $002E
word @emitPFA + $10
word (@a_lparenpluslooprparen - @a_base)/4
word $FFD8
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word @crPFA + $10
word (@a_exit - @a_base)/4
word @saveforthNFA + $10
fstartNFA byte $86,"fstart"
fstartPFA word @ioPFA + $10
word (@a_litw - @a_base)/4
word $0010
word @lshiftPFA + $10
word @dlrH_entryPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @lshiftPFA + $10
word @orPFA + $10
word @cogidPFA + $10
word @orPFA + $10
word @_resetdregPFA + $10
word (@a_COGbang - @a_base)/4
word @ioPFA + $10
word @WatPFA + $10
word (@a_litw - @a_base)/4
word $0100
word @ioPFA + $10
word @WbangPFA + $10
word @_fmaskPFA + $10
word (@a_COGat - @a_base)/4
word @debugcmdPFA + $10
word @WbangPFA + $10
word @parPFA + $10
word (@a_COGat - @a_base)/4
word (@a_litw - @a_base)/4
word $0008
word @plusPFA + $10
word @_cdszPFA + $10
word (@a_litw - @a_base)/4
word $0008
word @minusPFA + $10
word @zPFA + $10
word @fillPFA + $10
word @hexPFA + $10
word @dlrC_varendPFA + $10
word @cogherePFA + $10
word @WbangPFA + $10
word @lockdictPFA + $10
word @_finitPFA + $10
word @WatPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0024
word @zPFA + $10
word @fl_lockPFA + $10
word @WbangPFA + $10
word @minusonePFA + $10
word @_finitPFA + $10
word @WbangPFA + $10
word @freedictPFA + $10
word @cqPFA + $10
byte $06,"onboot"
word @findPFA + $10
word (@a_drop - @a_base)/4
word @executePFA + $10
word (@a_branch - @a_base)/4
word $0004
word @freedictPFA + $10
word @_rstopPFA + $10
word @oneminusPFA + $10
word @_rsptrPFA + $10
word (@a_COGbang - @a_base)/4
word @cqPFA + $10
byte $07,"onreset"
word @tbufPFA + $10
word @ccopyPFA + $10
word @cogidPFA + $10
word @tbufPFA + $10
word @cappendnPFA + $10
word @tbufPFA + $10
word @findPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @executePFA + $10
word (@a_branch - @a_base)/4
word $0014
word (@a_drop - @a_base)/4
word @cqPFA + $10
byte $07,"onreset"
word @findPFA + $10
word (@a_drop - @a_base)/4
word @executePFA + $10
word @compileqPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0020
word @propPFA + $10
word @WatPFA + $10
word @dotcstrPFA + $10
word @propidPFA + $10
word @WatPFA + $10
word @dotPFA + $10
word @dqPFA + $10
byte $03,"Cog"
word @cogidPFA + $10
word @dotPFA + $10
word @dqPFA + $10
byte $02,"ok"
word @crPFA + $10
word @interpretPFA + $10
word @zPFA + $10
word (@a_zbranch - @a_base)/4
word $FFD4
word (@a_exit - @a_base)/4
word @fstartNFA + $10
lparencogplusrparenNFA byte $86,"(cog+)"
lparencogplusrparenPFA word (@a_litw - @a_base)/4
word $0008
' word @zPFA + $10 'hive: erste cog frei lassen
word (@a_litw - @a_base)/4
word $0001
word (@a_twogtr - @a_base)/4
word @iPFA + $10
word @cogstatePFA + $10
word @CatPFA + $10
word @zeqPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @iPFA + $10
word @cogresetPFA + $10
word @leavePFA + $10
word (@a_lparenlooprparen - @a_base)/4
word $FFEC
word (@a_exit - @a_base)/4
word @lparencogplusrparenNFA + $10
startserialcogNFA byte $8E,"startserialcog"
startserialcogPFA word (@a_dup - @a_base)/4
word (@a_gtr - @a_base)/4
word (@a_dup - @a_base)/4
word @cogstopPFA + $10
word @cogioPFA + $10
word (@a_swap - @a_base)/4
word @clkfreqPFA + $10
word (@a_swap - @a_base)/4
word @uslashPFA + $10
word (@a_over - @a_base)/4
word @LbangPFA + $10
word @fourplusPFA + $10
word (@a_swap - @a_base)/4
word @gtmPFA + $10
word (@a_over - @a_base)/4
word @LbangPFA + $10
word @fourplusPFA + $10
word (@a_swap - @a_base)/4
word @gtmPFA + $10
word (@a_swap - @a_base)/4
word @LbangPFA + $10
word (@a_rgt - @a_base)/4
word (@a_dup - @a_base)/4
word @cogstatePFA + $10
word (@a_litw - @a_base)/4
word $0010
word (@a_swap - @a_base)/4
word @CbangPFA + $10
word @cqPFA + $10
byte $07,"drv:ext"
word (@a_over - @a_base)/4
word @cognumpadPFA + $10
word @ccopyPFA + $10
word (@a_dup - @a_base)/4
word @cogioPFA + $10
word (@a_litw - @a_base)/4
word $0010
word @lshiftPFA + $10
word @dlrH_serentryPFA + $10
word (@a_litw - @a_base)/4
word $0002
word @lshiftPFA + $10
word @orPFA + $10
word @orPFA + $10
word (@a_litw - @a_base)/4
word $0002
word (@a_hubop - @a_base)/4
word @twodropPFA + $10
word (@a_exit - @a_base)/4
word @startserialcogNFA + $10
onbootNFA byte $86,"onboot"
onbootPFA word @lparenversionrparenPFA + $10
word @versionPFA + $10
word @WbangPFA + $10
word @lparenproprparenPFA + $10
word @propPFA + $10
word @WbangPFA + $10
word (@a_litw - @a_base)/4
word $001E
word (@a_litw - @a_base)/4
word $001F
word (@a_litw - @a_base)/4
word $E100 'hive: baudrate
word (@a_litw - @a_base)/4
word $0007
word @startserialcogPFA + $10
word @cogidPFA + $10
word @gtconPFA + $10
word @lparencogplusrparenPFA + $10
word @lparencogplusrparenPFA + $10
word @lparencogplusrparenPFA + $10
word @lparencogplusrparenPFA + $10
word @lparencogplusrparenPFA + $10
' word @lparencogplusrparenPFA + $10 'hive: eine cog weniger belegen
word (@a_exit - @a_base)/4
word @onbootNFA + $10
onresetNFA byte $87,"onreset"
onresetPFA word (@a_litw - @a_base)/4
word $0004
word @statePFA + $10
word @orCbangPFA + $10
word @crPFA + $10
word (@a_dup - @a_base)/4
word (@a_litw - @a_base)/4
word $8000
word @andPFA + $10
word (@a_zbranch - @a_base)/4
word $0008
word @dotaddrPFA + $10
word (@a_branch - @a_base)/4
word $0004
word (@a_drop - @a_base)/4
word @dqPFA + $10
byte $07," RESET "
word (@a_exit - @a_base)/4
word @onresetNFA + $10 'hive: konstante mit
ldvarNFA byte $85,"ldvar" 'adresse der loadervariablen
ldvarPFA word (@a_doconw - @a_base)/4 'wert wird in main gesetzt
ldvarVAL word 0
word @ldvarNFA + $10
wlastnfaNFA byte $88,"wlastnfa"
wlastnfaPFA word (@a_dovarw - @a_base) /4
word @wlastnfaNFA + $10
wfreespacestart
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
{
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
}
DAT
'***********************************
'* Assembly language serial driver *
'***********************************
org 0
serentryPFA
mov t1 , par
mov v_rxbuff , par
add v_rxbuff , # 4 'adresse pufferanfang hinter v_in/out
rdlong v_bitticks , t1 '1. long baudrate
add t1 , # 4
rdlong v_rxmask , t1 '2. long rx-pin
add t1 , # 4
rdlong v_txmask , t1 '3. long tx-pin
mov v_in , par '1. wort ab jetzt input
mov v_out , v_in
add v_out , #2 '2. wort ab jetzt output
mov t1 , # $100
wrlong t1 , par
mov task1Ptr,#transmit
mov task2Ptr,#task2Code
or dira , v_txmask
'
' Receive
'
receive jmpret task0Ptr, task1Ptr
test v_rxmask , ina wz
if_nz jmp # receive
mov rxbits , # 9
' mov 1/4 of the way into the bit slot
mov rxcnt , v_bitticks
shr rxcnt , # 2
add rxcnt , cnt
:bit add rxcnt , v_bitticks
:wait jmpret task0Ptr, task1Ptr
mov t1 , rxcnt 'soft-waitcnt:
sub t1 , cnt 'wartet eine zeit unter
cmps t1 , # 0 wc 'einbeziehung anderer tasks
if_nc jmp #:wait
test v_rxmask , ina wc
rcr rxdata , # 1 'schieb c-flag in emfangsbyte
djnz rxbits , # :bit
if_nc jmp # receive
shr rxdata , # 32-9 'bits im long ausrichten
and rxdata , # $FF 'und maskieren
add v_rxh , v_rxbuff 'pufferadresse bestimmen
wrbyte rxdata , v_rxh 'zeichen in puffer schreiben
sub v_rxh , v_rxbuff '
add v_rxh ,# 1 'pufferstand erh<00>hen
and v_rxh , # _buffer_mask
jmp # receive
'
'
' Transmit
'
transmit jmpret task1Ptr, task2Ptr
rdword txdata, v_in
test txdata, #$100 wz
if_nz jmp #transmit
mov t1 , #$100
wrword t1 , v_in
or txdata,#$100
shl txdata,#2
or txdata,#1
mov txbits,#11
mov txcnt,cnt
:bit shr txdata,#1 wc
muxc outa , v_txmask
add txcnt , v_bitticks
:wait jmpret task1Ptr, task2Ptr
mov t1,txcnt
sub t1,cnt
cmps t1,#0 wc
if_nc jmp #:wait
djnz txbits,#:bit
jmp #transmit
task2Code
jmpret task2Ptr, task0Ptr
cmp v_rxh , v_rxt wz 'zeichen empfangen?
if_z jmp #task2Code
mov t1 , v_out
rdword t2 , t1 wz
if_nz rdword t3 , t2
if_nz test t3 , # $100 wz
if_z jmp #task2Code
add v_rxt , v_rxbuff
rdbyte t3 , v_rxt
sub v_rxt , v_rxbuff
add v_rxt ,# 1
wrword t3 , t2
and v_rxt , # _buffer_mask
jmp #task2Code
v_rxh long 0 'pufferstand empfang
v_rxt long 0 'pufferstand auslesen
'
' Uninitialized data
'
v_bitticks res 1
v_rxmask res 1
v_txmask res 1
v_rxbuff res 1
v_in res 1
v_out res 1
task0Ptr res 1
task1Ptr res 1
task2Ptr res 1
t1 res 1
t2 res 1
t3 res 1
rxdata res 1
rxbits res 1
rxcnt res 1
txbuff res 1
txdata res 1
txbits res 1
txcnt res 1
ForthDictEnd
ForthMemoryEnd
heapend
#endif
DAT ' HEAP REGIME-KONF
#ifdef regime
heap
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
long 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0
heapend
#endif
DAT
{{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TERMS OF USE: MIT License %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$%
%Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation %
%files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, %
%modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software%
%is furnished to do so, subject to the following conditions: %
% %
%The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.%
% %
%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE %
%WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR %
%COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, %
%ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}}