A forth for LPC8xxx

Hello

Committer:
Recifarium
Date:
Fri Dec 04 13:09:58 2015 +0000
Revision:
0:df922596d756
Child:
1:1224cf3799a5
First release

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