LPC8xx Forth in assembler, from a Kiel user Starting point for a Work In Progress

Fork of ENORA-Forth by Gérard Sontag

Original author reports this (original file) compiled with Kiel tools. It is for an NXP LPC812 processor on the 800MAX board. It is considered a Table Token Forth. ARM compiler/assembler is not as robust as the Kiel - per the original author.

Committer:
olzeke51
Date:
Sun Dec 06 05:18:41 2015 +0000
Revision:
1:d7744c74e50f
Parent:
0:df922596d756
basic copy of original

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Recifarium 0:df922596d756 1 ;
Recifarium 0:df922596d756 2 ; Continuer a coder interpret....
Recifarium 0:df922596d756 3 ;U/MOD a peut-être des soucis...
Recifarium 0:df922596d756 4 ; Impression numeriques KO
Recifarium 0:df922596d756 5 ;
Recifarium 0:df922596d756 6 ; : call >r ;
Recifarium 0:df922596d756 7 ; : twice: r> dup call call ;
Recifarium 0:df922596d756 8 ; : quadruple twice: dup + ;
Recifarium 0:df922596d756 9 ;
Recifarium 0:df922596d756 10 ; Voir pb des caractères de contrôle
Recifarium 0:df922596d756 11 ; TESTER WORD
Recifarium 0:df922596d756 12 ;
Recifarium 0:df922596d756 13 EXPORT Reset_Handler
Recifarium 0:df922596d756 14 EXPORT __initial_sp
Recifarium 0:df922596d756 15 AREA |.text|, CODE
Recifarium 0:df922596d756 16 ; IMPORT __Vectors
Recifarium 0:df922596d756 17 THUMB
olzeke51 1:d7744c74e50f 18 ;grz added this incluce
olzeke51 1:d7744c74e50f 19 #include "lpc8xx.s"
olzeke51 1:d7744c74e50f 20
Recifarium 0:df922596d756 21 BuffSize EQU 64
Recifarium 0:df922596d756 22 ;----------------------------------
Recifarium 0:df922596d756 23 ; Values that can be customise
Recifarium 0:df922596d756 24 ; Data stack & Return Stack are @ the begining
Recifarium 0:df922596d756 25 ; of Data Memory area
Recifarium 0:df922596d756 26
Recifarium 0:df922596d756 27 DataStackLength EQU 32 * 4 ; 32 cells
Recifarium 0:df922596d756 28
olzeke51 1:d7744c74e50f 29 ; grz error correction - cjouldn't access the chip.s file for this value
olzeke51 1:d7744c74e50f 30 RAMForIAP EQU 128
olzeke51 1:d7744c74e50f 31
Recifarium 0:df922596d756 32 ; Then follow the return stack for a length of:
Recifarium 0:df922596d756 33
Recifarium 0:df922596d756 34 ReturnStackLength EQU 32 * 4 ; 32 cells
Recifarium 0:df922596d756 35
Recifarium 0:df922596d756 36 ; Then follow internal values
Recifarium 0:df922596d756 37 ; UserVar EQU 64 * 4 ; 64 cells
Recifarium 0:df922596d756 38 ;-----------------------------------
Recifarium 0:df922596d756 39 ; Registers allocation |
Recifarium 0:df922596d756 40 ; They are in this way to allow |
Recifarium 0:df922596d756 41 ; the use of r0 r1 r2 r3 |
Recifarium 0:df922596d756 42 ; to call subroutine |
Recifarium 0:df922596d756 43 ;-----------------------------------
Recifarium 0:df922596d756 44 ALIAS r0, WRK0 ; WoRK0 register
Recifarium 0:df922596d756 45 ALIAS r1, WRK1 ; WoRK1 register
Recifarium 0:df922596d756 46 ALIAS r2, WRK2 ; WoRK2 register
Recifarium 0:df922596d756 47 ALIAS r3, WRK ; WoRK register
Recifarium 0:df922596d756 48 ALIAS r4, IPTR ; Instruction PoinTeR
Recifarium 0:df922596d756 49 ALIAS r5, NXT ; Contain the NeXT routine address
Recifarium 0:df922596d756 50 ALIAS r6, TOS ; Top Of Stack , stack managed by sp
Recifarium 0:df922596d756 51 ALIAS r7, RPTR ; Return stack PoinTeR
Recifarium 0:df922596d756 52 ;-----------------------------------
Recifarium 0:df922596d756 53 ; Flag used in dictionary |
Recifarium 0:df922596d756 54 ;-----------------------------------
Recifarium 0:df922596d756 55 Cmponly EQU 0x20 ; Can't be interpreted
Recifarium 0:df922596d756 56 Inline EQU 0x40 ; Indicate a word can be inline (future !)
Recifarium 0:df922596d756 57 Immed EQU 0x80 ; Indicate the word must be run immediatly
Recifarium 0:df922596d756 58
Recifarium 0:df922596d756 59 ;-----------------------------------
Recifarium 0:df922596d756 60 ; Token equivalence
Recifarium 0:df922596d756 61 ;
Recifarium 0:df922596d756 62 ; If you know a better way
Recifarium 0:df922596d756 63 ; to define this with µVision
Recifarium 0:df922596d756 64 ; let me know
Recifarium 0:df922596d756 65 ; The order of the definition
Recifarium 0:df922596d756 66 ; of the EQU don't matter
Recifarium 0:df922596d756 67 ; only the value itself is important
Recifarium 0:df922596d756 68 ; If you add a token don't forget
Recifarium 0:df922596d756 69 ; to add an entry in the token's addresses
Recifarium 0:df922596d756 70 ;-----------------------------------------------------
Recifarium 0:df922596d756 71 ;Token name ; Word
Recifarium 0:df922596d756 72
Recifarium 0:df922596d756 73 Tick EQU (TokTab-wxTick)/4 ; .
Recifarium 0:df922596d756 74 Dot EQU (TokTab-wxDot)/4 ; .
Recifarium 0:df922596d756 75 UDot EQU (TokTab-wxUDot)/4 ; U.
Recifarium 0:df922596d756 76 Sign EQU (TokTab-wxSign)/4 ; SIGN
Recifarium 0:df922596d756 77 NumStr EQU (TokTab-wxNumStr)/4 ; #S
Recifarium 0:df922596d756 78 StrPic EQU (TokTab-wxStrPic)/4 ; <#
Recifarium 0:df922596d756 79 Numb EQU (TokTab-wxNumb)/4 ; #
Recifarium 0:df922596d756 80 EndPic EQU (TokTab-wxEndPic)/4 ; #>
Recifarium 0:df922596d756 81 Abs EQU (TokTab-wxAbs)/4 ; ABS
Recifarium 0:df922596d756 82 Str EQU (TokTab-wxStr)/4 ; STR
Recifarium 0:df922596d756 83 Hold EQU (TokTab-wxHold)/4 ; HOLD
Recifarium 0:df922596d756 84 Extract EQU (TokTab-wxExtract)/4 ; EXTRACT
Recifarium 0:df922596d756 85 Hld EQU (TokTab-wxHld)/4 ; HLD
Recifarium 0:df922596d756 86 Pad EQU (TokTab-wxPad)/4 ; PAD
Recifarium 0:df922596d756 87 UMSMod EQU (TokTab-wxUMSMod)/4 ; UM/MOD
Recifarium 0:df922596d756 88 MSMod EQU (TokTab-wxMSMod)/4 ; M/MOD
Recifarium 0:df922596d756 89 SMod EQU (TokTab-wxSMod)/4 ; /MOD
Recifarium 0:df922596d756 90 Neg EQU (TokTab-wxNeg)/4 ; NEGATE
Recifarium 0:df922596d756 91 RAt EQU (TokTab-wxRAt)/4 ; R@
Recifarium 0:df922596d756 92 IsNull EQU (TokTab-wxIsNull)/4 ; 0=
Recifarium 0:df922596d756 93 ULess EQU (TokTab-wxUless)/4 ; U<
Recifarium 0:df922596d756 94 Mul EQU (TokTab-wxMul)/4 ; *
Recifarium 0:df922596d756 95 DotS EQU (TokTab-wxDotS)/4 ; .S
Recifarium 0:df922596d756 96 Inter EQU (TokTab-wxInter)/4 ; INTERPRET
Recifarium 0:df922596d756 97 Word EQU (TokTab-wxWord)/4 ; WORD
Recifarium 0:df922596d756 98 toIn EQU (TokTab-wxtoIn)/4 ; >IN
Recifarium 0:df922596d756 99 nTib EQU (TokTab-wxnTib)/4 ; #TIB
Recifarium 0:df922596d756 100 State EQU (TokTab-wxState)/4 ; STATE
Recifarium 0:df922596d756 101 RS0 EQU (TokTab-wxFalse)/4 ; not a user token
Recifarium 0:df922596d756 102 False EQU (TokTab-wxFalse)/4 ; FALSE
Recifarium 0:df922596d756 103 True EQU (TokTab-wxTrue)/4 ; TRUE
Recifarium 0:df922596d756 104 DNeg EQU (TokTab-wxDNeg)/4 ; DNEGATE
Recifarium 0:df922596d756 105 DPlus EQU (TokTab-wxDPlus)/4 ; D+
Recifarium 0:df922596d756 106 DMinus EQU (TokTab-wxDMinus)/4 ; D-
Recifarium 0:df922596d756 107 IsNeg EQU (TokTab-wxIsNeg)/4 ; <0
Recifarium 0:df922596d756 108 TDup EQU (TokTab-wxTDup)/4 ; 2DUP
Recifarium 0:df922596d756 109 UMPlus EQU (TokTab-wxUMPlus)/4 ; UM+
Recifarium 0:df922596d756 110 TDrop EQU (TokTab-wx2Drop)/4 ; 2DROP
Recifarium 0:df922596d756 111 Fill EQU (TokTab-wxFill)/4 ; FILL
Recifarium 0:df922596d756 112 Foursta EQU (TokTab-wxFoursta)/4 ; 4*
Recifarium 0:df922596d756 113 MRot EQU (TokTab-wxMRot)/4 ; -ROT
Recifarium 0:df922596d756 114 Rot EQU (TokTab-wxRot)/4 ; ROT
Recifarium 0:df922596d756 115 Dec EQU (TokTab-wxDec)/4 ; DECIMAL
Recifarium 0:df922596d756 116 Base EQU (TokTab-wxBase)/4 ; BASE
Recifarium 0:df922596d756 117 Toupp EQU (TokTab-wxToupp)/4 ; TOUPPER
Recifarium 0:df922596d756 118 Find EQU (TokTab-wxFind)/4 ; FIND
Recifarium 0:df922596d756 119 Upper EQU (TokTab-wxUpper)/4 ; UPPER
Recifarium 0:df922596d756 120 Count EQU (TokTab-wxCount)/4 ; COUNT
Recifarium 0:df922596d756 121 Type EQU (TokTab-wxType)/4 ; TYPE
Recifarium 0:df922596d756 122 Words EQU (TokTab-wxWords)/4 ; WORDS
Recifarium 0:df922596d756 123 CAt EQU (TokTab-wxCAt)/4 ; C@
Recifarium 0:df922596d756 124 At EQU (TokTab-wxAt)/4 ; @
Recifarium 0:df922596d756 125 Bl EQU (TokTab-wxBl)/4 ; BL
Recifarium 0:df922596d756 126 Space EQU (TokTab-wxSpace)/4 ; SPACE
Recifarium 0:df922596d756 127 Spaces EQU (TokTab-wxSpaces)/4 ; SPACES
Recifarium 0:df922596d756 128 CStore EQU (TokTab-wxCStore)/4 ; C!
Recifarium 0:df922596d756 129 Store EQU (TokTab-wxStore)/4 ; !
Recifarium 0:df922596d756 130 Swap EQU (TokTab-wxSwap)/4 ; SWAP
Recifarium 0:df922596d756 131 Accept EQU (TokTab-wxAccept)/4 ; ACCEPT
Recifarium 0:df922596d756 132 Key EQU (TokTab-wxKey)/4 ; KEY
Recifarium 0:df922596d756 133 BCode EQU (TokTab-wxBCode)/4
Recifarium 0:df922596d756 134 Ten EQU (TokTab-wxTen)/4 ; #10
Recifarium 0:df922596d756 135 Two EQU (TokTab-wxTwo)/4 ; #2
Recifarium 0:df922596d756 136 One EQU (TokTab-wxOne)/4 ; 1
Recifarium 0:df922596d756 137 Zero EQU (TokTab-wxZero)/4 ; 0
Recifarium 0:df922596d756 138 Within EQU (TokTab-wxWithin)/4 ; WITHIN
Recifarium 0:df922596d756 139 FromR EQU (TokTab-wxFromR)/4 ; R>
Recifarium 0:df922596d756 140 ToR EQU (TokTab-wxToR)/4 ; >R
Recifarium 0:df922596d756 141 Digit EQU (TokTab-wxDigit)/4 ; DIGIT
Recifarium 0:df922596d756 142 Not EQU (TokTab-wxNot)/4 ; NOT
Recifarium 0:df922596d756 143 Xor EQU (TokTab-wxXor)/4 ; XOR
Recifarium 0:df922596d756 144 Or EQU (TokTab-wxOr)/4 ; OR
Recifarium 0:df922596d756 145 And EQU (TokTab-wxAnd)/4 ; AND
Recifarium 0:df922596d756 146 Eq EQU (TokTab-wxEq)/4 ; =
Recifarium 0:df922596d756 147 Gt EQU (TokTab-wxGt)/4 ; >
Recifarium 0:df922596d756 148 Lt EQU (TokTab-wxLt)/4 ; <
Recifarium 0:df922596d756 149 Over EQU (TokTab-wxOver)/4 ; OVER
Recifarium 0:df922596d756 150 Cr EQU (TokTab-wxCr)/4 ; CR
Recifarium 0:df922596d756 151 Max EQU (TokTab-wxMax)/4 ; MAX
Recifarium 0:df922596d756 152 Min EQU (TokTab-wxMin)/4 ; MIN
Recifarium 0:df922596d756 153 Plus1 EQU (TokTab-wxPlus1)/4 ; 1+
Recifarium 0:df922596d756 154 Minus1 EQU (TokTab-wxMinus1)/4 ; 1-
Recifarium 0:df922596d756 155 Snap EQU (TokTab-wxSnap)/4
Recifarium 0:df922596d756 156 DupNZ EQU (TokTab-wxDupNZ)/4 ; ?DUP
Recifarium 0:df922596d756 157 Dup EQU (TokTab-wxDup)/4 ; DUP
Recifarium 0:df922596d756 158 Minus EQU (TokTab-wxMinus)/4 ; -
Recifarium 0:df922596d756 159 Lit8 EQU (TokTab-wxdoLit8)/4
Recifarium 0:df922596d756 160 Lit16 EQU (TokTab-wxdoLit16)/4
Recifarium 0:df922596d756 161 Lit32 EQU (TokTab-wxdoLit32)/4
Recifarium 0:df922596d756 162 Plus EQU (TokTab-wxPlus)/4 ; +
Recifarium 0:df922596d756 163 Exit EQU (TokTab-wxExit)/4 ; EXIT
Recifarium 0:df922596d756 164 Bra EQU (TokTab-wxBra)/4
Recifarium 0:df922596d756 165 ZBra EQU (TokTab-wxZBra)/4
Recifarium 0:df922596d756 166 Emit EQU (TokTab-wxEmit)/4 ; EMIT
Recifarium 0:df922596d756 167 SpAt EQU (TokTab-wxSpAt)/4 ; SP@
Recifarium 0:df922596d756 168 Sp0 EQU (TokTab-wxSp0)/4 ; SP0
Recifarium 0:df922596d756 169 Slash4 EQU (TokTab-wxSlash4)/4 ; /4
Recifarium 0:df922596d756 170 ;USMod EQU (TokTab-wxUSMod)/4 ; U/MOD ?????
Recifarium 0:df922596d756 171 Drop EQU (TokTab-wxDrop)/4 ; DROP
Recifarium 0:df922596d756 172 Execute EQU (TokTab-wxExecute)/4 ; EXECUTE
Recifarium 0:df922596d756 173 Depth EQU (TokTab-wxDepth)/4 ; DEPTH
Recifarium 0:df922596d756 174 Lf EQU (TokTab-wxLf)/4 ; LF
Recifarium 0:df922596d756 175 ;-----------------------------------
Recifarium 0:df922596d756 176 ;Not so usefull macro...to be change
Recifarium 0:df922596d756 177 MACRO
Recifarium 0:df922596d756 178 $lab LINK $p
Recifarium 0:df922596d756 179 $lab DCD $p
Recifarium 0:df922596d756 180 MEND
Recifarium 0:df922596d756 181
Recifarium 0:df922596d756 182 ;-----------------------------------
Recifarium 0:df922596d756 183 ;Handy way to code the Next routine
Recifarium 0:df922596d756 184 MACRO
Recifarium 0:df922596d756 185 $lab RET
Recifarium 0:df922596d756 186 $lab BX NXT
Recifarium 0:df922596d756 187 MEND
Recifarium 0:df922596d756 188
Recifarium 0:df922596d756 189 ;-----------------------------------
Recifarium 0:df922596d756 190 ; These macro compute the displacement
Recifarium 0:df922596d756 191 ; which is store in a halfword aligned
Recifarium 0:df922596d756 192 MACRO
Recifarium 0:df922596d756 193 $label Branch $target
Recifarium 0:df922596d756 194 $label DCB Bra
Recifarium 0:df922596d756 195 DCW $target-.
Recifarium 0:df922596d756 196 MEND
Recifarium 0:df922596d756 197
Recifarium 0:df922596d756 198 MACRO
Recifarium 0:df922596d756 199 $label ZBranch $target
Recifarium 0:df922596d756 200 $label DCB ZBra
Recifarium 0:df922596d756 201 DCW $target-.
Recifarium 0:df922596d756 202 MEND
Recifarium 0:df922596d756 203
Recifarium 0:df922596d756 204 ;-----------------------------------????????????????????????
Recifarium 0:df922596d756 205 ; These macro Create Counted string
Recifarium 0:df922596d756 206 MACRO
Recifarium 0:df922596d756 207 $label String $String
Recifarium 0:df922596d756 208 $label DCB $String
Recifarium 0:df922596d756 209 MEND
Recifarium 0:df922596d756 210 m0 DCB m2-m1
Recifarium 0:df922596d756 211 m1 DCB "TOTO"
Recifarium 0:df922596d756 212 m2 EQU .
Recifarium 0:df922596d756 213
Recifarium 0:df922596d756 214 ;-----------------------------------
Recifarium 0:df922596d756 215 ; High level routine doCol/Enter (save IPTR)
Recifarium 0:df922596d756 216 ; 8 bytes long for each high level word
Recifarium 0:df922596d756 217 MACRO
Recifarium 0:df922596d756 218 $lab doCol ; !!! We come here from a BX WRK2 in the next routine see below
Recifarium 0:df922596d756 219 $lab STR IPTR,[RPTR] ; Save Instruction pointer to the return Stack
Recifarium 0:df922596d756 220 ADDS RPTR, RPTR, #4 ; Update Return stack pointer
Recifarium 0:df922596d756 221 ADDS IPTR, WRK2, #7 ; Warning! adjusted to point after the RET Macro. Point to the first byte/token in the byte/token list
Recifarium 0:df922596d756 222 RET
Recifarium 0:df922596d756 223 MEND
Recifarium 0:df922596d756 224
Recifarium 0:df922596d756 225 ;-----------------------------------
Recifarium 0:df922596d756 226 ; The long next routine
Recifarium 0:df922596d756 227 ; we jump into it with a BX NXT
Recifarium 0:df922596d756 228 ; where NXT is the register which contain
Recifarium 0:df922596d756 229 ; the doNext address
Recifarium 0:df922596d756 230 ;-----------------------------------
Recifarium 0:df922596d756 231 doNext LDR WRK2,=(TokTab) ; Last Table Entry address (Tok=0)
Recifarium 0:df922596d756 232 LDRB WRK, [IPTR] ; Get the token to be execute in the thread
Recifarium 0:df922596d756 233 CMP WRK, #255 ; Is it a one byte token or a multiple' one?
Recifarium 0:df922596d756 234 BEQ high ; go to next token (NOT IMPLEMENTED )
Recifarium 0:df922596d756 235 LSLS WRK, #2 ; Token number * 4 (word length)
Recifarium 0:df922596d756 236 SUBS WRK2, WRK2, WRK ; Compute the entry table address
Recifarium 0:df922596d756 237 ADDS IPTR, #1 ; Point to next token before running the actual one
Recifarium 0:df922596d756 238 LDR WRK2, [WRK2] ; Get the run address
Recifarium 0:df922596d756 239 BX WRK2 ; Go to it!
Recifarium 0:df922596d756 240 high B high ; To be update latter when i will use 2 bytes tokens
Recifarium 0:df922596d756 241
Recifarium 0:df922596d756 242
Recifarium 0:df922596d756 243
Recifarium 0:df922596d756 244 Reset_Handler
Recifarium 0:df922596d756 245 LDR RPTR, =Begin
Recifarium 0:df922596d756 246 LDR NXT, =doNext
Recifarium 0:df922596d756 247 BL UartConfig
Recifarium 0:df922596d756 248 LDR IPTR, =test18
Recifarium 0:df922596d756 249 BX NXT
Recifarium 0:df922596d756 250
Recifarium 0:df922596d756 251
Recifarium 0:df922596d756 252 ;-----------------------------------
Recifarium 0:df922596d756 253 ; Dictionary start here
Recifarium 0:df922596d756 254 ;-(EXIT)----------------------------
Recifarium 0:df922596d756 255 LExit LINK 0 ; Link
Recifarium 0:df922596d756 256 DCB 4, "EXIT"
Recifarium 0:df922596d756 257 xExit SUBS RPTR, RPTR, #4 ; Adjust the return stack pointer
Recifarium 0:df922596d756 258 LDR IPTR,[RPTR] ; Collect the value
Recifarium 0:df922596d756 259 RET
Recifarium 0:df922596d756 260
Recifarium 0:df922596d756 261 ;-----------------------------------
Recifarium 0:df922596d756 262 ; All specific code for a chip
Recifarium 0:df922596d756 263 ; Must be put in a separate file
Recifarium 0:df922596d756 264 ; see lpc8xx.s as an example
Recifarium 0:df922596d756 265 ; INCLUDE yourfavoritechip.s
Recifarium 0:df922596d756 266
Recifarium 0:df922596d756 267
olzeke51 1:d7744c74e50f 268 ; GET ./lpc8xx.s
olzeke51 1:d7744c74e50f 269
Recifarium 0:df922596d756 270
Recifarium 0:df922596d756 271
Recifarium 0:df922596d756 272 ;-(0)-------------------------------( -- 0 )
Recifarium 0:df922596d756 273 LZero LINK LKey ; Link to LKey which is in the included file
Recifarium 0:df922596d756 274 DCB 1+Inline, "0"
Recifarium 0:df922596d756 275 xZero PUSH {TOS}
Recifarium 0:df922596d756 276 MOVS TOS, #0
Recifarium 0:df922596d756 277 RET
Recifarium 0:df922596d756 278
Recifarium 0:df922596d756 279 ;-(1)-------------------------------( -- 1 )
Recifarium 0:df922596d756 280 LOne LINK LZero ; Link
Recifarium 0:df922596d756 281 DCB 1+Inline,"1"
Recifarium 0:df922596d756 282 xOne PUSH {TOS}
Recifarium 0:df922596d756 283 MOVS TOS, #1
Recifarium 0:df922596d756 284 RET
Recifarium 0:df922596d756 285
Recifarium 0:df922596d756 286 ;-(#2)-------------------------------( -- 2 )
Recifarium 0:df922596d756 287 LTwo LINK LOne ; Link
Recifarium 0:df922596d756 288 DCB 2+Inline,"#2"
Recifarium 0:df922596d756 289 xTwo PUSH {TOS}
Recifarium 0:df922596d756 290 MOVS TOS, #2
Recifarium 0:df922596d756 291 RET
Recifarium 0:df922596d756 292
Recifarium 0:df922596d756 293 ;-(#10)------------------------------( -- 10 )
Recifarium 0:df922596d756 294 LTen LINK LTwo ; Link
Recifarium 0:df922596d756 295 DCB 3+Inline, "#10"
Recifarium 0:df922596d756 296 xTen PUSH {TOS}
Recifarium 0:df922596d756 297 MOVS TOS, #10
Recifarium 0:df922596d756 298 RET
Recifarium 0:df922596d756 299
Recifarium 0:df922596d756 300 ;-(Plus1)---------------------------( n -- n+1 )
Recifarium 0:df922596d756 301 LPlus1 LINK LTen ; Link
Recifarium 0:df922596d756 302 DCB 2+Inline, "1+"
Recifarium 0:df922596d756 303 xPlus1 ADDS TOS, TOS, #1 ; Add 1 to TOS
Recifarium 0:df922596d756 304 RET
Recifarium 0:df922596d756 305
Recifarium 0:df922596d756 306 ;-(Minus1)--------------------------( n -- n-1 )
Recifarium 0:df922596d756 307 LMinus1 LINK LPlus1 ; Link
Recifarium 0:df922596d756 308 DCB 2+Inline, "1-"
Recifarium 0:df922596d756 309 xMinus1 SUBS TOS, TOS, #1 ; Substract 1 to TOS
Recifarium 0:df922596d756 310 RET
Recifarium 0:df922596d756 311
Recifarium 0:df922596d756 312 ;-(DUP)-----------------------------(x -- x,x)
Recifarium 0:df922596d756 313 LDup LINK LMinus1 ; Link
Recifarium 0:df922596d756 314 DCB 3+Inline, "DUP"
Recifarium 0:df922596d756 315 xDup PUSH {TOS} ; Push Top of stack onto the stack (sp pointing)
Recifarium 0:df922596d756 316 RET
Recifarium 0:df922596d756 317
Recifarium 0:df922596d756 318 ;-(2DUP)----------------------------(x2,x1 -- x2,x1,x2,x1)
Recifarium 0:df922596d756 319 L2Dup LINK LDup ; Link
Recifarium 0:df922596d756 320 DCB 4, "2DUP"
Recifarium 0:df922596d756 321 x2Dup POP {WRK} ; Get second element
Recifarium 0:df922596d756 322 PUSH {WRK} ; Put second element
Recifarium 0:df922596d756 323 PUSH {TOS} ; Put first element
Recifarium 0:df922596d756 324 PUSH {WRK} ; Put second element
Recifarium 0:df922596d756 325 RET ; First is still in TOS
Recifarium 0:df922596d756 326
Recifarium 0:df922596d756 327 ;-(doLit8)--------------------------( -- n )
Recifarium 0:df922596d756 328 LdoLit8 LINK L2Dup ; Link
Recifarium 0:df922596d756 329 DCB 5, "Lit8" ; For value between -128,+127
Recifarium 0:df922596d756 330 doLit8 PUSH {TOS} ; Make room
Recifarium 0:df922596d756 331 LDRB TOS,[IPTR] ; Collect the byte just after the token (IPTR pointing to it)
Recifarium 0:df922596d756 332 SXTB TOS, TOS ; Extent the sign
Recifarium 0:df922596d756 333 ADDS IPTR, #1 ; Jump over the byte
Recifarium 0:df922596d756 334 RET
Recifarium 0:df922596d756 335
Recifarium 0:df922596d756 336 ;-(doLit16)-------------------------( -- n )
Recifarium 0:df922596d756 337 LdoLit16 LINK LdoLit8 ; Link
Recifarium 0:df922596d756 338 DCB 5, "Lit16"
Recifarium 0:df922596d756 339 doLit16 PUSH {TOS} ; Make room
Recifarium 0:df922596d756 340 ADDS IPTR, IPTR, #1 ; Point to
Recifarium 0:df922596d756 341 LSRS IPTR, IPTR, #1 ; the next halfword
Recifarium 0:df922596d756 342 LSLS IPTR, IPTR, #1 ; boundary
Recifarium 0:df922596d756 343 LDRH TOS, [IPTR] ; Collect the halfword
Recifarium 0:df922596d756 344 SXTH TOS, TOS ; Extend the sign
Recifarium 0:df922596d756 345 ADDS IPTR, #2 ; Jump over the halfword
Recifarium 0:df922596d756 346 RET
Recifarium 0:df922596d756 347
Recifarium 0:df922596d756 348 ;-(doLit32)-------------------------( -- n )
Recifarium 0:df922596d756 349 LdoLit32 LINK LdoLit16 ; Link
Recifarium 0:df922596d756 350 DCB 5, "Lit32"
Recifarium 0:df922596d756 351 doLit32 PUSH {TOS}
Recifarium 0:df922596d756 352 ADDS IPTR, IPTR, #3 ; point to
Recifarium 0:df922596d756 353 LSRS IPTR, IPTR, #2 ; the next word
Recifarium 0:df922596d756 354 LSLS IPTR, IPTR, #2 ; boundary
Recifarium 0:df922596d756 355 LDR TOS, [IPTR]
Recifarium 0:df922596d756 356 ADDS IPTR, #4 ; Jump over the word
Recifarium 0:df922596d756 357 RET
Recifarium 0:df922596d756 358
Recifarium 0:df922596d756 359 ;-(OR)------------------------------( x1 x2 -- x3 )
Recifarium 0:df922596d756 360 LOr LINK LdoLit32 ; Link
Recifarium 0:df922596d756 361 DCB 2,"OR"
Recifarium 0:df922596d756 362 xOr POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 363 ORRS TOS, TOS, WRK ; Or
Recifarium 0:df922596d756 364 RET
Recifarium 0:df922596d756 365
Recifarium 0:df922596d756 366 ;-(AND)-----------------------------( x1 x2 -- x3 )
Recifarium 0:df922596d756 367 LAnd LINK LOr ; Link
Recifarium 0:df922596d756 368 DCB 3,"AND"
Recifarium 0:df922596d756 369 xAnd POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 370 ANDS TOS, TOS, WRK ; And
Recifarium 0:df922596d756 371 RET
Recifarium 0:df922596d756 372
Recifarium 0:df922596d756 373 ;-(XOR)-----------------------------( x1 x2 -- x3 )
Recifarium 0:df922596d756 374 LXor LINK LAnd ; Link
Recifarium 0:df922596d756 375 DCB 3, "XOR"
Recifarium 0:df922596d756 376 xXor POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 377 EORS TOS, TOS, WRK ; Xor
Recifarium 0:df922596d756 378 RET
Recifarium 0:df922596d756 379
Recifarium 0:df922596d756 380 ;-(0<)------------------------------( n -- f)
Recifarium 0:df922596d756 381 LIsNeg LINK LXor ; Link
Recifarium 0:df922596d756 382 DCB 2+Inline, "0<"
Recifarium 0:df922596d756 383 xIsNeg ASRS TOS, TOS, #31 ; Extend the sign True=FFFFFFFF False=00000000
Recifarium 0:df922596d756 384 RET
Recifarium 0:df922596d756 385
Recifarium 0:df922596d756 386 ;-(0=)------------------------------( n -- f )
Recifarium 0:df922596d756 387 LIsNull LINK LIsNeg ; Link
Recifarium 0:df922596d756 388 DCB 2, "0="
Recifarium 0:df922596d756 389 xIsNull MOVS TOS,TOS ; test the value
Recifarium 0:df922596d756 390 BEQ Isnull1
Recifarium 0:df922596d756 391 SUBS TOS, TOS ; False
Recifarium 0:df922596d756 392 B IsNull2
Recifarium 0:df922596d756 393 Isnull1 SUBS TOS,TOS,#1 ; True
Recifarium 0:df922596d756 394 IsNull2 RET
Recifarium 0:df922596d756 395
Recifarium 0:df922596d756 396 ;-(0>)------------------------------( n -- f )
Recifarium 0:df922596d756 397 LIsPos LINK LIsNull ; Link
Recifarium 0:df922596d756 398 DCB 2, "0>"
Recifarium 0:df922596d756 399 xIsPos MOVS TOS,TOS
Recifarium 0:df922596d756 400 LDR TOS,=0x0 ; False
Recifarium 0:df922596d756 401 BNE IsPos1
Recifarium 0:df922596d756 402 BPL IsPos1
Recifarium 0:df922596d756 403 SUBS TOS,TOS,#1 ; True
Recifarium 0:df922596d756 404 IsPos1 RET
Recifarium 0:df922596d756 405
Recifarium 0:df922596d756 406 LTORG
Recifarium 0:df922596d756 407 ;-(EXECUTE)-------------------------( xt -- )
Recifarium 0:df922596d756 408 LExec LINK LIsPos ; Link
Recifarium 0:df922596d756 409 DCB 7+Inline, "EXECUTE"
Recifarium 0:df922596d756 410 xExec ADDS WRK2, TOS, #1 ; Because of Thumb
Recifarium 0:df922596d756 411 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 412 BX WRK2 ; We need to use WRK2 at the entry of a high level word. See doCol comment
Recifarium 0:df922596d756 413
Recifarium 0:df922596d756 414 ;-(DROP)-----------------------------(x -- )
Recifarium 0:df922596d756 415 LDrop LINK LExec ; Link
Recifarium 0:df922596d756 416 DCB 4+Inline, "DROP"
Recifarium 0:df922596d756 417 xDrop POP {TOS} ; Get previous element
Recifarium 0:df922596d756 418 RET
Recifarium 0:df922596d756 419
Recifarium 0:df922596d756 420 ;-(2DROP)---------------------------( x1 x2 -- )
Recifarium 0:df922596d756 421 L2Drop LINK LDrop ; Link
Recifarium 0:df922596d756 422 DCB 5+Inline, "2DROP"
Recifarium 0:df922596d756 423 x2Drop POP {TOS} ; Get previous element
Recifarium 0:df922596d756 424 POP {TOS} ; Get previous element
Recifarium 0:df922596d756 425 RET
Recifarium 0:df922596d756 426
Recifarium 0:df922596d756 427 ;-(SWAP)----------------------------( x1 x2 -- x2 x1 )
Recifarium 0:df922596d756 428 LSwap LINK L2Drop ; Link
Recifarium 0:df922596d756 429 DCB 4, "SWAP"
Recifarium 0:df922596d756 430 xSwap POP {WRK} ; Get x1
Recifarium 0:df922596d756 431 PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 432 MOVS TOS,WRK ; Put x1
Recifarium 0:df922596d756 433 RET
Recifarium 0:df922596d756 434
Recifarium 0:df922596d756 435 ;-(OVER)----------------------------( x1 x2 -- x1 x2 x1 )
Recifarium 0:df922596d756 436 LOver LINK LSwap ; Link
Recifarium 0:df922596d756 437 DCB 4+Inline, "OVER"
Recifarium 0:df922596d756 438 xOver PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 439 LDR TOS,[sp,#4] ; Get x1
Recifarium 0:df922596d756 440 RET
Recifarium 0:df922596d756 441
Recifarium 0:df922596d756 442 ;-(ROT)-----------------------------( x1 x2 x3 -- x2 x3 x1 )
Recifarium 0:df922596d756 443 LRot LINK LOver ; Link
Recifarium 0:df922596d756 444 DCB 3, "ROT"
Recifarium 0:df922596d756 445 xRot POP {WRK} ; Get x2
Recifarium 0:df922596d756 446 POP {WRK2} ; Get x1
Recifarium 0:df922596d756 447 PUSH {WRK} ; Put x2
Recifarium 0:df922596d756 448 PUSH {TOS} ; Put x3
Recifarium 0:df922596d756 449 MOV TOS,WRK2 ; Put x1
Recifarium 0:df922596d756 450 RET
Recifarium 0:df922596d756 451
Recifarium 0:df922596d756 452 ;-(-ROT)-----------------------------( x1 x2 x3 -- x3 x1 x2 )
Recifarium 0:df922596d756 453 LMRot LINK LRot ; Link
Recifarium 0:df922596d756 454 DCB 4, "-ROT"
Recifarium 0:df922596d756 455 xMRot POP {WRK} ; Get x2
Recifarium 0:df922596d756 456 POP {WRK2} ; Get x1
Recifarium 0:df922596d756 457 PUSH {TOS} ; Put x3
Recifarium 0:df922596d756 458 PUSH {WRK2} ; Put x1
Recifarium 0:df922596d756 459 MOV TOS,WRK ; Put x2
Recifarium 0:df922596d756 460 RET
Recifarium 0:df922596d756 461
Recifarium 0:df922596d756 462 ;-(NIP)-----------------------------( x1 x2 -- x2 )
Recifarium 0:df922596d756 463 LNip LINK LMRot ; Link
Recifarium 0:df922596d756 464 DCB 3+Inline, "NIP"
Recifarium 0:df922596d756 465 xNip POP {WRK} ; Discard x1
Recifarium 0:df922596d756 466 RET
Recifarium 0:df922596d756 467
Recifarium 0:df922596d756 468 ;-(TUCK)-----------------------------( x1 x2 -- x2 x1 x2 )
Recifarium 0:df922596d756 469 LTuck LINK LNip ; Link
Recifarium 0:df922596d756 470 DCB 4, "TUCK"
Recifarium 0:df922596d756 471 xTuck POP {WRK} ; Get x1
Recifarium 0:df922596d756 472 PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 473 PUSH {WRK} ; Put x1
Recifarium 0:df922596d756 474 RET
Recifarium 0:df922596d756 475
Recifarium 0:df922596d756 476 ;-(+)-------------------------------( n1|u1 n2|u2 -- n3|u3 )
Recifarium 0:df922596d756 477 LPlus LINK LTuck ; Link
Recifarium 0:df922596d756 478 DCB 1+Inline, "+"
Recifarium 0:df922596d756 479 xPlus POP {WRK} ; Get n1|u1
Recifarium 0:df922596d756 480 ADDS TOS, TOS, WRK ; Add n2|u2
Recifarium 0:df922596d756 481 RET
Recifarium 0:df922596d756 482
Recifarium 0:df922596d756 483 ;-(-)-------------------------------( n1|u1 n2|u2 -- n3|u3 )
Recifarium 0:df922596d756 484 LMinus LINK LPlus ; Link
Recifarium 0:df922596d756 485 DCB 1+Inline, "-"
Recifarium 0:df922596d756 486 xMinus POP {WRK} ; Get n1|u1
Recifarium 0:df922596d756 487 SUBS TOS, WRK, TOS ; Substract from TOS
Recifarium 0:df922596d756 488 RET
Recifarium 0:df922596d756 489
Recifarium 0:df922596d756 490 ;-(2*)------------------------------
Recifarium 0:df922596d756 491 LTwosta LINK LMinus ; Link
Recifarium 0:df922596d756 492 DCB 2+Inline, "2*"
Recifarium 0:df922596d756 493 xTwoStar LSLS TOS, TOS, #1 ; Shift one bit
Recifarium 0:df922596d756 494 RET
Recifarium 0:df922596d756 495
Recifarium 0:df922596d756 496 ;-(2/)------------------------------
Recifarium 0:df922596d756 497 LTwosla LINK LTwosta ; Link
Recifarium 0:df922596d756 498 DCB 2+Inline, "2/"
Recifarium 0:df922596d756 499 xTwoSla ASRS TOS, TOS, #1 ; Shift one bit
Recifarium 0:df922596d756 500 RET
Recifarium 0:df922596d756 501
Recifarium 0:df922596d756 502 ;-(4*)------------------------------
Recifarium 0:df922596d756 503 LFoursta LINK LTwosla ; Link
Recifarium 0:df922596d756 504 DCB 2+Inline, "4*"
Recifarium 0:df922596d756 505 xFoursta LSLS TOS, TOS, #2 ; Shift two bits
Recifarium 0:df922596d756 506 RET
Recifarium 0:df922596d756 507
Recifarium 0:df922596d756 508 ;-(4/)------------------------------
Recifarium 0:df922596d756 509 L4Slash LINK LFoursta ; Link
Recifarium 0:df922596d756 510 DCB 2+Inline, "4/"
Recifarium 0:df922596d756 511 xSlash4 ASRS TOS, TOS, #2 ; Shift two bits
Recifarium 0:df922596d756 512 RET
Recifarium 0:df922596d756 513
Recifarium 0:df922596d756 514 ;-(LSHIFT)--------------------------(x1,u --- x2)
Recifarium 0:df922596d756 515 LShift LINK L4Slash ; Link
Recifarium 0:df922596d756 516 DCB 6+Inline, "LSHIFT"
Recifarium 0:df922596d756 517 xSixtn POP {WRK} ; Get x1
Recifarium 0:df922596d756 518 LSLS WRK, WRK, TOS ; Shift x1 u place to the left
Recifarium 0:df922596d756 519 MOVS TOS, WRK
Recifarium 0:df922596d756 520 RET
Recifarium 0:df922596d756 521
Recifarium 0:df922596d756 522 ;-(RSHIFT)--------------------------(x1,u --- x2)
Recifarium 0:df922596d756 523 LRShift LINK LShift ; Link
Recifarium 0:df922596d756 524 DCB 6+Inline, "RSHIFT"
Recifarium 0:df922596d756 525 POP {WRK} ; Get x1
Recifarium 0:df922596d756 526 LSRS WRK, WRK, TOS ; Shift x1 u place to the right
Recifarium 0:df922596d756 527 MOVS TOS, WRK
Recifarium 0:df922596d756 528 RET
Recifarium 0:df922596d756 529
Recifarium 0:df922596d756 530 ;-(@)-------------------------------( a -- x )
Recifarium 0:df922596d756 531 LAt LINK LRShift ; Link
Recifarium 0:df922596d756 532 DCB 1+Inline, "@"
Recifarium 0:df922596d756 533 xAt LDR TOS, [TOS] ; Get the value pointed by TOS
Recifarium 0:df922596d756 534 RET
Recifarium 0:df922596d756 535
Recifarium 0:df922596d756 536 ;-(C@)------------------------------( a -- c )
Recifarium 0:df922596d756 537 LCAt LINK LAt ; Link
Recifarium 0:df922596d756 538 DCB 2+Inline, "C@"
Recifarium 0:df922596d756 539 xCAt LDRB TOS, [TOS] ; Get the caracter pointed by TOS
Recifarium 0:df922596d756 540 RET
Recifarium 0:df922596d756 541
Recifarium 0:df922596d756 542 ;-(H@)------------------------------( a -- h )
Recifarium 0:df922596d756 543 LHAt LINK LCAt ; Link
Recifarium 0:df922596d756 544 DCB 2+Inline, "H@"
Recifarium 0:df922596d756 545 xHAt LDRH TOS, [TOS] ; Get the halfword pointed by TOS
Recifarium 0:df922596d756 546 RET
Recifarium 0:df922596d756 547
Recifarium 0:df922596d756 548 ;-(!)-------------------------------(word,address --)
Recifarium 0:df922596d756 549 LStore LINK LHAt ; Link
Recifarium 0:df922596d756 550 DCB 1+Inline, "!"
Recifarium 0:df922596d756 551 xStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 552 STR WRK, [TOS] ; Store word where TOS point to
Recifarium 0:df922596d756 553 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 554 RET
Recifarium 0:df922596d756 555
Recifarium 0:df922596d756 556 ;-(C!)------------------------------(char,addr--)
Recifarium 0:df922596d756 557 LCStore LINK LStore ; Link
Recifarium 0:df922596d756 558 DCB 2+Inline, "C!"
Recifarium 0:df922596d756 559 xCStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 560 STRB WRK, [TOS] ; Store Character value where TOS point to
Recifarium 0:df922596d756 561 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 562 RET
Recifarium 0:df922596d756 563
Recifarium 0:df922596d756 564 ;-(H!)------------------------------(halfword,address --)
Recifarium 0:df922596d756 565 LHStore LINK LCStore ; Link
Recifarium 0:df922596d756 566 DCB 2 ; Length
Recifarium 0:df922596d756 567 DCB "H!"
Recifarium 0:df922596d756 568 xHStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 569 STRH WRK, [TOS] ; Store Halfword where TOS point to
Recifarium 0:df922596d756 570 POP {TOS}
Recifarium 0:df922596d756 571 RET
Recifarium 0:df922596d756 572
Recifarium 0:df922596d756 573 ;-(>R)------------------------------( n -- R:n)
Recifarium 0:df922596d756 574 LToR LINK LHStore ; Link
Recifarium 0:df922596d756 575 DCB 2+Inline+Cmponly, ">R"
Recifarium 0:df922596d756 576 xToR STR TOS,[RPTR] ; Put TOS on return stack
Recifarium 0:df922596d756 577 ADDS RPTR, #4 ; Adjust Stack pointer
Recifarium 0:df922596d756 578 POP {TOS} ; update TOS
Recifarium 0:df922596d756 579 RET
Recifarium 0:df922596d756 580
Recifarium 0:df922596d756 581 ;-(R>)------------------------------(R:n -- n)
Recifarium 0:df922596d756 582 LFromR LINK LToR ; Link
Recifarium 0:df922596d756 583 DCB 2, "R>"
Recifarium 0:df922596d756 584 xFromR PUSH {TOS} ; Make room
Recifarium 0:df922596d756 585 SUBS RPTR, RPTR, #4 ; Prepare to collect
Recifarium 0:df922596d756 586 LDR TOS, [RPTR] ; Collect value
Recifarium 0:df922596d756 587 RET
Recifarium 0:df922596d756 588 ;-(R@)------------------------------
Recifarium 0:df922596d756 589 LRAt LINK LFromR ; Link
Recifarium 0:df922596d756 590 DCB 2, "R@"
Recifarium 0:df922596d756 591 xRAt PUSH {TOS} ; Make room
Recifarium 0:df922596d756 592 MOVS TOS, RPTR ; Collect value
Recifarium 0:df922596d756 593 SUBS TOS, #4 ; Point to previous word
Recifarium 0:df922596d756 594 LDR TOS,[TOS] ; Get value
Recifarium 0:df922596d756 595 RET
Recifarium 0:df922596d756 596 ;-(NOT)-----------------------------
Recifarium 0:df922596d756 597 LNot LINK LRAt ; Link
Recifarium 0:df922596d756 598 DCB 3+Inline, "NOT"
Recifarium 0:df922596d756 599 xNot MVNS TOS, TOS ; move not
Recifarium 0:df922596d756 600 RET
Recifarium 0:df922596d756 601
Recifarium 0:df922596d756 602 ;-(branch)-------------------------- Branch & ZBranch use a halfword align displacement
Recifarium 0:df922596d756 603 Lbranch LINK LNot ; Link
Recifarium 0:df922596d756 604 DCB 3, "BRA"
Recifarium 0:df922596d756 605 xBra ADDS IPTR, #1 ; Point to
Recifarium 0:df922596d756 606 LSRS IPTR, IPTR, #1 ; the next halfword
Recifarium 0:df922596d756 607 LSLS IPTR, IPTR, #1 ; boundary
Recifarium 0:df922596d756 608 LDRH WRK, [IPTR] ; Get the displacement
Recifarium 0:df922596d756 609 SXTH WRK, WRK ; Extend the sign
Recifarium 0:df922596d756 610 ADDS IPTR, IPTR, WRK ; Compute destination address
Recifarium 0:df922596d756 611 RET
Recifarium 0:df922596d756 612
Recifarium 0:df922596d756 613 ;-(Zbranch)-------------------------
Recifarium 0:df922596d756 614 LZbranch LINK Lbranch ; Link
Recifarium 0:df922596d756 615 DCB 4, "0BRA"
Recifarium 0:df922596d756 616 xZBra TST TOS,TOS ; Update flags
Recifarium 0:df922596d756 617 POP {TOS} ;
Recifarium 0:df922596d756 618 BEQ xBra ; Take the branch if TOS = 0
Recifarium 0:df922596d756 619 ADDS IPTR, #1 ; Else compute
Recifarium 0:df922596d756 620 LSRS IPTR, IPTR, #1 ; the next halfword
Recifarium 0:df922596d756 621 LSLS IPTR, IPTR, #1 ; boundary
Recifarium 0:df922596d756 622 ADDS IPTR, #2 ; and jump over the halfword displacement
Recifarium 0:df922596d756 623 RET
Recifarium 0:df922596d756 624
Recifarium 0:df922596d756 625 ;-(NEGATE)--------------------------(n -- -n)
Recifarium 0:df922596d756 626 LNegate LINK LZbranch ; Link
Recifarium 0:df922596d756 627 DCB 6+Inline, "NEGATE"
Recifarium 0:df922596d756 628 xNeg MVNS TOS, TOS ; Move NOT signed
Recifarium 0:df922596d756 629 ADDS TOS, #1
Recifarium 0:df922596d756 630 RET
Recifarium 0:df922596d756 631
Recifarium 0:df922596d756 632 ;-(ABS)-----------------------------(n -- |n|)
Recifarium 0:df922596d756 633 LAbs LINK LNegate ; Link
Recifarium 0:df922596d756 634 DCB 3, "ABS"
Recifarium 0:df922596d756 635 xAbs TST TOS, TOS ; Test TOS
Recifarium 0:df922596d756 636 BPL Abs1 ; If positive do nothing
Recifarium 0:df922596d756 637 MOVS WRK, #0
Recifarium 0:df922596d756 638 SUBS TOS, WRK, TOS ; TOS = 0 - TOS
Recifarium 0:df922596d756 639 Abs1 RET
Recifarium 0:df922596d756 640
Recifarium 0:df922596d756 641 ;-(MAX)-----------------------------(n1, n2 -- Max(n1,n2))
Recifarium 0:df922596d756 642 LMax LINK LAbs ; Link
Recifarium 0:df922596d756 643 DCB 3, "MAX"
Recifarium 0:df922596d756 644 xMax POP {WRK}
Recifarium 0:df922596d756 645 CMP WRK, TOS
Recifarium 0:df922596d756 646 BLT xMax1
Recifarium 0:df922596d756 647 MOVS TOS, WRK
Recifarium 0:df922596d756 648 xMax1 RET
Recifarium 0:df922596d756 649
Recifarium 0:df922596d756 650 ;-(MIN)-----------------------------(n1, n2 -- Min(n1,n2))
Recifarium 0:df922596d756 651 LMin LINK LMax ; Link
Recifarium 0:df922596d756 652 DCB 3, "MIN"
Recifarium 0:df922596d756 653 xMin POP {WRK}
Recifarium 0:df922596d756 654 CMP WRK, TOS
Recifarium 0:df922596d756 655 BGT xMin1
Recifarium 0:df922596d756 656 MOVS TOS, WRK
Recifarium 0:df922596d756 657 xMin1 RET
Recifarium 0:df922596d756 658
Recifarium 0:df922596d756 659 ;-(WITHIN)--------------------------
Recifarium 0:df922596d756 660 LWithin LINK LMin ; Link
Recifarium 0:df922596d756 661 DCB 6, "WITHIN"
Recifarium 0:df922596d756 662 xWithin doCol
Recifarium 0:df922596d756 663 DCB Over, Minus, ToR ; : Within Over - >R - R> U< ;
Recifarium 0:df922596d756 664 DCB Minus, FromR, ULess ;
Recifarium 0:df922596d756 665 DCB Exit
Recifarium 0:df922596d756 666
Recifarium 0:df922596d756 667 ;-(=)-------------------------------
Recifarium 0:df922596d756 668 LEq LINK LWithin ; Link
Recifarium 0:df922596d756 669 DCB 1, "="
Recifarium 0:df922596d756 670 xEq POP {WRK}
Recifarium 0:df922596d756 671 CMP WRK,TOS
Recifarium 0:df922596d756 672 LDR TOS, =0x0 ; False flag
Recifarium 0:df922596d756 673 BNE xEq1
Recifarium 0:df922596d756 674 SUBS TOS, #1 ; True
Recifarium 0:df922596d756 675 xEq1 RET
Recifarium 0:df922596d756 676
Recifarium 0:df922596d756 677 ;-(<)-------------------------------
Recifarium 0:df922596d756 678 LLt LINK LEq ; Link
Recifarium 0:df922596d756 679 DCB 1, "<"
Recifarium 0:df922596d756 680 xLt POP {WRK}
Recifarium 0:df922596d756 681 CMP WRK,TOS
Recifarium 0:df922596d756 682 LDR TOS, =0x0
Recifarium 0:df922596d756 683 BGE xLt1
Recifarium 0:df922596d756 684 SUBS TOS, #1
Recifarium 0:df922596d756 685 xLt1 RET
Recifarium 0:df922596d756 686
Recifarium 0:df922596d756 687 ;-(>)-------------------------------
Recifarium 0:df922596d756 688 LGt LINK LLt ; Link
Recifarium 0:df922596d756 689 DCB 1, ">"
Recifarium 0:df922596d756 690 xGt POP {WRK}
Recifarium 0:df922596d756 691 CMP WRK,TOS
Recifarium 0:df922596d756 692 LDR TOS, =0x0
Recifarium 0:df922596d756 693 BLE xGt1
Recifarium 0:df922596d756 694 SUBS TOS, #1
Recifarium 0:df922596d756 695 xGt1 RET
Recifarium 0:df922596d756 696
Recifarium 0:df922596d756 697 ;-(INVERT)--------------------------
Recifarium 0:df922596d756 698 LInvert LINK LGt ; Link
Recifarium 0:df922596d756 699 DCB 6+Inline, "INVERT"
Recifarium 0:df922596d756 700 xInvert MVNS TOS, TOS
Recifarium 0:df922596d756 701 RET
Recifarium 0:df922596d756 702
Recifarium 0:df922596d756 703 ;-(?DUP)----------------------------(n -- n,n | n)
Recifarium 0:df922596d756 704 LDupNZ LINK LInvert ; Link
Recifarium 0:df922596d756 705 DCB 4, "?DUP"
Recifarium 0:df922596d756 706 xDupNZ TST TOS, TOS ; Test TOS
Recifarium 0:df922596d756 707 BEQ DupNZ1 ; If 0 do nothing
Recifarium 0:df922596d756 708 PUSH {TOS} ; Duplicate
Recifarium 0:df922596d756 709 DupNZ1 RET
Recifarium 0:df922596d756 710
Recifarium 0:df922596d756 711 ;-(*)-------------------------------
Recifarium 0:df922596d756 712 LMul LINK LDupNZ ; Link
Recifarium 0:df922596d756 713 DCB 1+Inline, "*"
Recifarium 0:df922596d756 714 xMul POP {WRK} ; Get 2nd Element
Recifarium 0:df922596d756 715 MULS TOS, WRK, TOS ; Multiply
Recifarium 0:df922596d756 716 RET
Recifarium 0:df922596d756 717
Recifarium 0:df922596d756 718 ;-(+!)------------------------------
Recifarium 0:df922596d756 719 LAddSto LINK LMul ; Link
Recifarium 0:df922596d756 720 DCB 2, "+!"
Recifarium 0:df922596d756 721 xAddSto POP {WRK}
Recifarium 0:df922596d756 722 LDR WRK2, [TOS]
Recifarium 0:df922596d756 723 ADDS WRK, WRK, WRK2
Recifarium 0:df922596d756 724 STR WRK, [TOS]
Recifarium 0:df922596d756 725 POP {TOS}
Recifarium 0:df922596d756 726 RET
Recifarium 0:df922596d756 727
Recifarium 0:df922596d756 728 ;-(-!)------------------------------
Recifarium 0:df922596d756 729 LSubSto LINK LAddSto ; Link
Recifarium 0:df922596d756 730 DCB 2, "-!"
Recifarium 0:df922596d756 731 xSubSto POP {WRK}
Recifarium 0:df922596d756 732 LDR WRK2, [TOS]
Recifarium 0:df922596d756 733 SUBS WRK, WRK, WRK2
Recifarium 0:df922596d756 734 STR WRK, [TOS]
Recifarium 0:df922596d756 735 POP {TOS}
Recifarium 0:df922596d756 736 RET
Recifarium 0:df922596d756 737
Recifarium 0:df922596d756 738 ;-(CELL)---------------------------
Recifarium 0:df922596d756 739 LCell LINK LSubSto ; Link
Recifarium 0:df922596d756 740 DCB 4+Inline, "CELL"
Recifarium 0:df922596d756 741 xCell PUSH {TOS}
Recifarium 0:df922596d756 742 MOVS TOS, #4 ; Cells are 4 bytes
Recifarium 0:df922596d756 743 RET
Recifarium 0:df922596d756 744
Recifarium 0:df922596d756 745 ;-(SP0)---------------------------
Recifarium 0:df922596d756 746 LSP0 LINK LCell ; Link
Recifarium 0:df922596d756 747 DCB 3, "SP0"
Recifarium 0:df922596d756 748 xSp0 SUBS WRK, WRK ; Cortex M0+ initial stack value address : 0
Recifarium 0:df922596d756 749 LDR WRK, [WRK]
Recifarium 0:df922596d756 750 PUSH {TOS}
Recifarium 0:df922596d756 751 MOV TOS, WRK
Recifarium 0:df922596d756 752 RET
Recifarium 0:df922596d756 753
Recifarium 0:df922596d756 754 ;-(SP@)-----------------------------
Recifarium 0:df922596d756 755 LSPAt LINK LSP0 ; Link
Recifarium 0:df922596d756 756 DCB 3, "SP@"
Recifarium 0:df922596d756 757 xSpAt MOV WRK, sp ; Collect the value before push!
Recifarium 0:df922596d756 758 PUSH {TOS}
Recifarium 0:df922596d756 759 MOV TOS, WRK ; Update
Recifarium 0:df922596d756 760 RET
Recifarium 0:df922596d756 761
Recifarium 0:df922596d756 762 ;-(DEPTH)---------------------------: Depth SP@ SP0 - /4 ; 14 bytes
Recifarium 0:df922596d756 763 LDepth LINK LSPAt ; Link
Recifarium 0:df922596d756 764 DCB 5, "DEPTH"
Recifarium 0:df922596d756 765 xDepth doCol
Recifarium 0:df922596d756 766 DCB SpAt, Sp0, Swap
Recifarium 0:df922596d756 767 DCB Minus, Slash4 ;
Recifarium 0:df922596d756 768 DCB Exit
Recifarium 0:df922596d756 769
Recifarium 0:df922596d756 770 ;-(STATE)---------------------------
Recifarium 0:df922596d756 771 LState LINK LDepth ; Link
Recifarium 0:df922596d756 772 DCB 5, "STATE"
Recifarium 0:df922596d756 773 xState PUSH {TOS}
Recifarium 0:df922596d756 774 LDR TOS, =VState ; Put address on TOS
Recifarium 0:df922596d756 775 RET
Recifarium 0:df922596d756 776
Recifarium 0:df922596d756 777 ;-(LATEST)--------------------------
Recifarium 0:df922596d756 778 LLatest LINK LState ; Link
Recifarium 0:df922596d756 779 DCB 6, "LATEST"
Recifarium 0:df922596d756 780 ;Latest STR TOS, [DPTR]
Recifarium 0:df922596d756 781 ; INC DPTR
Recifarium 0:df922596d756 782 ; LDR TOS, =SLatest ; Put address on TOS
Recifarium 0:df922596d756 783 RET
Recifarium 0:df922596d756 784
Recifarium 0:df922596d756 785 ;-(HERE)----------------------------
Recifarium 0:df922596d756 786 LHere LINK LLatest ; Link
Recifarium 0:df922596d756 787 DCB 4, "HERE"
Recifarium 0:df922596d756 788 ;Here STR TOS, [DPTR]
Recifarium 0:df922596d756 789 ; INC DPTR
Recifarium 0:df922596d756 790 ; LDR TOS, =SHere ; Put address on TOS
Recifarium 0:df922596d756 791 RET ; To collect the address
Recifarium 0:df922596d756 792
Recifarium 0:df922596d756 793 ;-(BASE)----------------------------
Recifarium 0:df922596d756 794 LBase LINK LHere ; Link
Recifarium 0:df922596d756 795 DCB 4, "BASE"
Recifarium 0:df922596d756 796 xBase PUSH {TOS}
Recifarium 0:df922596d756 797 LDR TOS, =VBase ; Put address on TOS
Recifarium 0:df922596d756 798 RET
Recifarium 0:df922596d756 799
Recifarium 0:df922596d756 800 ;-(msec)----------------------------
Recifarium 0:df922596d756 801 Lmsec LINK LBase ; Link
Recifarium 0:df922596d756 802 DCB 4, "msec"
Recifarium 0:df922596d756 803 msec LDR WRK, =2400
Recifarium 0:df922596d756 804 L1msec SUBS WRK, #1 ; 1 Cycle
Recifarium 0:df922596d756 805 BNE L1msec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 806 SUBS TOS, #1 ; 1 cycle
Recifarium 0:df922596d756 807 BNE msec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 808 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 809 RET
Recifarium 0:df922596d756 810
Recifarium 0:df922596d756 811
Recifarium 0:df922596d756 812 ;-(10usec)--------------------------
Recifarium 0:df922596d756 813 Lusec LINK Lmsec ; Link
Recifarium 0:df922596d756 814 DCB 6, "10usec"
Recifarium 0:df922596d756 815 Tusec LDR WRK, =23
Recifarium 0:df922596d756 816 L1usec SUBS WRK, #1 ; 1 Cycle
Recifarium 0:df922596d756 817 BNE L1usec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 818 SUBS TOS, #1 ; 1 cycle
Recifarium 0:df922596d756 819 BNE Tusec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 820 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 821 RET
Recifarium 0:df922596d756 822
Recifarium 0:df922596d756 823 ;-(SNAP)----------------------------; Debug helper
Recifarium 0:df922596d756 824 LSnap LINK Lusec
Recifarium 0:df922596d756 825 DCB 4, "SNAP"
Recifarium 0:df922596d756 826 xSnap PUSH {TOS}
Recifarium 0:df922596d756 827 ESnap MOVS r0,#8
Recifarium 0:df922596d756 828 Snap0 PUSH {TOS}
Recifarium 0:df922596d756 829 LSRS TOS, TOS, #28
Recifarium 0:df922596d756 830 CMP TOS, #0x9
Recifarium 0:df922596d756 831 BGT Snap1
Recifarium 0:df922596d756 832 ADDS TOS, #"0"
Recifarium 0:df922596d756 833 B Snap2
Recifarium 0:df922596d756 834 Snap1 ADDS TOS, #("A"-0xa)
Recifarium 0:df922596d756 835 Snap2 LDR r1,=(USART0)
Recifarium 0:df922596d756 836 Snap3 LDR r2,[r1,#STAT]
Recifarium 0:df922596d756 837 LSRS r2,#3
Recifarium 0:df922596d756 838 BCC Snap3 ; ? ready to Xmit
Recifarium 0:df922596d756 839 STR TOS,[r1,#TXDAT]
Recifarium 0:df922596d756 840 POP {TOS}
Recifarium 0:df922596d756 841 LSLS TOS,#4
Recifarium 0:df922596d756 842 SUBS r0,#1
Recifarium 0:df922596d756 843 BNE Snap0 ; =0?
Recifarium 0:df922596d756 844 POP {TOS}
Recifarium 0:df922596d756 845 RET
Recifarium 0:df922596d756 846
Recifarium 0:df922596d756 847
Recifarium 0:df922596d756 848 ;-(COUNT)---------------------------(caddr -- addr,count)
Recifarium 0:df922596d756 849 LCount LINK LSnap
Recifarium 0:df922596d756 850 DCB 5, "COUNT"
Recifarium 0:df922596d756 851 xCount MOVS WRK, TOS ;
Recifarium 0:df922596d756 852 ADDS TOS, #1 ; Point to 1st char
Recifarium 0:df922596d756 853 PUSH {TOS} ; Put it on the stack
Recifarium 0:df922596d756 854 LDRB TOS, [WRK] ; Get length
Recifarium 0:df922596d756 855 RET
Recifarium 0:df922596d756 856
Recifarium 0:df922596d756 857 ;-(FIND)----------------------------(caddr -- caddr|xt,flag )
Recifarium 0:df922596d756 858 ; flag=0 not found, =1 immediate, =-1 not immediate
Recifarium 0:df922596d756 859 LFind LINK LCount
Recifarium 0:df922596d756 860 DCB 4, "FIND" ; May be has to be recoded in high level !
Recifarium 0:df922596d756 861 xFind LDR WRK2, =VLatest ; Get last entry pointer field
Recifarium 0:df922596d756 862 Find1 TST WRK2, WRK2 ; More words?
Recifarium 0:df922596d756 863 BEQ Find4 ; No we have to leave
Recifarium 0:df922596d756 864 PUSH {WRK2} ; save pointer
Recifarium 0:df922596d756 865 ADDS WRK2, #4 ; WRK2 point to counted string
Recifarium 0:df922596d756 866 LDRB WRK1, [WRK2] ; Get Lenght+flag from dictionnary
Recifarium 0:df922596d756 867 MOVS WRK0, #0x1F ; Flag mask
Recifarium 0:df922596d756 868 ANDS WRK1, WRK0 ; Discard flags
Recifarium 0:df922596d756 869 LDRB WRK0, [TOS] ; Get length of searched string
Recifarium 0:df922596d756 870 CMP WRK0, WRK1 ; Are they equals ?
Recifarium 0:df922596d756 871 BNE Find3 ; no , we have to test next word
Recifarium 0:df922596d756 872
Recifarium 0:df922596d756 873 PUSH {TOS}
Recifarium 0:df922596d756 874 Find1b ADDS TOS, #1 ; point to next char in input string
Recifarium 0:df922596d756 875 ADDS WRK2, #1 ; point to next char in dictionnary word
Recifarium 0:df922596d756 876 LDRB WRK0, [TOS] ; Get char in input string
Recifarium 0:df922596d756 877 LDRB WRK, [WRK2] ; Get char in dictionnary
Recifarium 0:df922596d756 878 CMP WRK0, WRK ; Are they equal
Recifarium 0:df922596d756 879 BNE Find2 ; no try another word
Recifarium 0:df922596d756 880
Recifarium 0:df922596d756 881 SUBS WRK1, #1 ; we start this loop with length in WRK1. It's our char counter
Recifarium 0:df922596d756 882 BNE Find1b ; We still have to compare more caracters
Recifarium 0:df922596d756 883
Recifarium 0:df922596d756 884 POP {TOS} ; Yes we find it
Recifarium 0:df922596d756 885 POP {WRK2} ; link fiel address of the word we have found
Recifarium 0:df922596d756 886 LDRB WRK, [WRK2, #4] ; Get flag+Length byte
Recifarium 0:df922596d756 887 MOVS WRK0, #Immed
Recifarium 0:df922596d756 888 ANDS WRK, WRK0 ; ?Immed
Recifarium 0:df922596d756 889 BNE Find1c ; Immed
Recifarium 0:df922596d756 890
Recifarium 0:df922596d756 891 SUBS TOS, TOS ; Not Immed
Recifarium 0:df922596d756 892 SUBS TOS, #1 ; flag=-1 not immed
Recifarium 0:df922596d756 893 B Find1d
Recifarium 0:df922596d756 894
Recifarium 0:df922596d756 895 Find1c MOVS TOS, #1 ; Flag= 1 immed
Recifarium 0:df922596d756 896 Find1d LDRB WRK, [WRK2, #4]
Recifarium 0:df922596d756 897 MOVS WRK1, #0x1f
Recifarium 0:df922596d756 898 ANDS WRK, WRK1
Recifarium 0:df922596d756 899 ADDS WRK2, #6 ; 4 of Lnk length, 1 name length and 1 to insure halfword align
Recifarium 0:df922596d756 900 ADDS WRK2, WRK
Recifarium 0:df922596d756 901 LSRS WRK2, #1 ; Round to a multiple
Recifarium 0:df922596d756 902 LSLS WRK2, #1 ; of 2
Recifarium 0:df922596d756 903 PUSH {WRK2} ; Xt address
Recifarium 0:df922596d756 904 B Find5 ; Done
Recifarium 0:df922596d756 905
Recifarium 0:df922596d756 906 Find2 POP {TOS} ; Restore the address of counted string we are looking for
Recifarium 0:df922596d756 907 Find3 POP {WRK2} ; Restore pointer of the linked chain
Recifarium 0:df922596d756 908 LDR WRK2,[WRK2] ; Link to next in dictionnary
Recifarium 0:df922596d756 909 B Find1 ; Try next one
Recifarium 0:df922596d756 910
Recifarium 0:df922596d756 911 Find4 PUSH {TOS} ; Leave the c-address
Recifarium 0:df922596d756 912 SUBS TOS, TOS ; Clear TOS (not found)
Recifarium 0:df922596d756 913 Find5 RET
Recifarium 0:df922596d756 914
Recifarium 0:df922596d756 915 LTORG
Recifarium 0:df922596d756 916
Recifarium 0:df922596d756 917 ;-(ACCEPT)--------------------------( addr, len --- len2)
Recifarium 0:df922596d756 918 LAccept LINK LFind
Recifarium 0:df922596d756 919 DCB 6
Recifarium 0:df922596d756 920 DCB "ACCEPT"
Recifarium 0:df922596d756 921 xAccept doCol
Recifarium 0:df922596d756 922 DCB Zero, ToR ; Initial count=0
Recifarium 0:df922596d756 923 DCB Swap ; ( len, addr --- R:0)
Recifarium 0:df922596d756 924 Accept1
Recifarium 0:df922596d756 925 DCB Key ; ( len, addr, char --- R:count)
Recifarium 0:df922596d756 926 DCB Dup, Bl, Lt ; Is it a control character?
Recifarium 0:df922596d756 927 ZBranch Accept3 ; No
Recifarium 0:df922596d756 928
Recifarium 0:df922596d756 929 DCB Dup, Lit8, 8, Eq ; Is it a backspace?
Recifarium 0:df922596d756 930 ZBranch Accept2 ; No
Recifarium 0:df922596d756 931
Recifarium 0:df922596d756 932 DCB FromR, Dup,Zero,Eq ; Begining of line?
Recifarium 0:df922596d756 933 DCB Swap, ToR
Recifarium 0:df922596d756 934 ZBranch Accept1b ; No
Recifarium 0:df922596d756 935
Recifarium 0:df922596d756 936 DCB Lit8, 7, Emit, Drop ; Emit Bell and go to get next char
Recifarium 0:df922596d756 937 Branch Accept1
Recifarium 0:df922596d756 938
Recifarium 0:df922596d756 939 Accept1b
Recifarium 0:df922596d756 940 DCB Dup,Emit, Bl, Emit, Emit
Recifarium 0:df922596d756 941 DCB FromR, Minus1,ToR
Recifarium 0:df922596d756 942 DCB Minus1
Recifarium 0:df922596d756 943 Branch Accept1
Recifarium 0:df922596d756 944 Accept2
Recifarium 0:df922596d756 945 DCB Dup, Lit8, 13, Eq ; Is it a Carriage return
Recifarium 0:df922596d756 946 ZBranch Accept3 ; No
Recifarium 0:df922596d756 947 Branch Accept4
Recifarium 0:df922596d756 948 Accept3
Recifarium 0:df922596d756 949 DCB Over, Over, Swap ; ( len , addr, char, char, addr--- r:count)
Recifarium 0:df922596d756 950 DCB CStore ; ( len, addr, char---R:count)
Recifarium 0:df922596d756 951 DCB Emit ; ( len, addr---R:count)
Recifarium 0:df922596d756 952 DCB Plus1 ; ( len, addr+1---R:count)
Recifarium 0:df922596d756 953 DCB FromR,Plus1, ToR ; ( len, addr+1---R:count+1)
Recifarium 0:df922596d756 954 Branch Accept1 ; go get next char
Recifarium 0:df922596d756 955 Accept4
Recifarium 0:df922596d756 956 DCB TDrop, Drop, FromR ; (count)
Recifarium 0:df922596d756 957 DCB Cr
Recifarium 0:df922596d756 958 DCB Exit
Recifarium 0:df922596d756 959
Recifarium 0:df922596d756 960 ;-(WORD)----------------------------(char --- cstring)???????????????????????
Recifarium 0:df922596d756 961 LWord LINK LAccept
Recifarium 0:df922596d756 962 DCB 4
Recifarium 0:df922596d756 963 DCB "WORD"
Recifarium 0:df922596d756 964 xWord LDR WRK, =(APAD)
Recifarium 0:df922596d756 965 LDR WRK1, =(TIB) ; Get char at address
Recifarium 0:df922596d756 966 MOVS WRK2,WRK1 ; save TIB
Recifarium 0:df922596d756 967 LDR WRK0,=(AtoIn)
Recifarium 0:df922596d756 968 LDR WRK0, [WRK0]
Recifarium 0:df922596d756 969 ADDS WRK1, WRK0 ; Point current char
Recifarium 0:df922596d756 970 LDR WRK0, =(AnTib)
Recifarium 0:df922596d756 971 LDR WRK0, [WRK0]
Recifarium 0:df922596d756 972 ADDS WRK2, WRK0 ; Point end of TIB
Recifarium 0:df922596d756 973 Word1 CMP WRK1, WRK2
Recifarium 0:df922596d756 974 BEQ Word3
Recifarium 0:df922596d756 975
Recifarium 0:df922596d756 976 LDRB WRK0,[WRK1] ; Get char
Recifarium 0:df922596d756 977 ADDS WRK1, #1 ; point to next char
Recifarium 0:df922596d756 978 CMP WRK0, TOS ; is it the delimiter?
Recifarium 0:df922596d756 979 BEQ Word1
Recifarium 0:df922596d756 980
Recifarium 0:df922596d756 981 Word2 ADDS WRK, #1 ; avance 1 byte in PAD
Recifarium 0:df922596d756 982 STRB WRK0, [WRK]
Recifarium 0:df922596d756 983 CMP WRK1, WRK2
Recifarium 0:df922596d756 984 BEQ Word3
Recifarium 0:df922596d756 985
Recifarium 0:df922596d756 986 LDRB WRK0,[WRK1] ; Get char
Recifarium 0:df922596d756 987 ADDS WRK1, #1 ; point to next char
Recifarium 0:df922596d756 988 CMP WRK0, TOS ; is it the delimiter?
Recifarium 0:df922596d756 989 BNE Word2 ;
Recifarium 0:df922596d756 990
Recifarium 0:df922596d756 991 Word3 MOVS WRK0, #0x32 ; Put a blank
Recifarium 0:df922596d756 992 STRB WRK0, [WRK, #1] ; at the end of string in pad
Recifarium 0:df922596d756 993 LDR TOS, =(APAD)
Recifarium 0:df922596d756 994 SUBS WRK, WRK, TOS ; Compute length
Recifarium 0:df922596d756 995 STRB WRK, [TOS] ; Put length at the beginning
Recifarium 0:df922596d756 996 ; of PAD
Recifarium 0:df922596d756 997 LDR WRK, =(TIB)
Recifarium 0:df922596d756 998 SUBS WRK1, WRK
Recifarium 0:df922596d756 999 LDR WRK, =(AtoIn)
Recifarium 0:df922596d756 1000 STR WRK1, [WRK]
Recifarium 0:df922596d756 1001 RET
Recifarium 0:df922596d756 1002 LTORG
Recifarium 0:df922596d756 1003
Recifarium 0:df922596d756 1004 ;-(WORDS)----------------------------()
Recifarium 0:df922596d756 1005 LWords LINK LWord
Recifarium 0:df922596d756 1006 DCB 5
Recifarium 0:df922596d756 1007 DCB "WORDS"
Recifarium 0:df922596d756 1008 xWords doCol
Recifarium 0:df922596d756 1009 DCB Lit32
Recifarium 0:df922596d756 1010 DCD VLatest ; ??????????????????????????????????????????????????????????????????
Recifarium 0:df922596d756 1011 Words1 DCB Dup, ToR
Recifarium 0:df922596d756 1012 DCB Lit8, 4, Plus
Recifarium 0:df922596d756 1013 DCB Count, Lit8, 0x1f, And
Recifarium 0:df922596d756 1014 DCB Type, Bl, Emit
Recifarium 0:df922596d756 1015 DCB FromR, At, Dup
Recifarium 0:df922596d756 1016 ZBranch Words2
Recifarium 0:df922596d756 1017 Branch Words1
Recifarium 0:df922596d756 1018 Words2 DCB Drop, Cr
Recifarium 0:df922596d756 1019 DCB Exit
Recifarium 0:df922596d756 1020
Recifarium 0:df922596d756 1021 ;-(TYPE)----------------------------(addr,number --)
Recifarium 0:df922596d756 1022 LType LINK LWords
Recifarium 0:df922596d756 1023 DCB 4
Recifarium 0:df922596d756 1024 DCB "TYPE"
Recifarium 0:df922596d756 1025 xType doCol
Recifarium 0:df922596d756 1026 Type1 DCB Dup ; (addr,number,number)
Recifarium 0:df922596d756 1027 ZBranch Type2
Recifarium 0:df922596d756 1028
Recifarium 0:df922596d756 1029 DCB Swap, Dup, CAt ; (number, addr, char)
Recifarium 0:df922596d756 1030 DCB Emit
Recifarium 0:df922596d756 1031 DCB Plus1, Swap, Minus1 ; (addr+1, number-1)
Recifarium 0:df922596d756 1032 Branch Type1
Recifarium 0:df922596d756 1033
Recifarium 0:df922596d756 1034 Type2 DCB Drop, Drop ; ()
Recifarium 0:df922596d756 1035 DCB Exit
Recifarium 0:df922596d756 1036
Recifarium 0:df922596d756 1037 ;-(UM+)-----------------------------(number,number -- sum,carry)
Recifarium 0:df922596d756 1038 LUMPlus LINK LType
Recifarium 0:df922596d756 1039 DCB 3, "UM+"
Recifarium 0:df922596d756 1040 xUMPlus POP {WRK}
Recifarium 0:df922596d756 1041 SUBS WRK2, WRK2
Recifarium 0:df922596d756 1042 ADDS WRK,WRK,TOS
Recifarium 0:df922596d756 1043 BCC UMPlus1
Recifarium 0:df922596d756 1044 ADDS WRK2, #1
Recifarium 0:df922596d756 1045 UMPlus1 MOVS TOS, WRK2
Recifarium 0:df922596d756 1046 PUSH {WRK}
Recifarium 0:df922596d756 1047 RET
Recifarium 0:df922596d756 1048
Recifarium 0:df922596d756 1049 ;-(D+)------------------------------(double,double -- double)
Recifarium 0:df922596d756 1050 LDPlus LINK LUMPlus
Recifarium 0:df922596d756 1051 DCB 2, "D+"
Recifarium 0:df922596d756 1052 xDPlus POP {WRK} ; low1
Recifarium 0:df922596d756 1053 POP {WRK1} ; high2
Recifarium 0:df922596d756 1054 POP {WRK2} ; low2
Recifarium 0:df922596d756 1055 ADDS WRK, WRK2 ; low1 + low2
Recifarium 0:df922596d756 1056 ADCS TOS, WRK1 ; high1+ high2 +carry
Recifarium 0:df922596d756 1057 PUSH {WRK}
Recifarium 0:df922596d756 1058 RET
Recifarium 0:df922596d756 1059
Recifarium 0:df922596d756 1060 ;-(D-)------------------------------(double,double -- double)
Recifarium 0:df922596d756 1061 LDMinus LINK LDPlus
Recifarium 0:df922596d756 1062 DCB 2, "D-" ; Voir si a améliorer
Recifarium 0:df922596d756 1063 xDMinus doCol
Recifarium 0:df922596d756 1064 DCB DNeg, DPlus
Recifarium 0:df922596d756 1065 DCB Exit
Recifarium 0:df922596d756 1066
Recifarium 0:df922596d756 1067 ;-(DNEGATE)-------------------------(double -- -double)
Recifarium 0:df922596d756 1068 LDNeg LINK LDMinus
Recifarium 0:df922596d756 1069 DCB 7, "DNEGATE" ; Voir si a améliorer
Recifarium 0:df922596d756 1070 xDNeg doCol
Recifarium 0:df922596d756 1071 DCB Not, ToR, Not
Recifarium 0:df922596d756 1072 DCB Lit8, 1, UMPlus
Recifarium 0:df922596d756 1073 DCB FromR, Plus
Recifarium 0:df922596d756 1074 DCB Exit
Recifarium 0:df922596d756 1075
Recifarium 0:df922596d756 1076 ;-(S>D)-----------------------------(number -- double)
Recifarium 0:df922596d756 1077 LStoD LINK LDNeg
Recifarium 0:df922596d756 1078 DCB 3
Recifarium 0:df922596d756 1079 DCB "S>D"
Recifarium 0:df922596d756 1080 xStoD PUSH {TOS}
Recifarium 0:df922596d756 1081 ASRS TOS, #32
Recifarium 0:df922596d756 1082 RET
Recifarium 0:df922596d756 1083
Recifarium 0:df922596d756 1084 ;-(U<)------------------------------(u1, u2 -- flag)
Recifarium 0:df922596d756 1085 LULess LINK LStoD
Recifarium 0:df922596d756 1086 DCB 2
Recifarium 0:df922596d756 1087 DCB "U<"
Recifarium 0:df922596d756 1088 xULess doCol ; Voir si a améliorer
Recifarium 0:df922596d756 1089 DCB TDup, Xor, IsNeg
Recifarium 0:df922596d756 1090 ZBranch ULess1
Recifarium 0:df922596d756 1091
Recifarium 0:df922596d756 1092 DCB Swap, Drop, IsNeg
Recifarium 0:df922596d756 1093 Branch ULess2
Recifarium 0:df922596d756 1094
Recifarium 0:df922596d756 1095 ULess1 DCB Minus, IsNeg
Recifarium 0:df922596d756 1096 ULess2 DCB Exit
Recifarium 0:df922596d756 1097
Recifarium 0:df922596d756 1098 ;-(U/MOD)---------------------------(ud, u -- ur , uq)
Recifarium 0:df922596d756 1099 LUmod LINK LULess
Recifarium 0:df922596d756 1100 DCB 6
Recifarium 0:df922596d756 1101 DCB "UM/MOD"
Recifarium 0:df922596d756 1102 ; From Pygmy Forth
Recifarium 0:df922596d756 1103 ; divide 64 bit r1:r2 by 32 bit TOS
Recifarium 0:df922596d756 1104 xUMSMod POP {WRK1} ; Hi reg from ud
Recifarium 0:df922596d756 1105 POP {WRK2} ; low reg from ud
Recifarium 0:df922596d756 1106 MOVS WRK, #32 ; Loop Index
Recifarium 0:df922596d756 1107 USMod1
Recifarium 0:df922596d756 1108 ADDS WRK2, WRK2
Recifarium 0:df922596d756 1109 ADCS WRK1, WRK1
Recifarium 0:df922596d756 1110 CMP WRK1, TOS
Recifarium 0:df922596d756 1111 BCC USMod2
Recifarium 0:df922596d756 1112 ADDS WRK2, #1
Recifarium 0:df922596d756 1113 SUBS WRK1, TOS
Recifarium 0:df922596d756 1114 USMod2
Recifarium 0:df922596d756 1115 SUBS WRK, #1
Recifarium 0:df922596d756 1116 BNE USMod1
Recifarium 0:df922596d756 1117 PUSH {WRK1}
Recifarium 0:df922596d756 1118 MOV TOS, WRK2
Recifarium 0:df922596d756 1119 RET
Recifarium 0:df922596d756 1120
Recifarium 0:df922596d756 1121 ;-(LF)------------------------------; : LF 10 EMIT ;
Recifarium 0:df922596d756 1122 LLinF LINK LUmod
Recifarium 0:df922596d756 1123 DCB 2, "LF"
Recifarium 0:df922596d756 1124 xLf doCol
Recifarium 0:df922596d756 1125 DCB Ten, Emit
Recifarium 0:df922596d756 1126 DCB Exit
Recifarium 0:df922596d756 1127
Recifarium 0:df922596d756 1128 ;-(CR)------------------------------; : CR 13 EMIT LF ;
Recifarium 0:df922596d756 1129 LCr LINK LLinF
Recifarium 0:df922596d756 1130 DCB 2, "CR"
Recifarium 0:df922596d756 1131 xCr doCol
Recifarium 0:df922596d756 1132 DCB Lit8, 0x0d, Emit, Lf
Recifarium 0:df922596d756 1133 DCB Exit
Recifarium 0:df922596d756 1134
Recifarium 0:df922596d756 1135 ;-(BL)------------------------------
Recifarium 0:df922596d756 1136 LBl LINK LCr
Recifarium 0:df922596d756 1137 DCB 2+Inline, "BL"
Recifarium 0:df922596d756 1138 xBl PUSH {TOS}
Recifarium 0:df922596d756 1139 MOVS TOS, #' '
Recifarium 0:df922596d756 1140 RET
Recifarium 0:df922596d756 1141
Recifarium 0:df922596d756 1142 ;-(SPACE)------------------------------
Recifarium 0:df922596d756 1143 LSpace LINK LBl
Recifarium 0:df922596d756 1144 DCB 5,"SPACE"
Recifarium 0:df922596d756 1145 xSpace doCol
Recifarium 0:df922596d756 1146 DCB Lit8, ' ', Emit
Recifarium 0:df922596d756 1147 DCB Exit
Recifarium 0:df922596d756 1148
Recifarium 0:df922596d756 1149 ;-(SPACES)--------------------------;(n --)
Recifarium 0:df922596d756 1150 LSpaces LINK LSpace
Recifarium 0:df922596d756 1151 DCB 6,"SPACES"
Recifarium 0:df922596d756 1152 xSpaces doCol
Recifarium 0:df922596d756 1153 Spaces1 DCB DupNZ
Recifarium 0:df922596d756 1154 ZBranch Spaces2
Recifarium 0:df922596d756 1155 DCB Space, Minus1
Recifarium 0:df922596d756 1156 Branch Spaces1
Recifarium 0:df922596d756 1157 Spaces2 DCB Exit
Recifarium 0:df922596d756 1158
Recifarium 0:df922596d756 1159 ;-(DIGIT)---------------------------;(n -- char)
Recifarium 0:df922596d756 1160 LDigit LINK LSpaces
Recifarium 0:df922596d756 1161 DCB 5, "DIGIT"
Recifarium 0:df922596d756 1162 xDigit doCol ; : Digit 9 Over < 7 And + 48 + ;
Recifarium 0:df922596d756 1163 DCB Lit8, 9, Over, Lt
Recifarium 0:df922596d756 1164 DCB Lit8, 7, And, Plus
Recifarium 0:df922596d756 1165 DCB Lit8, '0', Plus
Recifarium 0:df922596d756 1166 DCB Exit
Recifarium 0:df922596d756 1167
Recifarium 0:df922596d756 1168 ;-(FILL)----------------------------( addr,u,char -- )
Recifarium 0:df922596d756 1169 LFill LINK LDigit
Recifarium 0:df922596d756 1170 DCB 4
Recifarium 0:df922596d756 1171 DCB "FILL"
Recifarium 0:df922596d756 1172 xFill POP {WRK} ; Get u
Recifarium 0:df922596d756 1173 POP {WRK2} ; Get addr
Recifarium 0:df922596d756 1174 Fill1 CMP WRK, #0
Recifarium 0:df922596d756 1175 BEQ Fill2 ; Finish?
Recifarium 0:df922596d756 1176 STRB TOS, [WRK2] ; Put char
Recifarium 0:df922596d756 1177 ADDS WRK2, #1 ; addr= addr+1
Recifarium 0:df922596d756 1178 SUBS WRK, #1 ; u = u-1
Recifarium 0:df922596d756 1179 B Fill1 ; One more time
Recifarium 0:df922596d756 1180 Fill2 POP {TOS} ; Update TOS
Recifarium 0:df922596d756 1181 RET
Recifarium 0:df922596d756 1182
Recifarium 0:df922596d756 1183 ;-(CODE:)---------------------------?Future??????????????
Recifarium 0:df922596d756 1184 LBCode LINK LFill
Recifarium 0:df922596d756 1185 DCB 5+Cmponly ; CODE: CANNOT be Inline !
Recifarium 0:df922596d756 1186 DCB "CODE:"
Recifarium 0:df922596d756 1187 xBCode ADDS IPTR, #1 ; to align at
Recifarium 0:df922596d756 1188 LSRS IPTR, IPTR, #1 ; the next halfword
Recifarium 0:df922596d756 1189 LSLS IPTR, IPTR, #1 ; boundary
Recifarium 0:df922596d756 1190 ADDS IPTR, #1 ; Because of Thumb boundary
Recifarium 0:df922596d756 1191 MOV PC, IPTR ; Jump to code itself
Recifarium 0:df922596d756 1192 RET
Recifarium 0:df922596d756 1193
Recifarium 0:df922596d756 1194 ;-(;CODE)---------------------------?Future??????????????
Recifarium 0:df922596d756 1195 LECode LINK LBCode
Recifarium 0:df922596d756 1196 DCB 5+Inline+Cmponly ; It MUST be inline ????
Recifarium 0:df922596d756 1197 DCB ";CODE"
Recifarium 0:df922596d756 1198 xECode BL Here ; Where are we ? Collect address in lr
Recifarium 0:df922596d756 1199 Here MOV IPTR, lr ;
Recifarium 0:df922596d756 1200 ADDS IPTR, #5 ; To point after the RET
Recifarium 0:df922596d756 1201 RET
Recifarium 0:df922596d756 1202
Recifarium 0:df922596d756 1203 ;-(TOUPPER)-------------------------(char--upchar)
Recifarium 0:df922596d756 1204 LToupp LINK LECode
Recifarium 0:df922596d756 1205 DCB 7
Recifarium 0:df922596d756 1206 DCB "TOUPPER"
Recifarium 0:df922596d756 1207 xToupp CMP TOS, #'a'-1
Recifarium 0:df922596d756 1208 BLE Toupp1
Recifarium 0:df922596d756 1209 CMP TOS, #'z'+1
Recifarium 0:df922596d756 1210 BGE Toupp1
Recifarium 0:df922596d756 1211 SUBS TOS, #'a'-'A'
Recifarium 0:df922596d756 1212 Toupp1 RET
Recifarium 0:df922596d756 1213
Recifarium 0:df922596d756 1214 ;-(NOOP)----------------------------()
Recifarium 0:df922596d756 1215 LNoop LINK LToupp
Recifarium 0:df922596d756 1216 DCB 4
Recifarium 0:df922596d756 1217 xNoop DCB "NOOP"
Recifarium 0:df922596d756 1218 RET
Recifarium 0:df922596d756 1219 ;-(UPPER)---------------------------(addr, count --)
Recifarium 0:df922596d756 1220 LUpper LINK LNoop
Recifarium 0:df922596d756 1221 DCB 5
Recifarium 0:df922596d756 1222 DCB "UPPER"
Recifarium 0:df922596d756 1223 POP {WRK} ; Get addr
Recifarium 0:df922596d756 1224 xUpper CMP TOS, #0 ; count=0?
Recifarium 0:df922596d756 1225 BEQ Upperx ; yes
Recifarium 0:df922596d756 1226 LDRB WRK2, [WRK]
Recifarium 0:df922596d756 1227 CMP WRK2, #'a'-1
Recifarium 0:df922596d756 1228 BLE Upper3
Recifarium 0:df922596d756 1229 CMP WRK2, #'z'+1
Recifarium 0:df922596d756 1230 BGE Upper3
Recifarium 0:df922596d756 1231 SUBS WRK2, #'a'-'A'
Recifarium 0:df922596d756 1232 STRB WRK2, [WRK]
Recifarium 0:df922596d756 1233 Upper3 ADDS WRK, #1
Recifarium 0:df922596d756 1234 SUBS TOS, #1
Recifarium 0:df922596d756 1235 B xUpper
Recifarium 0:df922596d756 1236 Upperx POP {TOS}
Recifarium 0:df922596d756 1237 RET
Recifarium 0:df922596d756 1238
Recifarium 0:df922596d756 1239 ;-(FALSE)---------------------------(--Fflag)
Recifarium 0:df922596d756 1240 LFalse LINK LUpper
Recifarium 0:df922596d756 1241 DCB 5, "FALSE"
Recifarium 0:df922596d756 1242 xFalse PUSH {TOS}
Recifarium 0:df922596d756 1243 SUBS TOS, TOS ; Put 0 in TOS
Recifarium 0:df922596d756 1244 RET
Recifarium 0:df922596d756 1245
Recifarium 0:df922596d756 1246 ;-(TRUE)----------------------------(--Tflag)
Recifarium 0:df922596d756 1247 LTrue LINK LFalse
Recifarium 0:df922596d756 1248 DCB 4, "TRUE"
Recifarium 0:df922596d756 1249 xTrue PUSH {TOS}
Recifarium 0:df922596d756 1250 SUBS TOS, TOS
Recifarium 0:df922596d756 1251 SUBS TOS, #1
Recifarium 0:df922596d756 1252 RET
Recifarium 0:df922596d756 1253
Recifarium 0:df922596d756 1254 ;-(DECIMAL)-------------------------()
Recifarium 0:df922596d756 1255 LDecim LINK LTrue
Recifarium 0:df922596d756 1256 DCB 7, "DECIMAL"
Recifarium 0:df922596d756 1257 xDec doCol
Recifarium 0:df922596d756 1258 DCB Lit8, 10
Recifarium 0:df922596d756 1259 DCB Base, Store ; Set Base to 10
Recifarium 0:df922596d756 1260 DCB Exit
Recifarium 0:df922596d756 1261
Recifarium 0:df922596d756 1262 ;-(BIN)------------------------------()
Recifarium 0:df922596d756 1263 LBin LINK LDecim
Recifarium 0:df922596d756 1264 DCB 3, "BIN"
Recifarium 0:df922596d756 1265 xBin doCol
Recifarium 0:df922596d756 1266 DCB Lit8, 2
Recifarium 0:df922596d756 1267 DCB Base, Store ; Set Base to 2
Recifarium 0:df922596d756 1268 DCB Exit
Recifarium 0:df922596d756 1269
Recifarium 0:df922596d756 1270 ;-(HEX)------------------------------()
Recifarium 0:df922596d756 1271 LHex LINK LBin
Recifarium 0:df922596d756 1272 DCB 3, "HEX"
Recifarium 0:df922596d756 1273 xHex doCol
Recifarium 0:df922596d756 1274 DCB Lit8, 16
Recifarium 0:df922596d756 1275 DCB Base, Store ; Set Base to 16
Recifarium 0:df922596d756 1276 DCB Exit
Recifarium 0:df922596d756 1277
Recifarium 0:df922596d756 1278 ;-(HLD)-----------------------------()
Recifarium 0:df922596d756 1279 LHld LINK LHex
Recifarium 0:df922596d756 1280 DCB 3, "HLD"
Recifarium 0:df922596d756 1281 xHld PUSH {TOS}
Recifarium 0:df922596d756 1282 LDR TOS, =AHLD
Recifarium 0:df922596d756 1283 RET
Recifarium 0:df922596d756 1284 ;-(<#)------------------------------()
Recifarium 0:df922596d756 1285 LStrPic LINK LHld
Recifarium 0:df922596d756 1286 DCB 2, "<#"
Recifarium 0:df922596d756 1287 xStrPic doCol
Recifarium 0:df922596d756 1288 DCB Pad , Lit8, 127, Plus
Recifarium 0:df922596d756 1289 DCB Hld, Store
Recifarium 0:df922596d756 1290 DCB Exit
Recifarium 0:df922596d756 1291
Recifarium 0:df922596d756 1292 ;-(HOLD)----------------------------()
Recifarium 0:df922596d756 1293 LHold LINK LStrPic
Recifarium 0:df922596d756 1294 DCB 4, "HOLD"
Recifarium 0:df922596d756 1295 xHold doCol
Recifarium 0:df922596d756 1296 DCB Hld, At, Minus1
Recifarium 0:df922596d756 1297 DCB Dup, Hld, Store, CStore
Recifarium 0:df922596d756 1298 DCB Exit
Recifarium 0:df922596d756 1299
Recifarium 0:df922596d756 1300 ;-(#)------------------------------()
Recifarium 0:df922596d756 1301 LNumb LINK LHold
Recifarium 0:df922596d756 1302 DCB 1, "#"
Recifarium 0:df922596d756 1303 xNumb doCol
Recifarium 0:df922596d756 1304 DCB Base, At
Recifarium 0:df922596d756 1305 DCB Extract
Recifarium 0:df922596d756 1306 ; DCB DotS
Recifarium 0:df922596d756 1307 DCB Hold
Recifarium 0:df922596d756 1308 DCB Exit
Recifarium 0:df922596d756 1309
Recifarium 0:df922596d756 1310 ;-(#S)------------------------------()
Recifarium 0:df922596d756 1311 LNumStr LINK LNumb
Recifarium 0:df922596d756 1312 DCB 2, "#S"
Recifarium 0:df922596d756 1313 xNumStr doCol
Recifarium 0:df922596d756 1314 NumStr1 DCB Numb, Dup
Recifarium 0:df922596d756 1315 DCB IsNull
Recifarium 0:df922596d756 1316 ZBranch NumStr1
Recifarium 0:df922596d756 1317 DCB Exit
Recifarium 0:df922596d756 1318
Recifarium 0:df922596d756 1319 ;-(SIGN)----------------------------()
Recifarium 0:df922596d756 1320 LSign LINK LNumStr
Recifarium 0:df922596d756 1321 DCB 4, "SIGN"
Recifarium 0:df922596d756 1322 xSign doCol
Recifarium 0:df922596d756 1323 DCB IsNeg
Recifarium 0:df922596d756 1324 ZBranch Sign1
Recifarium 0:df922596d756 1325 DCB Lit8, '-', Hold
Recifarium 0:df922596d756 1326 Sign1 DCB Exit
Recifarium 0:df922596d756 1327
Recifarium 0:df922596d756 1328 ;-(#>)------------------------------()
Recifarium 0:df922596d756 1329 LEndPic LINK LSign
Recifarium 0:df922596d756 1330 DCB 2, "#>"
Recifarium 0:df922596d756 1331 xEndPic doCol
Recifarium 0:df922596d756 1332 DCB Drop, Hld, At
Recifarium 0:df922596d756 1333 dcb Pad, Lit8, 127, Plus
Recifarium 0:df922596d756 1334 DCB Over, Minus
Recifarium 0:df922596d756 1335 DCB Exit
Recifarium 0:df922596d756 1336
Recifarium 0:df922596d756 1337 ;-(STR)-----------------------------()
Recifarium 0:df922596d756 1338 LStr LINK LEndPic
Recifarium 0:df922596d756 1339 DCB 3, "STR"
Recifarium 0:df922596d756 1340 xStr doCol
Recifarium 0:df922596d756 1341 DCB Dup, ToR, Abs, StrPic
Recifarium 0:df922596d756 1342 DCB NumStr, FromR, Sign, EndPic
Recifarium 0:df922596d756 1343 DCB Exit
Recifarium 0:df922596d756 1344
Recifarium 0:df922596d756 1345 ;-(DotR)----------------------------()
Recifarium 0:df922596d756 1346 LDotR LINK LStr
Recifarium 0:df922596d756 1347 DCB 2, ".R"
Recifarium 0:df922596d756 1348 xDotR doCol
Recifarium 0:df922596d756 1349 DCB ToR, Str, FromR
Recifarium 0:df922596d756 1350 DCB Over, Minus, Spaces
Recifarium 0:df922596d756 1351 DCB Type
Recifarium 0:df922596d756 1352 DCB Exit
Recifarium 0:df922596d756 1353
Recifarium 0:df922596d756 1354 ;-(UdR)----------------------------()
Recifarium 0:df922596d756 1355 LUdR LINK LDotR
Recifarium 0:df922596d756 1356 DCB 3, "U.R"
Recifarium 0:df922596d756 1357 xUDotR doCol
Recifarium 0:df922596d756 1358 DCB ToR, StrPic, NumStr
Recifarium 0:df922596d756 1359 DCB EndPic, FromR, Over
Recifarium 0:df922596d756 1360 DCB Minus, Spaces, Type
Recifarium 0:df922596d756 1361 DCB Exit
Recifarium 0:df922596d756 1362
Recifarium 0:df922596d756 1363 ;-(U.)------------------------------()
Recifarium 0:df922596d756 1364 LUDot LINK LUdR
Recifarium 0:df922596d756 1365 DCB 2, "U."
Recifarium 0:df922596d756 1366 xUDot doCol
Recifarium 0:df922596d756 1367 DCB StrPic, NumStr, EndPic
Recifarium 0:df922596d756 1368 DCB Space, Type
Recifarium 0:df922596d756 1369 DCB Exit
Recifarium 0:df922596d756 1370
Recifarium 0:df922596d756 1371 ;-(.)------------------------------()
Recifarium 0:df922596d756 1372 LDot LINK LUDot
Recifarium 0:df922596d756 1373 DCB 1, "."
Recifarium 0:df922596d756 1374 xDot doCol
Recifarium 0:df922596d756 1375 DCB Base, At, Lit8, 10
Recifarium 0:df922596d756 1376 DCB Xor
Recifarium 0:df922596d756 1377 ZBranch Dot1
Recifarium 0:df922596d756 1378 DCB UDot
Recifarium 0:df922596d756 1379 Branch Dot2
Recifarium 0:df922596d756 1380 Dot1 DCB Str, Space, Type
Recifarium 0:df922596d756 1381 Dot2 DCB Exit
Recifarium 0:df922596d756 1382
Recifarium 0:df922596d756 1383
Recifarium 0:df922596d756 1384 ;-(.S)------------------------------()
Recifarium 0:df922596d756 1385 LDotS LINK LDot
Recifarium 0:df922596d756 1386 DCB 2, ".S"
Recifarium 0:df922596d756 1387 xDotS doCol
Recifarium 0:df922596d756 1388 DCB Depth ; (Depth)
Recifarium 0:df922596d756 1389 DCB Sp0
Recifarium 0:df922596d756 1390 DCB Lit8, 8 , Minus ; (depth, Sp)
Recifarium 0:df922596d756 1391 DCB Swap ; (Sp, depth)
Recifarium 0:df922596d756 1392 DotS1 DCB Dup ; (Sp, depth, depth)
Recifarium 0:df922596d756 1393 ZBranch DotS3 ; (sp, depth)
Recifarium 0:df922596d756 1394
Recifarium 0:df922596d756 1395 DCB Dup ; (sp, depth, depth)
Recifarium 0:df922596d756 1396 DCB Lit8, 1, Eq ; (sp, depth, flag)
Recifarium 0:df922596d756 1397 ZBranch DotS2 ; (sp, depth)
Recifarium 0:df922596d756 1398 ; Here we collect the last element in stack which is in TOS
Recifarium 0:df922596d756 1399 ; we need to collect it with Rot. Can be shortened...
Recifarium 0:df922596d756 1400 DCB Rot, Snap, Cr ; (sp, depth, TOS) <<<<<<<<<<<<à remplacer par .
Recifarium 0:df922596d756 1401 DCB MRot ; (TOS, sp, depth) Put TOS at the right place
Recifarium 0:df922596d756 1402 Branch DotS3 ; and leave
Recifarium 0:df922596d756 1403
Recifarium 0:df922596d756 1404 DotS2 DCB Swap, Dup, At ; (Depth,Sp,@Sp)
Recifarium 0:df922596d756 1405 DCB Snap, Drop, Cr ; (Depth,Sp) <<<<<<<<<<<<à remplacer par .
Recifarium 0:df922596d756 1406 DCB Lit8, 4, Minus ; (Depth,Sp)
Recifarium 0:df922596d756 1407 DCB Swap, One, Minus ; (Sp,Depth)
Recifarium 0:df922596d756 1408 Branch DotS1
Recifarium 0:df922596d756 1409
Recifarium 0:df922596d756 1410 DotS3 DCB Drop, Drop ; ()
Recifarium 0:df922596d756 1411 DCB Exit
Recifarium 0:df922596d756 1412
Recifarium 0:df922596d756 1413 ;(C,)-------------------------------(char--)
Recifarium 0:df922596d756 1414 LCComa LINK LDotS
Recifarium 0:df922596d756 1415 DCB 2, "C,"
Recifarium 0:df922596d756 1416 xCComa doCol
Recifarium 0:df922596d756 1417
Recifarium 0:df922596d756 1418 DCB Exit
Recifarium 0:df922596d756 1419
Recifarium 0:df922596d756 1420 ;(H,)-------------------------------(halfword--)
Recifarium 0:df922596d756 1421 LHComa LINK LCComa
Recifarium 0:df922596d756 1422 DCB 2, "H,"
Recifarium 0:df922596d756 1423 xHComa doCol
Recifarium 0:df922596d756 1424 DCB Lit32
Recifarium 0:df922596d756 1425 DCD Transit
Recifarium 0:df922596d756 1426 DCB Dup, MRot
Recifarium 0:df922596d756 1427 ; DCB Hstore
Recifarium 0:df922596d756 1428 ; DCB Dup, At, CComa
Recifarium 0:df922596d756 1429 ; DCB PlusOne, At, CComa
Recifarium 0:df922596d756 1430 DCB Exit
Recifarium 0:df922596d756 1431
Recifarium 0:df922596d756 1432 ;(,)--------------------------------(word--)
Recifarium 0:df922596d756 1433 LComa LINK LHComa
Recifarium 0:df922596d756 1434 DCB 1, ","
Recifarium 0:df922596d756 1435 xComa doCol
Recifarium 0:df922596d756 1436 DCB Lit32
Recifarium 0:df922596d756 1437 DCD Transit
Recifarium 0:df922596d756 1438 DCB Dup, MRot ;(TRansaddr, word, Transaddr)
Recifarium 0:df922596d756 1439 DCB Store ;(Transaddr)
Recifarium 0:df922596d756 1440 ; DCB Dup, At, HComa
Recifarium 0:df922596d756 1441 ; DCB TwoPlus, At, HComa
Recifarium 0:df922596d756 1442 DCB Exit
Recifarium 0:df922596d756 1443
Recifarium 0:df922596d756 1444 ;(>IN)------------------------------(--address)
Recifarium 0:df922596d756 1445 LtoIn LINK LComa
Recifarium 0:df922596d756 1446 DCB 3, ">IN"
Recifarium 0:df922596d756 1447 xtoIn PUSH {TOS}
Recifarium 0:df922596d756 1448 LDR TOS, =AtoIn
Recifarium 0:df922596d756 1449 RET
Recifarium 0:df922596d756 1450
Recifarium 0:df922596d756 1451 ;(PAD)-----------------------------(--address)
Recifarium 0:df922596d756 1452 LPad LINK LtoIn
Recifarium 0:df922596d756 1453 DCB 3, "PAD"
Recifarium 0:df922596d756 1454 xPad PUSH {TOS}
Recifarium 0:df922596d756 1455 LDR TOS, =APAD
Recifarium 0:df922596d756 1456 RET
Recifarium 0:df922596d756 1457 ;(#TIB)-----------------------------(--address)
Recifarium 0:df922596d756 1458 LnTib LINK LPad
Recifarium 0:df922596d756 1459 DCB 4, "#TIB"
Recifarium 0:df922596d756 1460 xnTib PUSH {TOS}
Recifarium 0:df922596d756 1461 LDR TOS, =AnTib
Recifarium 0:df922596d756 1462 RET
Recifarium 0:df922596d756 1463 LTORG
Recifarium 0:df922596d756 1464 ;(RS0)------------------------------ Headerless
Recifarium 0:df922596d756 1465 xRS0 LDR RPTR, =Begin
Recifarium 0:df922596d756 1466 RET
Recifarium 0:df922596d756 1467
Recifarium 0:df922596d756 1468 ;(QUIT)-----------------------------(word--)
Recifarium 0:df922596d756 1469 LQuit LINK LnTib
Recifarium 0:df922596d756 1470 DCB 4, "QUIT"
Recifarium 0:df922596d756 1471 xQuit doCol
Recifarium 0:df922596d756 1472 DCB Lit32
Recifarium 0:df922596d756 1473 DCD Begin ; Set RPTR Return Stack Pointer to
Recifarium 0:df922596d756 1474 DCB RS0 ; beginning of RAM
Recifarium 0:df922596d756 1475 DCB False, State, Store ; Set Interpret Mode
Recifarium 0:df922596d756 1476 ; ...........
Recifarium 0:df922596d756 1477 DCB Exit
Recifarium 0:df922596d756 1478
Recifarium 0:df922596d756 1479 ;(ABORT)----------------------------(word--)
Recifarium 0:df922596d756 1480 LAbort LINK LQuit
Recifarium 0:df922596d756 1481 DCB 5, "ABORT"
Recifarium 0:df922596d756 1482 ;...................
Recifarium 0:df922596d756 1483 DCB Exit
Recifarium 0:df922596d756 1484
Recifarium 0:df922596d756 1485 ;(INTERPRET)------------------------(word--) Still to be clean
Recifarium 0:df922596d756 1486 LInterp LINK LAbort
Recifarium 0:df922596d756 1487 DCB 9, "INTERPRET"
Recifarium 0:df922596d756 1488 xInter doCol
Recifarium 0:df922596d756 1489 Interp DCB nTib, At ; Get # of char entered
Recifarium 0:df922596d756 1490 DCB toIn, At ; get # of char processed
Recifarium 0:df922596d756 1491 DCB Eq
Recifarium 0:df922596d756 1492 ZBranch Intrp5 ; Still some char to process
Recifarium 0:df922596d756 1493 Intrp2
Recifarium 0:df922596d756 1494 DCB Lit8, '>', Emit ; Prompt
Recifarium 0:df922596d756 1495 DCB Lit32
Recifarium 0:df922596d756 1496 DCD TIB
Recifarium 0:df922596d756 1497 DCB Lit8, 50, Accept ; Refill with a new line
Recifarium 0:df922596d756 1498 ; DCB DotS ; Debug <<<<<<<<<<<<<<<
Recifarium 0:df922596d756 1499 DCB Dup, Zero, Eq ; Is it a null line?
Recifarium 0:df922596d756 1500 ZBranch Intrp4 ; No
Recifarium 0:df922596d756 1501 Intrp3
Recifarium 0:df922596d756 1502 DCB Drop ; Discard length
Recifarium 0:df922596d756 1503 Branch Intrp2 ; and retry
Recifarium 0:df922596d756 1504 Intrp4
Recifarium 0:df922596d756 1505 DCB Lit32
Recifarium 0:df922596d756 1506 DCD AnTib
Recifarium 0:df922596d756 1507 DCB Store ; Update #TIB
Recifarium 0:df922596d756 1508 DCB Zero, toIn, Store ; Point to the beginning
Recifarium 0:df922596d756 1509 Intrp5
Recifarium 0:df922596d756 1510 DCB Bl ; space is the separator
Recifarium 0:df922596d756 1511 DCB Word ; Try to find a WORD
Recifarium 0:df922596d756 1512 DCB Dup, CAt ; Get length
Recifarium 0:df922596d756 1513 DCB Zero, Eq, Not ; Not a blank line?
Recifarium 0:df922596d756 1514 ZBranch Intrp3 ; no get new one
Recifarium 0:df922596d756 1515 ; we have a string !
Recifarium 0:df922596d756 1516 DCB Find ; try to find it in dictionary
Recifarium 0:df922596d756 1517 DCB Dup ; Duplicate flag from Find 0 mean not found
Recifarium 0:df922596d756 1518 ZBranch Intrp8 ; Not a Word
Recifarium 0:df922596d756 1519
Recifarium 0:df922596d756 1520 DCB State, At ; c'est de <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Recifarium 0:df922596d756 1521 DCB Eq ; la daube <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Recifarium 0:df922596d756 1522 ZBranch Intrp7
Recifarium 0:df922596d756 1523 ;
Recifarium 0:df922596d756 1524 ; compile
Recifarium 0:df922596d756 1525 ;
Recifarium 0:df922596d756 1526 Branch Intrp9
Recifarium 0:df922596d756 1527 Intrp7
Recifarium 0:df922596d756 1528 DCB Execute
Recifarium 0:df922596d756 1529 Branch Intrp10
Recifarium 0:df922596d756 1530 Intrp8 ; Traitement peut-etre nombre
Recifarium 0:df922596d756 1531 DCB Drop, Drop
Recifarium 0:df922596d756 1532 ; DCB Lit32
Recifarium 0:df922596d756 1533 ; DCD Mess2, Count, Type, Type ; debug <<<<<<<<<<<<<<<<<<<<<<<
Recifarium 0:df922596d756 1534 ; not a word may be a number
Recifarium 0:df922596d756 1535 ;
Recifarium 0:df922596d756 1536 Intrp9
Recifarium 0:df922596d756 1537 Intrp10
Recifarium 0:df922596d756 1538 Branch Interp
Recifarium 0:df922596d756 1539 DCB Exit
Recifarium 0:df922596d756 1540
Recifarium 0:df922596d756 1541 ;(CallR0)---------------------------(word--)
Recifarium 0:df922596d756 1542 LCallR0 LINK LInterp
Recifarium 0:df922596d756 1543 DCB 6
Recifarium 0:df922596d756 1544 DCB "CallR0"
Recifarium 0:df922596d756 1545 xCallR0 doCol
Recifarium 0:df922596d756 1546 ;...............;
Recifarium 0:df922596d756 1547
Recifarium 0:df922596d756 1548 DCB Exit
Recifarium 0:df922596d756 1549
Recifarium 0:df922596d756 1550 ;(DIGIT?)---------------------------(char, base --u f)
Recifarium 0:df922596d756 1551 LisDigit LINK LCallR0
Recifarium 0:df922596d756 1552 DCB 6, "DIGIT?"
Recifarium 0:df922596d756 1553 xisDigit doCol
Recifarium 0:df922596d756 1554 DCB ToR ;(char)
Recifarium 0:df922596d756 1555 DCB Lit8, '0', Minus ;(num)
Recifarium 0:df922596d756 1556 DCB Dup ;(num,num)
Recifarium 0:df922596d756 1557 DCB Lit8, 9, Gt ;(num, flag)
Recifarium 0:df922596d756 1558 ZBranch isDigit1
Recifarium 0:df922596d756 1559 DCB Lit8, ('A'-'9'-1)
Recifarium 0:df922596d756 1560 DCB Minus
Recifarium 0:df922596d756 1561 isDigit1 ;(num)
Recifarium 0:df922596d756 1562 DCB Dup, FromR, ULess
Recifarium 0:df922596d756 1563 DCB Exit
Recifarium 0:df922596d756 1564
Recifarium 0:df922596d756 1565 ;(CHAR)-----------------------------( -- char)
Recifarium 0:df922596d756 1566 LChar LINK LisDigit
Recifarium 0:df922596d756 1567 DCB 4, "CHAR"
Recifarium 0:df922596d756 1568 xChar doCol
Recifarium 0:df922596d756 1569 DCB Bl, Word, Plus1, CAt
Recifarium 0:df922596d756 1570 DCB Exit
Recifarium 0:df922596d756 1571
Recifarium 0:df922596d756 1572 ;(EXTRACT)-----------------------------( n base -- n c)
Recifarium 0:df922596d756 1573 LExtract LINK LChar
Recifarium 0:df922596d756 1574 DCB 7, "EXTRACT"
Recifarium 0:df922596d756 1575 xExtract doCol
Recifarium 0:df922596d756 1576 DCB Zero, Swap, UMSMod, Swap, Digit
Recifarium 0:df922596d756 1577 DCB Exit
Recifarium 0:df922596d756 1578
Recifarium 0:df922596d756 1579
Recifarium 0:df922596d756 1580
Recifarium 0:df922596d756 1581 ;(')--------------------------------( -- address)
Recifarium 0:df922596d756 1582 LTick LINK LExtract
Recifarium 0:df922596d756 1583 DCB 1, "'"
Recifarium 0:df922596d756 1584 xTick doCol
Recifarium 0:df922596d756 1585 DCB Bl, Word, Find, Not
Recifarium 0:df922596d756 1586 ZBranch Tick1
Recifarium 0:df922596d756 1587 DCB Count, Type, Bl, Emit
Recifarium 0:df922596d756 1588 DCB Lit32
Recifarium 0:df922596d756 1589 DCD Mess3
Recifarium 0:df922596d756 1590 DCB Count, Type, Cr
Recifarium 0:df922596d756 1591
Recifarium 0:df922596d756 1592 Tick1 DCB Exit
Recifarium 0:df922596d756 1593
Recifarium 0:df922596d756 1594 ;( ( )------------------------------( -- )
Recifarium 0:df922596d756 1595 LParan LINK LTick
Recifarium 0:df922596d756 1596 DCB 1, "("
Recifarium 0:df922596d756 1597 xParan doCol
Recifarium 0:df922596d756 1598 DCB Lit8, ")", Word
Recifarium 0:df922596d756 1599 DCB TDrop
Recifarium 0:df922596d756 1600 DCB Exit
Recifarium 0:df922596d756 1601
Recifarium 0:df922596d756 1602 ;(M/MOD)----------------------------( d, n -- r, q)
Recifarium 0:df922596d756 1603 LMSMod LINK LParan
Recifarium 0:df922596d756 1604 DCB 5, "M/MOD"
Recifarium 0:df922596d756 1605 xMSMod doCol
Recifarium 0:df922596d756 1606 DCB Dup, IsNeg, Dup, ToR
Recifarium 0:df922596d756 1607 ZBranch UMSMod1
Recifarium 0:df922596d756 1608
Recifarium 0:df922596d756 1609 DCB Neg, ToR, DNeg, FromR
Recifarium 0:df922596d756 1610 UMSMod1 DCB ToR, Dup, IsNeg
Recifarium 0:df922596d756 1611 ZBranch UMSMod2
Recifarium 0:df922596d756 1612
Recifarium 0:df922596d756 1613 DCB RAt, Plus
Recifarium 0:df922596d756 1614 UMSMod2 DCB FromR, UMSMod, FromR
Recifarium 0:df922596d756 1615 ZBranch UMSMod3
Recifarium 0:df922596d756 1616
Recifarium 0:df922596d756 1617 DCB Swap, Neg, Swap
Recifarium 0:df922596d756 1618 UMSMod3 DCB Exit
Recifarium 0:df922596d756 1619
Recifarium 0:df922596d756 1620 ;( /MOD )---------------------------( n, n -- r, q)
Recifarium 0:df922596d756 1621 LSMod LINK LMSMod
Recifarium 0:df922596d756 1622 DCB 4, "/MOD"
Recifarium 0:df922596d756 1623 xSMod doCol
Recifarium 0:df922596d756 1624 DCB Over, IsNeg, Swap, MSMod
Recifarium 0:df922596d756 1625 DCB Exit
Recifarium 0:df922596d756 1626 LTORG
Recifarium 0:df922596d756 1627
Recifarium 0:df922596d756 1628 ;( MOD )----------------------------(n, n -- r )
Recifarium 0:df922596d756 1629 LMod LINK LSMod
Recifarium 0:df922596d756 1630 DCB 3, "MOD"
Recifarium 0:df922596d756 1631 xMod doCol
Recifarium 0:df922596d756 1632 DCB SMod, Drop
Recifarium 0:df922596d756 1633 DCB Exit
Recifarium 0:df922596d756 1634
Recifarium 0:df922596d756 1635 ;( N>Tok )------------------------------( n, n -- q )
Recifarium 0:df922596d756 1636 LDiv LINK LMod
Recifarium 0:df922596d756 1637 DCB 1, "/"
Recifarium 0:df922596d756 1638 xDiv doCol
Recifarium 0:df922596d756 1639 DCB SMod, Swap, Drop
Recifarium 0:df922596d756 1640 DCB Exit
Recifarium 0:df922596d756 1641
Recifarium 0:df922596d756 1642 ;( N>Tk)----------------------------( )
Recifarium 0:df922596d756 1643 LNTTk LINK LDiv
Recifarium 0:df922596d756 1644 DCB 4, "N>Tk/"
Recifarium 0:df922596d756 1645 xNTTk doCol
Recifarium 0:df922596d756 1646 DCB Tick ;(xt1)
Recifarium 0:df922596d756 1647 ; DCB DotS
Recifarium 0:df922596d756 1648 DCB Plus1 ; Arrh Thumb code !!!!!
Recifarium 0:df922596d756 1649 ; DCB DotS
Recifarium 0:df922596d756 1650 DCB Lit32
Recifarium 0:df922596d756 1651 DCD TokTab
Recifarium 0:df922596d756 1652 DCB Dup, ToR ; (xt1, TokTab)
Recifarium 0:df922596d756 1653 NTTk1 DCB TDup, At ;(xt1,TokTab,xt1,xt2)
Recifarium 0:df922596d756 1654 ; DCB DotS
Recifarium 0:df922596d756 1655 DCB Eq ;(xt1,TokT,f)
Recifarium 0:df922596d756 1656 ZBranch NTTk2
Recifarium 0:df922596d756 1657 ; DCB DotS
Recifarium 0:df922596d756 1658 DCB FromR, Minus, Abs ;(xt1, Tok#)
Recifarium 0:df922596d756 1659 DCB Slash4, Swap, Drop
Recifarium 0:df922596d756 1660 Branch NTTk3
Recifarium 0:df922596d756 1661 NTTk2 DCB Lit8, 4, Minus ;(xt1, TokT-4)
Recifarium 0:df922596d756 1662 Branch NTTk1
Recifarium 0:df922596d756 1663 NTTk3 DCB Exit
Recifarium 0:df922596d756 1664
Recifarium 0:df922596d756 1665 ;-----------------------------------
Recifarium 0:df922596d756 1666 ; CONSTANTS
Recifarium 0:df922596d756 1667 Mess1 DCB 11,"ENORA-Forth"
Recifarium 0:df922596d756 1668 Mess2 DCB 5, "Error"
Recifarium 0:df922596d756 1669 Mess3 DCB 7, "Unknown"
Recifarium 0:df922596d756 1670 Mess4 DCB 3, "Ok>"
Recifarium 0:df922596d756 1671 DP0 DCD Begin
Recifarium 0:df922596d756 1672 ;-----------------------------------
Recifarium 0:df922596d756 1673 NextEntry EQU .
Recifarium 0:df922596d756 1674
Recifarium 0:df922596d756 1675 VLatest EQU LNTTk
Recifarium 0:df922596d756 1676
Recifarium 0:df922596d756 1677 ;---------End of Dictonary
Recifarium 0:df922596d756 1678
Recifarium 0:df922596d756 1679
Recifarium 0:df922596d756 1680 zor B zor
Recifarium 0:df922596d756 1681
Recifarium 0:df922596d756 1682 ;-(TEST)---------------------------
Recifarium 0:df922596d756 1683 ;---------------------------+
Recifarium 0:df922596d756 1684 ; Testing Area |
Recifarium 0:df922596d756 1685 ;---------------------------+
Recifarium 0:df922596d756 1686 ;xDouble doCol
Recifarium 0:df922596d756 1687 ; DCB Dup, Plus ; : Double Dup + ;
Recifarium 0:df922596d756 1688 ; DCB Exit
Recifarium 0:df922596d756 1689 ;
Recifarium 0:df922596d756 1690 ;xQuad doCol
Recifarium 0:df922596d756 1691 ; DCB Double ; : Quad Double Double ;
Recifarium 0:df922596d756 1692 ; DCB Double
Recifarium 0:df922596d756 1693 ; DCB Exit
Recifarium 0:df922596d756 1694 ; ------Test1------------OK
Recifarium 0:df922596d756 1695 ; DCB 0
Recifarium 0:df922596d756 1696 ;test1 DCB Lit8, 127
Recifarium 0:df922596d756 1697 ;loop1 DCB Dup, Emit, Minus1
Recifarium 0:df922596d756 1698 ; DCB Dup
Recifarium 0:df922596d756 1699 ; ZBranch Loop12
Recifarium 0:df922596d756 1700 ; Branch loop1
Recifarium 0:df922596d756 1701 ;Loop12 DCB Lit8, 0xD, Emit
Recifarium 0:df922596d756 1702 ; DCB Lit8, 'F', Emit
Recifarium 0:df922596d756 1703 ; DCB Lit8, 'I', Emit
Recifarium 0:df922596d756 1704 ; DCB Lit8, 'N', Emit
Recifarium 0:df922596d756 1705 ;Loop13 Branch Loop13
Recifarium 0:df922596d756 1706 ; ------End Test1 --------
Recifarium 0:df922596d756 1707 ;
Recifarium 0:df922596d756 1708 ;
Recifarium 0:df922596d756 1709 ; ------Test3------------OK
Recifarium 0:df922596d756 1710 ;test3 DCB Lit32
Recifarium 0:df922596d756 1711 ; DCD 21836
Recifarium 0:df922596d756 1712 ; DCB Lit8, 7
Recifarium 0:df922596d756 1713 ; DCB UMSMod
Recifarium 0:df922596d756 1714 ; DCB Snap
Recifarium 0:df922596d756 1715 ; DCB Lit8, 0xD , Emit
Recifarium 0:df922596d756 1716 ; DCB Drop, Snap
Recifarium 0:df922596d756 1717 ; ------End Test3 --------
Recifarium 0:df922596d756 1718
Recifarium 0:df922596d756 1719 ; ------Test3------------OK
Recifarium 0:df922596d756 1720 ;test4 DCB Lit8, 7, Double
Recifarium 0:df922596d756 1721 ; DCB Lit8, 203
Recifarium 0:df922596d756 1722 ; DCB Min
Recifarium 0:df922596d756 1723 ; DCB Snap, Drop, Cr
Recifarium 0:df922596d756 1724 ; DCB Lit8, 7, Double
Recifarium 0:df922596d756 1725 ; DCB Lit8, 203
Recifarium 0:df922596d756 1726 ; DCB Max
Recifarium 0:df922596d756 1727 ; DCB Snap, Drop, Cr
Recifarium 0:df922596d756 1728 ;l4 Branch l4
Recifarium 0:df922596d756 1729
Recifarium 0:df922596d756 1730 ; ------End Test4 --------
Recifarium 0:df922596d756 1731 ;test6 DCB One
Recifarium 0:df922596d756 1732 ; DCB Snap, Cr
Recifarium 0:df922596d756 1733 ; DCB Digit
Recifarium 0:df922596d756 1734 ; DCB Snap, Cr
Recifarium 0:df922596d756 1735 ; DCB Emit
Recifarium 0:df922596d756 1736 ; DCB Ten
Recifarium 0:df922596d756 1737 ; DCB Snap, Cr
Recifarium 0:df922596d756 1738 ; DCB Digit
Recifarium 0:df922596d756 1739 ; DCB Snap, Cr
Recifarium 0:df922596d756 1740 ; DCB Emit
Recifarium 0:df922596d756 1741 ;Loop6 Branch Loop6
Recifarium 0:df922596d756 1742
Recifarium 0:df922596d756 1743 ;test7 DCB Lit8, 127
Recifarium 0:df922596d756 1744 ; DCB Snap, Cr
Recifarium 0:df922596d756 1745 ; DCB Lit8, 0
Recifarium 0:df922596d756 1746 ; DCB Snap, Cr
Recifarium 0:df922596d756 1747 ; DCB Lit8, 255
Recifarium 0:df922596d756 1748 ; DCB Snap, Cr
Recifarium 0:df922596d756 1749 ; DCB Within
Recifarium 0:df922596d756 1750 ; DCB Snap, Drop, Cr
Recifarium 0:df922596d756 1751 ;Loop7 Branch Loop7
Recifarium 0:df922596d756 1752
Recifarium 0:df922596d756 1753 ;test8 DCB Lit8, 3
Recifarium 0:df922596d756 1754 ; DCB Double
Recifarium 0:df922596d756 1755 ; DCB Snap, Cr
Recifarium 0:df922596d756 1756 ; DCB Double
Recifarium 0:df922596d756 1757 ; DCB Snap, Cr
Recifarium 0:df922596d756 1758 ;Loop8 Branch Loop8
Recifarium 0:df922596d756 1759 ;
Recifarium 0:df922596d756 1760 ;test9 DCB Lit8, ">", Emit
Recifarium 0:df922596d756 1761 ; DCB Lit32
Recifarium 0:df922596d756 1762 ; DCD TIB+1
Recifarium 0:df922596d756 1763 ; DCB Lit8, 50
Recifarium 0:df922596d756 1764 ; DCB Accept
Recifarium 0:df922596d756 1765 ; DCB Lit32
Recifarium 0:df922596d756 1766 ; DCD TIB
Recifarium 0:df922596d756 1767 ; DCB CStore
Recifarium 0:df922596d756 1768 ; DCB Lit32
Recifarium 0:df922596d756 1769 ; DCD TIB
Recifarium 0:df922596d756 1770 ; DCB Find
Recifarium 0:df922596d756 1771 ; ZBranch test91
Recifarium 0:df922596d756 1772 ; DCB Execute
Recifarium 0:df922596d756 1773
Recifarium 0:df922596d756 1774 ; Branch test9
Recifarium 0:df922596d756 1775 ;test91 DCB Drop
Recifarium 0:df922596d756 1776 ; Branch test9
Recifarium 0:df922596d756 1777 ;test10 DCB Words
Recifarium 0:df922596d756 1778 ; Branch test10
Recifarium 0:df922596d756 1779
Recifarium 0:df922596d756 1780
Recifarium 0:df922596d756 1781 ;test11 DCB Lit32
Recifarium 0:df922596d756 1782 ; DCD test11c
Recifarium 0:df922596d756 1783 ; DCB Lit8, 4, Plus
Recifarium 0:df922596d756 1784 ; DCB Find, Swap
Recifarium 0:df922596d756 1785 ; DCB Snap, Bl, Emit, Drop, Snap
Recifarium 0:df922596d756 1786 ;test11b Branch test11b
Recifarium 0:df922596d756 1787 ;test11c DCB 4, "TEST"
Recifarium 0:df922596d756 1788
Recifarium 0:df922596d756 1789
Recifarium 0:df922596d756 1790 ;test12 DCB Lit8, 'a'
Recifarium 0:df922596d756 1791 ;test12b DCB Dup, Toupp
Recifarium 0:df922596d756 1792 ; DCB Snap, Bl, Emit, Drop, Snap, Cr
Recifarium 0:df922596d756 1793 ; DCB Plus1
Recifarium 0:df922596d756 1794 ; Branch test12b
Recifarium 0:df922596d756 1795
Recifarium 0:df922596d756 1796 ;test13 DCB Lit32
Recifarium 0:df922596d756 1797 ; DCD TIB
Recifarium 0:df922596d756 1798 ; DCB Lit8, 50, Accept
Recifarium 0:df922596d756 1799 ; DCB Snap, Drop
Recifarium 0:df922596d756 1800 ; Branch test13
Recifarium 0:df922596d756 1801
Recifarium 0:df922596d756 1802 ;test14 DCB Sp0, Snap, Cr
Recifarium 0:df922596d756 1803 ; DCB Depth, Cr
Recifarium 0:df922596d756 1804 ; DCB Snap, Drop, Cr
Recifarium 0:df922596d756 1805 ;test14a Branch test14a
Recifarium 0:df922596d756 1806
Recifarium 0:df922596d756 1807 ;test15 DCB Lit8, 3, Lit8, 5
Recifarium 0:df922596d756 1808 ; DCB Lit32
Recifarium 0:df922596d756 1809 ; DCD xPlus
Recifarium 0:df922596d756 1810 ; DCB Execute
Recifarium 0:df922596d756 1811 ; DCB Snap
Recifarium 0:df922596d756 1812 ;test15b Branch test15b
Recifarium 0:df922596d756 1813
Recifarium 0:df922596d756 1814 ;test16 DCB One, Lit32
Recifarium 0:df922596d756 1815 ; DCD xDouble
Recifarium 0:df922596d756 1816 ; DCB Minus1
Recifarium 0:df922596d756 1817 ; DCB Execute
Recifarium 0:df922596d756 1818 ; DCB Snap
Recifarium 0:df922596d756 1819 ;test16b Branch test16b
Recifarium 0:df922596d756 1820 ;
Recifarium 0:df922596d756 1821 ;test17 DCB Lit32
Recifarium 0:df922596d756 1822 ; DCD APAD
Recifarium 0:df922596d756 1823 ; DCB Dup, Lit8, 40, Swap, CStore
Recifarium 0:df922596d756 1824 ; DCB Plus1, Lit8, 40, Lit8, 'h', Fill
Recifarium 0:df922596d756 1825 ; DCB Lit32
Recifarium 0:df922596d756 1826 ; DCD APAD
Recifarium 0:df922596d756 1827 ; DCB Count, Type
Recifarium 0:df922596d756 1828 ; Branch .
Recifarium 0:df922596d756 1829 ;Test17a Branch Test17a
Recifarium 0:df922596d756 1830
Recifarium 0:df922596d756 1831
Recifarium 0:df922596d756 1832 test18 DCB Lit8, 0, nTib, Store
Recifarium 0:df922596d756 1833 DCB Lit8, 0, toIn, Store
Recifarium 0:df922596d756 1834 DCB Dec
Recifarium 0:df922596d756 1835 DCB Lit32
Recifarium 0:df922596d756 1836 DCD Mess1
Recifarium 0:df922596d756 1837 DCB Count, Type, Cr
Recifarium 0:df922596d756 1838 DCB Inter
Recifarium 0:df922596d756 1839
Recifarium 0:df922596d756 1840 ;test19
Recifarium 0:df922596d756 1841 ; : test begin dup if 1- else drop exit then again ;
Recifarium 0:df922596d756 1842 ; DCB Lit32
Recifarium 0:df922596d756 1843 ; DCD 1000000
Recifarium 0:df922596d756 1844 ; DCB Lit8,'A', Emit, Cr
Recifarium 0:df922596d756 1845 ;test190
Recifarium 0:df922596d756 1846 ;test191 DCB Dup
Recifarium 0:df922596d756 1847 ; ZBranch test192
Recifarium 0:df922596d756 1848 ; DCB Minus1
Recifarium 0:df922596d756 1849 ; Branch test191
Recifarium 0:df922596d756 1850 ;test192 DCB Lit8,'B', Emit, Cr
Recifarium 0:df922596d756 1851
Recifarium 0:df922596d756 1852 ;test193 Branch test193
Recifarium 0:df922596d756 1853
Recifarium 0:df922596d756 1854 ; This is the token table
Recifarium 0:df922596d756 1855 ; The very last one entry is token 0 preceding is token 1 ...
Recifarium 0:df922596d756 1856 ; This table grow as you create new words in decreasing addresses
Recifarium 0:df922596d756 1857
Recifarium 0:df922596d756 1858 SPACE ((256-95)*4) ; <<<<<<<<<<<<<<<<<<<< a updater!!!!
Recifarium 0:df922596d756 1859
Recifarium 0:df922596d756 1860 NToken EQU (TokTab-.)/4 +1
Recifarium 0:df922596d756 1861
Recifarium 0:df922596d756 1862 wxTick DCD xTick
Recifarium 0:df922596d756 1863 wxUDot DCD xUDot
Recifarium 0:df922596d756 1864 wxDot DCD xDot
Recifarium 0:df922596d756 1865 wxEndPic DCD xEndPic
Recifarium 0:df922596d756 1866 wxSign DCD xSign
Recifarium 0:df922596d756 1867 wxNumStr DCD xNumStr
Recifarium 0:df922596d756 1868 wxStrPic DCD xStrPic
Recifarium 0:df922596d756 1869 wxStr DCD xStr
Recifarium 0:df922596d756 1870 wxAbs DCD xAbs
Recifarium 0:df922596d756 1871 wxNumb DCD xNumb
Recifarium 0:df922596d756 1872 wxHold DCD xHold
Recifarium 0:df922596d756 1873 wxExtract DCD xExtract
Recifarium 0:df922596d756 1874 wxHld DCD xHld
Recifarium 0:df922596d756 1875 wxPad DCD xPad
Recifarium 0:df922596d756 1876 wxUMSMod DCD xUMSMod
Recifarium 0:df922596d756 1877 wxMSMod DCD xMSMod
Recifarium 0:df922596d756 1878 wxSMod DCD xSMod
Recifarium 0:df922596d756 1879 wxNeg DCD xNeg
Recifarium 0:df922596d756 1880 wxRAt DCD xRAt
Recifarium 0:df922596d756 1881 wxIsNull DCD xIsNull
Recifarium 0:df922596d756 1882 wxUless DCD xULess
Recifarium 0:df922596d756 1883 wxMul DCD xMul
Recifarium 0:df922596d756 1884 wxDotS DCD xDotS
Recifarium 0:df922596d756 1885 wxInter DCD xInter
Recifarium 0:df922596d756 1886 wxnTib DCD xnTib
Recifarium 0:df922596d756 1887 wxtoIn DCD xtoIn
Recifarium 0:df922596d756 1888 wxState DCD xState
Recifarium 0:df922596d756 1889 wxRS0 DCD xRS0
Recifarium 0:df922596d756 1890 wxTrue DCD xTrue
Recifarium 0:df922596d756 1891 wxFalse DCD xFalse
Recifarium 0:df922596d756 1892 wxDNeg DCD xDNeg
Recifarium 0:df922596d756 1893 wxDPlus DCD xDPlus
Recifarium 0:df922596d756 1894 wxDMinus DCD xDMinus
Recifarium 0:df922596d756 1895 wxIsNeg DCD xIsNeg
Recifarium 0:df922596d756 1896 wxTDup DCD x2Dup
Recifarium 0:df922596d756 1897 wxUMPlus DCD xUMPlus
Recifarium 0:df922596d756 1898 wx2Drop DCD x2Drop
Recifarium 0:df922596d756 1899 wxFill DCD xFill
Recifarium 0:df922596d756 1900 wxFoursta DCD xFoursta
Recifarium 0:df922596d756 1901 wxMRot DCD xMRot
Recifarium 0:df922596d756 1902 wxRot DCD xRot
Recifarium 0:df922596d756 1903 wxDec DCD xDec
Recifarium 0:df922596d756 1904 wxBin DCD xBin
Recifarium 0:df922596d756 1905 wxBase DCD xBase
Recifarium 0:df922596d756 1906 wxToupp DCD xToupp
Recifarium 0:df922596d756 1907 wxFind DCD xFind
Recifarium 0:df922596d756 1908 wxUpper DCD xUpper
Recifarium 0:df922596d756 1909 wxCount DCD xCount
Recifarium 0:df922596d756 1910 wxType DCD xType
Recifarium 0:df922596d756 1911 wxAt DCD xAt
Recifarium 0:df922596d756 1912 wxCAt DCD xCAt
Recifarium 0:df922596d756 1913 wxWord DCD xWord
Recifarium 0:df922596d756 1914 wxWords DCD xWords
Recifarium 0:df922596d756 1915 wxCStore DCD xCStore
Recifarium 0:df922596d756 1916 wxFromR DCD xFromR
Recifarium 0:df922596d756 1917 wxStore DCD xStore
Recifarium 0:df922596d756 1918 wxSwap DCD xSwap
Recifarium 0:df922596d756 1919 wxAccept DCD xAccept
Recifarium 0:df922596d756 1920 wxKey DCD xKey
Recifarium 0:df922596d756 1921 wxBCode DCD xBCode ; Note there is no token for ;CODE
Recifarium 0:df922596d756 1922 wxTen DCD xTen
Recifarium 0:df922596d756 1923 wxTwo DCD xTwo
Recifarium 0:df922596d756 1924 wxOne DCD xOne
Recifarium 0:df922596d756 1925 wxZero DCD xZero
Recifarium 0:df922596d756 1926 wxWithin DCD xWithin
Recifarium 0:df922596d756 1927 wxToR DCD xToR
Recifarium 0:df922596d756 1928 wxDigit DCD xDigit
Recifarium 0:df922596d756 1929 wxNot DCD xNot
Recifarium 0:df922596d756 1930 wxXor DCD xXor
Recifarium 0:df922596d756 1931 wxOr DCD xOr
Recifarium 0:df922596d756 1932 wxAnd DCD xAnd
Recifarium 0:df922596d756 1933 wxEq DCD xEq
Recifarium 0:df922596d756 1934 wxLt DCD xLt
Recifarium 0:df922596d756 1935 wxGt DCD xGt
Recifarium 0:df922596d756 1936 wxOver DCD xOver
Recifarium 0:df922596d756 1937 wxMax DCD xMax
Recifarium 0:df922596d756 1938 wxMin DCD xMin
Recifarium 0:df922596d756 1939 wxCr DCD xCr
Recifarium 0:df922596d756 1940 wxBl DCD xBl
Recifarium 0:df922596d756 1941 wxSpace DCD xSpace
Recifarium 0:df922596d756 1942 wxSpaces DCD xSpaces
Recifarium 0:df922596d756 1943 wxLf DCD xLf
Recifarium 0:df922596d756 1944 wxDrop DCD xDrop
Recifarium 0:df922596d756 1945 ;wxUSMod DCD xUSMod
Recifarium 0:df922596d756 1946 wxZBra DCD xZBra
Recifarium 0:df922596d756 1947 wxSlash4 DCD xSlash4
Recifarium 0:df922596d756 1948 wxDepth DCD xDepth
Recifarium 0:df922596d756 1949 wxSp0 DCD xSp0
Recifarium 0:df922596d756 1950 wxSpAt DCD xSpAt
Recifarium 0:df922596d756 1951 wxEmit DCD xEmit
Recifarium 0:df922596d756 1952 wxBra DCD xBra
Recifarium 0:df922596d756 1953 wxExit DCD xExit
Recifarium 0:df922596d756 1954 wxPlus DCD xPlus
Recifarium 0:df922596d756 1955 wxdoLit32 DCD doLit32
Recifarium 0:df922596d756 1956 wxdoLit16 DCD doLit16
Recifarium 0:df922596d756 1957 wxdoLit8 DCD doLit8
Recifarium 0:df922596d756 1958 wxExecute DCD xExec
Recifarium 0:df922596d756 1959 wxMinus DCD xMinus
Recifarium 0:df922596d756 1960 wxDupNZ DCD xDupNZ
Recifarium 0:df922596d756 1961 wxDup DCD xDup
Recifarium 0:df922596d756 1962 wxSnap DCD xSnap
Recifarium 0:df922596d756 1963 wxMinus1 DCD xMinus1
Recifarium 0:df922596d756 1964 wxPlus1
Recifarium 0:df922596d756 1965 TokTab DCD xPlus1
Recifarium 0:df922596d756 1966
Recifarium 0:df922596d756 1967
Recifarium 0:df922596d756 1968 AREA |.data|, DATA
Recifarium 0:df922596d756 1969
Recifarium 0:df922596d756 1970 Begin EQU .
Recifarium 0:df922596d756 1971 SPACE DataStackLength
Recifarium 0:df922596d756 1972 SPACE RAMForIAP
Recifarium 0:df922596d756 1973 SPACE ReturnStackLength
Recifarium 0:df922596d756 1974 __initial_sp
Recifarium 0:df922596d756 1975
Recifarium 0:df922596d756 1976 DLatest DCD 0
Recifarium 0:df922596d756 1977 Latest DCD 0
Recifarium 0:df922596d756 1978 VState DCD 0
Recifarium 0:df922596d756 1979 VBase DCD 0
Recifarium 0:df922596d756 1980 AnTib DCD 0
Recifarium 0:df922596d756 1981 AtoIn DCD 0
Recifarium 0:df922596d756 1982 Transit DCD 0
Recifarium 0:df922596d756 1983 AHLD DCD 0
Recifarium 0:df922596d756 1984
Recifarium 0:df922596d756 1985 TIB SPACE 128
Recifarium 0:df922596d756 1986 APAD SPACE 128
Recifarium 0:df922596d756 1987 RomBuff SPACE BuffSize
Recifarium 0:df922596d756 1988
Recifarium 0:df922596d756 1989 fin EQU .
Recifarium 0:df922596d756 1990 END