A forth for LPC8xxx

Hello

Committer:
Recifarium
Date:
Thu May 12 15:59:55 2016 +0000
Revision:
2:2f8532130cca
Parent:
1:1224cf3799a5
Update;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Recifarium 1:1224cf3799a5 1 ; 19200/8/none/1
Recifarium 1:1224cf3799a5 2 ;You must use the Keil µVision to assemble this source
Recifarium 0:df922596d756 3 EXPORT Reset_Handler
Recifarium 0:df922596d756 4 EXPORT __initial_sp
Recifarium 0:df922596d756 5 AREA |.text|, CODE
Recifarium 0:df922596d756 6 ; IMPORT __Vectors
Recifarium 0:df922596d756 7 THUMB
Recifarium 1:1224cf3799a5 8 BuffSize EQU 64
Recifarium 0:df922596d756 9 ;----------------------------------
Recifarium 0:df922596d756 10 ; Values that can be customise
Recifarium 0:df922596d756 11 ; Data stack & Return Stack are @ the begining
Recifarium 0:df922596d756 12 ; of Data Memory area
Recifarium 1:1224cf3799a5 13 ReturnStackLength EQU 32 * 4 ; 32 cells
Recifarium 0:df922596d756 14 DataStackLength EQU 32 * 4 ; 32 cells
Recifarium 0:df922596d756 15
Recifarium 0:df922596d756 16
Recifarium 0:df922596d756 17 ; Then follow internal values
Recifarium 1:1224cf3799a5 18 ; UserVar EQU 64 * 4 ; 64 cells
Recifarium 0:df922596d756 19 ;-----------------------------------
Recifarium 0:df922596d756 20 ; Registers allocation |
Recifarium 0:df922596d756 21 ; They are in this way to allow |
Recifarium 0:df922596d756 22 ; the use of r0 r1 r2 r3 |
Recifarium 0:df922596d756 23 ; to call subroutine |
Recifarium 0:df922596d756 24 ;-----------------------------------
Recifarium 0:df922596d756 25 ALIAS r0, WRK0 ; WoRK0 register
Recifarium 0:df922596d756 26 ALIAS r1, WRK1 ; WoRK1 register
Recifarium 0:df922596d756 27 ALIAS r2, WRK2 ; WoRK2 register
Recifarium 1:1224cf3799a5 28 ALIAS r3, WRK ; WoRK register ! used by the internal interpreter
Recifarium 0:df922596d756 29 ALIAS r4, IPTR ; Instruction PoinTeR
Recifarium 1:1224cf3799a5 30 ; ALIAS r5, USER ; May be USER pointer in future
Recifarium 0:df922596d756 31 ALIAS r6, TOS ; Top Of Stack , stack managed by sp
Recifarium 0:df922596d756 32 ALIAS r7, RPTR ; Return stack PoinTeR
Recifarium 1:1224cf3799a5 33
Recifarium 1:1224cf3799a5 34
Recifarium 0:df922596d756 35 ;-----------------------------------
Recifarium 1:1224cf3799a5 36 ; Next routine
Recifarium 1:1224cf3799a5 37 ;-----------------------------------
Recifarium 1:1224cf3799a5 38 MACRO
Recifarium 1:1224cf3799a5 39 $lab Next
Recifarium 1:1224cf3799a5 40 $lab LDMIA IPTR!, {WRK} ; Get indirect address to execute
Recifarium 1:1224cf3799a5 41 ; and update Instruction pointer
Recifarium 1:1224cf3799a5 42 LDR WRK2, [WRK] ; note that WRK point to the parameter field
Recifarium 1:1224cf3799a5 43 BX WRK2 ; it will be used later
Recifarium 1:1224cf3799a5 44 MEND
Recifarium 1:1224cf3799a5 45
Recifarium 1:1224cf3799a5 46 ;-----------------------------------
Recifarium 1:1224cf3799a5 47 ; routines doCol/Con/Var
Recifarium 1:1224cf3799a5 48 ;-----------------------------------
Recifarium 1:1224cf3799a5 49 doCol STMIA RPTR!,{IPTR} ; Save Instruction pointer to the return Stack
Recifarium 1:1224cf3799a5 50 ; & Update Return stack pointer
Recifarium 1:1224cf3799a5 51 ADDS IPTR, WRK, #4 ; Point to parameter field
Recifarium 1:1224cf3799a5 52 Next
Recifarium 0:df922596d756 53
Recifarium 1:1224cf3799a5 54 doCon PUSH {TOS} ;
Recifarium 1:1224cf3799a5 55 LDR TOS,[WRK,#4]
Recifarium 1:1224cf3799a5 56 Next
Recifarium 1:1224cf3799a5 57
Recifarium 1:1224cf3799a5 58 doVar PUSH {TOS} ;
Recifarium 1:1224cf3799a5 59 LDR TOS,[WRK,#4]
Recifarium 1:1224cf3799a5 60 Next
Recifarium 1:1224cf3799a5 61
Recifarium 1:1224cf3799a5 62 ;-----------------------------------
Recifarium 1:1224cf3799a5 63 ; Exit Routine (restore IPTR)
Recifarium 1:1224cf3799a5 64 ;-----------------------------------
Recifarium 1:1224cf3799a5 65 Exit DCD xExit
Recifarium 1:1224cf3799a5 66 xExit SUBS RPTR, RPTR, #4 ; Adjust the return stack pointer
Recifarium 1:1224cf3799a5 67 LDR IPTR,[RPTR] ; Collect the value
Recifarium 1:1224cf3799a5 68 Next
Recifarium 1:1224cf3799a5 69
Recifarium 1:1224cf3799a5 70 Lit32 DCD xLit32
Recifarium 1:1224cf3799a5 71 xLit32 PUSH {TOS}
Recifarium 1:1224cf3799a5 72 LDM IPTR!,{TOS} ; Nearly like next but we collect the value
Recifarium 1:1224cf3799a5 73 Next
Recifarium 1:1224cf3799a5 74
Recifarium 1:1224cf3799a5 75 Zero DCD doCon
Recifarium 1:1224cf3799a5 76 DCD 0
Recifarium 1:1224cf3799a5 77
Recifarium 1:1224cf3799a5 78 Ten DCD doCon
Recifarium 1:1224cf3799a5 79 DCD 10
Recifarium 1:1224cf3799a5 80
Recifarium 0:df922596d756 81 ;-----------------------------------
Recifarium 0:df922596d756 82 ;Not so usefull macro...to be change
Recifarium 0:df922596d756 83 MACRO
Recifarium 0:df922596d756 84 $lab LINK $p
Recifarium 0:df922596d756 85 $lab DCD $p
Recifarium 0:df922596d756 86 MEND
Recifarium 1:1224cf3799a5 87
Recifarium 0:df922596d756 88 ;-----------------------------------
Recifarium 0:df922596d756 89 ; These macro compute the displacement
Recifarium 1:1224cf3799a5 90 ; which is store in a word
Recifarium 0:df922596d756 91 MACRO
Recifarium 0:df922596d756 92 $label Branch $target
Recifarium 1:1224cf3799a5 93 $label DCD Bra
Recifarium 1:1224cf3799a5 94 DCD $target
Recifarium 1:1224cf3799a5 95 ; DCD $target-.
Recifarium 0:df922596d756 96 MEND
Recifarium 0:df922596d756 97
Recifarium 0:df922596d756 98 MACRO
Recifarium 0:df922596d756 99 $label ZBranch $target
Recifarium 1:1224cf3799a5 100 $label DCD ZBra
Recifarium 1:1224cf3799a5 101 DCD $target
Recifarium 1:1224cf3799a5 102 ; DCD $target-.
Recifarium 0:df922596d756 103 MEND
Recifarium 0:df922596d756 104
Recifarium 0:df922596d756 105 ;-----------------------------------
Recifarium 0:df922596d756 106 Reset_Handler
Recifarium 0:df922596d756 107 LDR RPTR, =Begin
Recifarium 0:df922596d756 108 BL UartConfig
Recifarium 1:1224cf3799a5 109 SUBS TOS,TOS
Recifarium 1:1224cf3799a5 110 LDR WRK0, =end_data
Recifarium 1:1224cf3799a5 111 LDR WRK1, =AHERE
Recifarium 1:1224cf3799a5 112 STR WRK0, [WRK1]
Recifarium 0:df922596d756 113 LDR IPTR, =test18
Recifarium 1:1224cf3799a5 114 Next
Recifarium 1:1224cf3799a5 115
Recifarium 1:1224cf3799a5 116 test17 DCD Zero, Dot
Recifarium 1:1224cf3799a5 117 Branch test17
Recifarium 0:df922596d756 118
Recifarium 1:1224cf3799a5 119 test18 DCD Zero, nTib, Store
Recifarium 1:1224cf3799a5 120 DCD Zero, toIn, Store
Recifarium 1:1224cf3799a5 121 DCD Zero, State, Store ; Interpret mode
Recifarium 1:1224cf3799a5 122 DCD Dec ; Set decimal mode
Recifarium 1:1224cf3799a5 123 ; DCD Esc
Recifarium 1:1224cf3799a5 124 ; DCD Lit32, 'c', Emit, Lf ; Clear screen
Recifarium 1:1224cf3799a5 125 DCD Lit32
Recifarium 1:1224cf3799a5 126 DCD Mess1 ; welcome message
Recifarium 1:1224cf3799a5 127 DCD Count, Type, Cr
Recifarium 1:1224cf3799a5 128 DCD Inter ; forever loop
Recifarium 1:1224cf3799a5 129
Recifarium 1:1224cf3799a5 130 ;-----------------------------------
Recifarium 1:1224cf3799a5 131 ; Flag used in dictionary |
Recifarium 1:1224cf3799a5 132 ;-----------------------------------
Recifarium 1:1224cf3799a5 133 Cmponly EQU 0x20 ; Compile only
Recifarium 1:1224cf3799a5 134 Immed EQU 0x80 ; Indicate the word must be run immediatly
Recifarium 1:1224cf3799a5 135
Recifarium 0:df922596d756 136 ;-----------------------------------
Recifarium 0:df922596d756 137 ; Dictionary start here
Recifarium 1:1224cf3799a5 138 ;-(DUP)-----------------------------(x -- x,x)
Recifarium 1:1224cf3799a5 139 LDup LINK 0 ; First word
Recifarium 1:1224cf3799a5 140 DCB 3, "DUP"
Recifarium 1:1224cf3799a5 141 Dup DCD xDup
Recifarium 1:1224cf3799a5 142 xDup PUSH {TOS} ; Push Top of stack onto the stack (sp pointing)
Recifarium 1:1224cf3799a5 143 Next
Recifarium 0:df922596d756 144
Recifarium 0:df922596d756 145 ;-----------------------------------
Recifarium 0:df922596d756 146 ; All specific code for a chip
Recifarium 0:df922596d756 147 ; Must be put in a separate file
Recifarium 0:df922596d756 148 ; see lpc8xx.s as an example
Recifarium 0:df922596d756 149 ; INCLUDE yourfavoritechip.s
Recifarium 0:df922596d756 150
Recifarium 0:df922596d756 151
Recifarium 1:1224cf3799a5 152 INCLUDE lpc8xx.s
Recifarium 1:1224cf3799a5 153 ; INCLUDE QemuM0.s
Recifarium 0:df922596d756 154
Recifarium 0:df922596d756 155 ;-(Plus1)---------------------------( n -- n+1 )
Recifarium 1:1224cf3799a5 156 LPlus1 LINK LKey ; Link
Recifarium 1:1224cf3799a5 157 DCB 2, "1+"
Recifarium 1:1224cf3799a5 158 Plus1 DCD xPlus1
Recifarium 0:df922596d756 159 xPlus1 ADDS TOS, TOS, #1 ; Add 1 to TOS
Recifarium 1:1224cf3799a5 160 Next
Recifarium 0:df922596d756 161
Recifarium 0:df922596d756 162 ;-(Minus1)--------------------------( n -- n-1 )
Recifarium 0:df922596d756 163 LMinus1 LINK LPlus1 ; Link
Recifarium 1:1224cf3799a5 164 DCB 2, "1-"
Recifarium 1:1224cf3799a5 165 Minus1 DCD xMinus1
Recifarium 0:df922596d756 166 xMinus1 SUBS TOS, TOS, #1 ; Substract 1 to TOS
Recifarium 1:1224cf3799a5 167 Next
Recifarium 0:df922596d756 168
Recifarium 0:df922596d756 169 ;-(2DUP)----------------------------(x2,x1 -- x2,x1,x2,x1)
Recifarium 1:1224cf3799a5 170 L2Dup LINK LMinus1 ; Link
Recifarium 0:df922596d756 171 DCB 4, "2DUP"
Recifarium 1:1224cf3799a5 172 TDup DCD x2Dup
Recifarium 1:1224cf3799a5 173 x2Dup PUSH {TOS} ; push x1
Recifarium 1:1224cf3799a5 174 LDR WRK, [sp, #4] ; get x2
Recifarium 1:1224cf3799a5 175 PUSH {WRK} ; push x2
Recifarium 1:1224cf3799a5 176 Next ; First is still in TOS
Recifarium 0:df922596d756 177
Recifarium 0:df922596d756 178 ;-(OR)------------------------------( x1 x2 -- x3 )
Recifarium 1:1224cf3799a5 179 LOr LINK L2Dup ; Link
Recifarium 0:df922596d756 180 DCB 2,"OR"
Recifarium 1:1224cf3799a5 181 Or DCD xOr
Recifarium 0:df922596d756 182 xOr POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 183 ORRS TOS, TOS, WRK ; Or
Recifarium 1:1224cf3799a5 184 Next
Recifarium 0:df922596d756 185
Recifarium 0:df922596d756 186 ;-(AND)-----------------------------( x1 x2 -- x3 )
Recifarium 0:df922596d756 187 LAnd LINK LOr ; Link
Recifarium 0:df922596d756 188 DCB 3,"AND"
Recifarium 1:1224cf3799a5 189 And DCD xAnd
Recifarium 0:df922596d756 190 xAnd POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 191 ANDS TOS, TOS, WRK ; And
Recifarium 1:1224cf3799a5 192 Next
Recifarium 0:df922596d756 193
Recifarium 0:df922596d756 194 ;-(XOR)-----------------------------( x1 x2 -- x3 )
Recifarium 0:df922596d756 195 LXor LINK LAnd ; Link
Recifarium 0:df922596d756 196 DCB 3, "XOR"
Recifarium 1:1224cf3799a5 197 Xor DCD xXor
Recifarium 0:df922596d756 198 xXor POP {WRK} ; Get second parameter
Recifarium 0:df922596d756 199 EORS TOS, TOS, WRK ; Xor
Recifarium 1:1224cf3799a5 200 Next
Recifarium 0:df922596d756 201
Recifarium 0:df922596d756 202 ;-(0<)------------------------------( n -- f)
Recifarium 0:df922596d756 203 LIsNeg LINK LXor ; Link
Recifarium 1:1224cf3799a5 204 DCB 2, "0<"
Recifarium 1:1224cf3799a5 205 IsNeg DCD xIsNeg
Recifarium 0:df922596d756 206 xIsNeg ASRS TOS, TOS, #31 ; Extend the sign True=FFFFFFFF False=00000000
Recifarium 1:1224cf3799a5 207 Next
Recifarium 0:df922596d756 208
Recifarium 0:df922596d756 209 ;-(0=)------------------------------( n -- f )
Recifarium 0:df922596d756 210 LIsNull LINK LIsNeg ; Link
Recifarium 0:df922596d756 211 DCB 2, "0="
Recifarium 1:1224cf3799a5 212 IsNull DCD xIsNull
Recifarium 0:df922596d756 213 xIsNull MOVS TOS,TOS ; test the value
Recifarium 0:df922596d756 214 BEQ Isnull1
Recifarium 0:df922596d756 215 SUBS TOS, TOS ; False
Recifarium 0:df922596d756 216 B IsNull2
Recifarium 0:df922596d756 217 Isnull1 SUBS TOS,TOS,#1 ; True
Recifarium 1:1224cf3799a5 218 IsNull2 Next
Recifarium 0:df922596d756 219
Recifarium 0:df922596d756 220 ;-(0>)------------------------------( n -- f )
Recifarium 0:df922596d756 221 LIsPos LINK LIsNull ; Link
Recifarium 0:df922596d756 222 DCB 2, "0>"
Recifarium 1:1224cf3799a5 223 IsPos DCD xIsPos
Recifarium 0:df922596d756 224 xIsPos MOVS TOS,TOS
Recifarium 0:df922596d756 225 LDR TOS,=0x0 ; False
Recifarium 1:1224cf3799a5 226 BMI IsPos1
Recifarium 1:1224cf3799a5 227 BEQ IsPos1
Recifarium 0:df922596d756 228 SUBS TOS,TOS,#1 ; True
Recifarium 1:1224cf3799a5 229 IsPos1 Next
Recifarium 0:df922596d756 230
Recifarium 0:df922596d756 231 LTORG
Recifarium 0:df922596d756 232 ;-(EXECUTE)-------------------------( xt -- )
Recifarium 0:df922596d756 233 LExec LINK LIsPos ; Link
Recifarium 1:1224cf3799a5 234 DCB 7, "EXECUTE"
Recifarium 1:1224cf3799a5 235 Execute DCD xExec
Recifarium 1:1224cf3799a5 236 xExec MOVS WRK,TOS ; Get Code field address
Recifarium 1:1224cf3799a5 237 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 238 LDR WRK2,[WRK] ; Get address to be executed
Recifarium 1:1224cf3799a5 239 BX WRK2 ; And go
Recifarium 0:df922596d756 240
Recifarium 0:df922596d756 241 ;-(DROP)-----------------------------(x -- )
Recifarium 0:df922596d756 242 LDrop LINK LExec ; Link
Recifarium 1:1224cf3799a5 243 DCB 4, "DROP"
Recifarium 1:1224cf3799a5 244 Drop DCD xDrop
Recifarium 0:df922596d756 245 xDrop POP {TOS} ; Get previous element
Recifarium 1:1224cf3799a5 246 Next
Recifarium 0:df922596d756 247
Recifarium 0:df922596d756 248 ;-(2DROP)---------------------------( x1 x2 -- )
Recifarium 0:df922596d756 249 L2Drop LINK LDrop ; Link
Recifarium 1:1224cf3799a5 250 DCB 5, "2DROP"
Recifarium 1:1224cf3799a5 251 TDrop DCD x2Drop
Recifarium 0:df922596d756 252 x2Drop POP {TOS} ; Get previous element
Recifarium 0:df922596d756 253 POP {TOS} ; Get previous element
Recifarium 1:1224cf3799a5 254 Next
Recifarium 0:df922596d756 255
Recifarium 0:df922596d756 256 ;-(SWAP)----------------------------( x1 x2 -- x2 x1 )
Recifarium 0:df922596d756 257 LSwap LINK L2Drop ; Link
Recifarium 0:df922596d756 258 DCB 4, "SWAP"
Recifarium 1:1224cf3799a5 259 Swap DCD xSwap
Recifarium 0:df922596d756 260 xSwap POP {WRK} ; Get x1
Recifarium 0:df922596d756 261 PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 262 MOVS TOS,WRK ; Put x1
Recifarium 1:1224cf3799a5 263 Next
Recifarium 0:df922596d756 264
Recifarium 0:df922596d756 265 ;-(OVER)----------------------------( x1 x2 -- x1 x2 x1 )
Recifarium 0:df922596d756 266 LOver LINK LSwap ; Link
Recifarium 1:1224cf3799a5 267 DCB 4, "OVER"
Recifarium 1:1224cf3799a5 268 Over DCD xOver
Recifarium 0:df922596d756 269 xOver PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 270 LDR TOS,[sp,#4] ; Get x1
Recifarium 1:1224cf3799a5 271 Next
Recifarium 0:df922596d756 272
Recifarium 0:df922596d756 273 ;-(ROT)-----------------------------( x1 x2 x3 -- x2 x3 x1 )
Recifarium 0:df922596d756 274 LRot LINK LOver ; Link
Recifarium 0:df922596d756 275 DCB 3, "ROT"
Recifarium 1:1224cf3799a5 276 Rot DCD xRot
Recifarium 0:df922596d756 277 xRot POP {WRK} ; Get x2
Recifarium 0:df922596d756 278 POP {WRK2} ; Get x1
Recifarium 0:df922596d756 279 PUSH {WRK} ; Put x2
Recifarium 0:df922596d756 280 PUSH {TOS} ; Put x3
Recifarium 0:df922596d756 281 MOV TOS,WRK2 ; Put x1
Recifarium 1:1224cf3799a5 282 Next
Recifarium 0:df922596d756 283
Recifarium 0:df922596d756 284 ;-(-ROT)-----------------------------( x1 x2 x3 -- x3 x1 x2 )
Recifarium 0:df922596d756 285 LMRot LINK LRot ; Link
Recifarium 0:df922596d756 286 DCB 4, "-ROT"
Recifarium 1:1224cf3799a5 287 MRot DCD xMRot
Recifarium 0:df922596d756 288 xMRot POP {WRK} ; Get x2
Recifarium 0:df922596d756 289 POP {WRK2} ; Get x1
Recifarium 0:df922596d756 290 PUSH {TOS} ; Put x3
Recifarium 0:df922596d756 291 PUSH {WRK2} ; Put x1
Recifarium 0:df922596d756 292 MOV TOS,WRK ; Put x2
Recifarium 1:1224cf3799a5 293 Next
Recifarium 0:df922596d756 294
Recifarium 0:df922596d756 295 ;-(NIP)-----------------------------( x1 x2 -- x2 )
Recifarium 0:df922596d756 296 LNip LINK LMRot ; Link
Recifarium 1:1224cf3799a5 297 DCB 3, "NIP"
Recifarium 1:1224cf3799a5 298 Nip DCD xNip
Recifarium 0:df922596d756 299 xNip POP {WRK} ; Discard x1
Recifarium 1:1224cf3799a5 300 Next
Recifarium 0:df922596d756 301
Recifarium 0:df922596d756 302 ;-(TUCK)-----------------------------( x1 x2 -- x2 x1 x2 )
Recifarium 0:df922596d756 303 LTuck LINK LNip ; Link
Recifarium 0:df922596d756 304 DCB 4, "TUCK"
Recifarium 1:1224cf3799a5 305 Tuck DCD xTuck
Recifarium 0:df922596d756 306 xTuck POP {WRK} ; Get x1
Recifarium 0:df922596d756 307 PUSH {TOS} ; Put x2
Recifarium 0:df922596d756 308 PUSH {WRK} ; Put x1
Recifarium 1:1224cf3799a5 309 Next
Recifarium 0:df922596d756 310
Recifarium 0:df922596d756 311 ;-(+)-------------------------------( n1|u1 n2|u2 -- n3|u3 )
Recifarium 0:df922596d756 312 LPlus LINK LTuck ; Link
Recifarium 1:1224cf3799a5 313 DCB 1, "+"
Recifarium 1:1224cf3799a5 314 Plus DCD xPlus
Recifarium 0:df922596d756 315 xPlus POP {WRK} ; Get n1|u1
Recifarium 0:df922596d756 316 ADDS TOS, TOS, WRK ; Add n2|u2
Recifarium 1:1224cf3799a5 317 Next
Recifarium 0:df922596d756 318
Recifarium 0:df922596d756 319 ;-(-)-------------------------------( n1|u1 n2|u2 -- n3|u3 )
Recifarium 0:df922596d756 320 LMinus LINK LPlus ; Link
Recifarium 1:1224cf3799a5 321 DCB 1, "-"
Recifarium 1:1224cf3799a5 322 Minus DCD xMinus
Recifarium 0:df922596d756 323 xMinus POP {WRK} ; Get n1|u1
Recifarium 0:df922596d756 324 SUBS TOS, WRK, TOS ; Substract from TOS
Recifarium 1:1224cf3799a5 325 Next
Recifarium 0:df922596d756 326
Recifarium 0:df922596d756 327 ;-(2*)------------------------------
Recifarium 0:df922596d756 328 LTwosta LINK LMinus ; Link
Recifarium 1:1224cf3799a5 329 DCB 2, "2*"
Recifarium 1:1224cf3799a5 330 TwoStar DCD xTwoStar
Recifarium 1:1224cf3799a5 331 xTwoStar LSLS TOS, TOS, #1 ; Shift right one bit
Recifarium 1:1224cf3799a5 332 Next
Recifarium 0:df922596d756 333
Recifarium 0:df922596d756 334 ;-(2/)------------------------------
Recifarium 0:df922596d756 335 LTwosla LINK LTwosta ; Link
Recifarium 1:1224cf3799a5 336 DCB 2, "2/"
Recifarium 1:1224cf3799a5 337 TwoSla DCD xTwoSla
Recifarium 1:1224cf3799a5 338 xTwoSla ASRS TOS, TOS, #1 ; Shift left one bit
Recifarium 1:1224cf3799a5 339 Next
Recifarium 0:df922596d756 340
Recifarium 0:df922596d756 341 ;-(4*)------------------------------
Recifarium 0:df922596d756 342 LFoursta LINK LTwosla ; Link
Recifarium 1:1224cf3799a5 343 DCB 2, "4*"
Recifarium 1:1224cf3799a5 344 Foursta DCD xFoursta
Recifarium 0:df922596d756 345 xFoursta LSLS TOS, TOS, #2 ; Shift two bits
Recifarium 1:1224cf3799a5 346 Next
Recifarium 0:df922596d756 347
Recifarium 0:df922596d756 348 ;-(4/)------------------------------
Recifarium 0:df922596d756 349 L4Slash LINK LFoursta ; Link
Recifarium 1:1224cf3799a5 350 DCB 2, "4/"
Recifarium 1:1224cf3799a5 351 Slash4 DCD xSlash4
Recifarium 0:df922596d756 352 xSlash4 ASRS TOS, TOS, #2 ; Shift two bits
Recifarium 1:1224cf3799a5 353 Next
Recifarium 0:df922596d756 354
Recifarium 0:df922596d756 355 ;-(LSHIFT)--------------------------(x1,u --- x2)
Recifarium 1:1224cf3799a5 356 LLShift LINK L4Slash ; Link
Recifarium 1:1224cf3799a5 357 DCB 6, "LSHIFT"
Recifarium 1:1224cf3799a5 358 LShift DCD xLShift
Recifarium 1:1224cf3799a5 359 xLShift POP {WRK} ; Get x1
Recifarium 0:df922596d756 360 LSLS WRK, WRK, TOS ; Shift x1 u place to the left
Recifarium 0:df922596d756 361 MOVS TOS, WRK
Recifarium 1:1224cf3799a5 362 Next
Recifarium 0:df922596d756 363
Recifarium 0:df922596d756 364 ;-(RSHIFT)--------------------------(x1,u --- x2)
Recifarium 1:1224cf3799a5 365 LRShift LINK LLShift ; Link
Recifarium 1:1224cf3799a5 366 DCB 6, "RSHIFT"
Recifarium 1:1224cf3799a5 367 RShift DCD xRShift
Recifarium 1:1224cf3799a5 368 xRShift POP {WRK} ; Get x1
Recifarium 0:df922596d756 369 LSRS WRK, WRK, TOS ; Shift x1 u place to the right
Recifarium 0:df922596d756 370 MOVS TOS, WRK
Recifarium 1:1224cf3799a5 371 Next
Recifarium 0:df922596d756 372
Recifarium 0:df922596d756 373 ;-(@)-------------------------------( a -- x )
Recifarium 0:df922596d756 374 LAt LINK LRShift ; Link
Recifarium 1:1224cf3799a5 375 DCB 1, "@"
Recifarium 1:1224cf3799a5 376 At DCD xAt
Recifarium 0:df922596d756 377 xAt LDR TOS, [TOS] ; Get the value pointed by TOS
Recifarium 1:1224cf3799a5 378 Next
Recifarium 0:df922596d756 379
Recifarium 0:df922596d756 380 ;-(C@)------------------------------( a -- c )
Recifarium 0:df922596d756 381 LCAt LINK LAt ; Link
Recifarium 1:1224cf3799a5 382 DCB 2, "C@"
Recifarium 1:1224cf3799a5 383 CAt DCD xCAt
Recifarium 0:df922596d756 384 xCAt LDRB TOS, [TOS] ; Get the caracter pointed by TOS
Recifarium 1:1224cf3799a5 385 Next
Recifarium 0:df922596d756 386
Recifarium 0:df922596d756 387 ;-(H@)------------------------------( a -- h )
Recifarium 0:df922596d756 388 LHAt LINK LCAt ; Link
Recifarium 1:1224cf3799a5 389 DCB 2, "H@"
Recifarium 1:1224cf3799a5 390 HAt DCD xHAt
Recifarium 0:df922596d756 391 xHAt LDRH TOS, [TOS] ; Get the halfword pointed by TOS
Recifarium 1:1224cf3799a5 392 Next
Recifarium 0:df922596d756 393
Recifarium 0:df922596d756 394 ;-(!)-------------------------------(word,address --)
Recifarium 0:df922596d756 395 LStore LINK LHAt ; Link
Recifarium 1:1224cf3799a5 396 DCB 1, "!"
Recifarium 1:1224cf3799a5 397 Store DCD xStore
Recifarium 0:df922596d756 398 xStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 399 STR WRK, [TOS] ; Store word where TOS point to
Recifarium 0:df922596d756 400 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 401 Next
Recifarium 0:df922596d756 402
Recifarium 0:df922596d756 403 ;-(C!)------------------------------(char,addr--)
Recifarium 0:df922596d756 404 LCStore LINK LStore ; Link
Recifarium 1:1224cf3799a5 405 DCB 2, "C!"
Recifarium 1:1224cf3799a5 406 CStore DCD xCStore
Recifarium 0:df922596d756 407 xCStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 408 STRB WRK, [TOS] ; Store Character value where TOS point to
Recifarium 0:df922596d756 409 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 410 Next
Recifarium 0:df922596d756 411
Recifarium 0:df922596d756 412 ;-(H!)------------------------------(halfword,address --)
Recifarium 0:df922596d756 413 LHStore LINK LCStore ; Link
Recifarium 0:df922596d756 414 DCB 2 ; Length
Recifarium 0:df922596d756 415 DCB "H!"
Recifarium 1:1224cf3799a5 416 HStore DCD xHStore
Recifarium 0:df922596d756 417 xHStore POP {WRK} ; Get value to store
Recifarium 0:df922596d756 418 STRH WRK, [TOS] ; Store Halfword where TOS point to
Recifarium 0:df922596d756 419 POP {TOS}
Recifarium 1:1224cf3799a5 420 Next
Recifarium 0:df922596d756 421
Recifarium 0:df922596d756 422 ;-(>R)------------------------------( n -- R:n)
Recifarium 0:df922596d756 423 LToR LINK LHStore ; Link
Recifarium 1:1224cf3799a5 424 DCB 2+Cmponly,">R"
Recifarium 1:1224cf3799a5 425 ToR DCD xToR
Recifarium 1:1224cf3799a5 426 xToR STM RPTR!,{TOS} ; Put TOS on Nexturn stack
Recifarium 1:1224cf3799a5 427 ; & increment RPTR
Recifarium 0:df922596d756 428 POP {TOS} ; update TOS
Recifarium 1:1224cf3799a5 429 Next
Recifarium 0:df922596d756 430
Recifarium 0:df922596d756 431 ;-(R>)------------------------------(R:n -- n)
Recifarium 0:df922596d756 432 LFromR LINK LToR ; Link
Recifarium 0:df922596d756 433 DCB 2, "R>"
Recifarium 1:1224cf3799a5 434 FromR DCD xFromR
Recifarium 0:df922596d756 435 xFromR PUSH {TOS} ; Make room
Recifarium 0:df922596d756 436 SUBS RPTR, RPTR, #4 ; Prepare to collect
Recifarium 0:df922596d756 437 LDR TOS, [RPTR] ; Collect value
Recifarium 1:1224cf3799a5 438 Next
Recifarium 0:df922596d756 439 ;-(R@)------------------------------
Recifarium 0:df922596d756 440 LRAt LINK LFromR ; Link
Recifarium 0:df922596d756 441 DCB 2, "R@"
Recifarium 1:1224cf3799a5 442 RAt DCD xRAt
Recifarium 0:df922596d756 443 xRAt PUSH {TOS} ; Make room
Recifarium 1:1224cf3799a5 444 MOVS TOS, RPTR ; Collect pointer
Recifarium 0:df922596d756 445 SUBS TOS, #4 ; Point to previous word
Recifarium 0:df922596d756 446 LDR TOS,[TOS] ; Get value
Recifarium 1:1224cf3799a5 447 Next
Recifarium 0:df922596d756 448 ;-(NOT)-----------------------------
Recifarium 0:df922596d756 449 LNot LINK LRAt ; Link
Recifarium 1:1224cf3799a5 450 DCB 3, "NOT"
Recifarium 1:1224cf3799a5 451 Not DCD xNot
Recifarium 0:df922596d756 452 xNot MVNS TOS, TOS ; move not
Recifarium 1:1224cf3799a5 453 Next
Recifarium 0:df922596d756 454
Recifarium 1:1224cf3799a5 455 ;-(branch)-------------------------- Branch & ZBranch use word address
Recifarium 1:1224cf3799a5 456 ; Headerless
Recifarium 1:1224cf3799a5 457 Bra DCD xBra
Recifarium 1:1224cf3799a5 458 xBra LDR IPTR, [IPTR] ; Get the target address
Recifarium 1:1224cf3799a5 459 Next
Recifarium 0:df922596d756 460
Recifarium 0:df922596d756 461 ;-(Zbranch)-------------------------
Recifarium 1:1224cf3799a5 462 ; Headerless
Recifarium 1:1224cf3799a5 463 ZBra DCD xZBra
Recifarium 0:df922596d756 464 xZBra TST TOS,TOS ; Update flags
Recifarium 0:df922596d756 465 POP {TOS} ;
Recifarium 0:df922596d756 466 BEQ xBra ; Take the branch if TOS = 0
Recifarium 1:1224cf3799a5 467 ADDS IPTR, #4 ; or jump over the address
Recifarium 1:1224cf3799a5 468 Next
Recifarium 0:df922596d756 469
Recifarium 0:df922596d756 470 ;-(NEGATE)--------------------------(n -- -n)
Recifarium 1:1224cf3799a5 471 LNegate LINK LNot ; Link
Recifarium 1:1224cf3799a5 472 DCB 6, "NEGATE"
Recifarium 1:1224cf3799a5 473 Neg DCD xNeg
Recifarium 0:df922596d756 474 xNeg MVNS TOS, TOS ; Move NOT signed
Recifarium 1:1224cf3799a5 475 ADDS TOS, #1 ; 2's complement
Recifarium 1:1224cf3799a5 476 Next
Recifarium 0:df922596d756 477
Recifarium 0:df922596d756 478 ;-(ABS)-----------------------------(n -- |n|)
Recifarium 0:df922596d756 479 LAbs LINK LNegate ; Link
Recifarium 0:df922596d756 480 DCB 3, "ABS"
Recifarium 1:1224cf3799a5 481 Abs DCD xAbs
Recifarium 0:df922596d756 482 xAbs TST TOS, TOS ; Test TOS
Recifarium 0:df922596d756 483 BPL Abs1 ; If positive do nothing
Recifarium 0:df922596d756 484 MOVS WRK, #0
Recifarium 0:df922596d756 485 SUBS TOS, WRK, TOS ; TOS = 0 - TOS
Recifarium 1:1224cf3799a5 486 Abs1 Next
Recifarium 0:df922596d756 487
Recifarium 0:df922596d756 488 ;-(MAX)-----------------------------(n1, n2 -- Max(n1,n2))
Recifarium 0:df922596d756 489 LMax LINK LAbs ; Link
Recifarium 0:df922596d756 490 DCB 3, "MAX"
Recifarium 1:1224cf3799a5 491 Max DCD xMax
Recifarium 0:df922596d756 492 xMax POP {WRK}
Recifarium 0:df922596d756 493 CMP WRK, TOS
Recifarium 0:df922596d756 494 BLT xMax1
Recifarium 0:df922596d756 495 MOVS TOS, WRK
Recifarium 1:1224cf3799a5 496 xMax1 Next
Recifarium 0:df922596d756 497
Recifarium 0:df922596d756 498 ;-(MIN)-----------------------------(n1, n2 -- Min(n1,n2))
Recifarium 0:df922596d756 499 LMin LINK LMax ; Link
Recifarium 0:df922596d756 500 DCB 3, "MIN"
Recifarium 1:1224cf3799a5 501 Min DCD xMin
Recifarium 0:df922596d756 502 xMin POP {WRK}
Recifarium 0:df922596d756 503 CMP WRK, TOS
Recifarium 0:df922596d756 504 BGT xMin1
Recifarium 0:df922596d756 505 MOVS TOS, WRK
Recifarium 1:1224cf3799a5 506 xMin1 Next
Recifarium 0:df922596d756 507
Recifarium 0:df922596d756 508 ;-(WITHIN)--------------------------
Recifarium 0:df922596d756 509 LWithin LINK LMin ; Link
Recifarium 0:df922596d756 510 DCB 6, "WITHIN"
Recifarium 1:1224cf3799a5 511 Within DCD doCol
Recifarium 1:1224cf3799a5 512 DCD Over, Minus, ToR ; : Within Over - >R - R> U< ;
Recifarium 1:1224cf3799a5 513 DCD Minus, FromR, ULess ;
Recifarium 1:1224cf3799a5 514 DCD Exit
Recifarium 0:df922596d756 515
Recifarium 0:df922596d756 516 ;-(=)-------------------------------
Recifarium 0:df922596d756 517 LEq LINK LWithin ; Link
Recifarium 0:df922596d756 518 DCB 1, "="
Recifarium 1:1224cf3799a5 519 Eq DCD xEq
Recifarium 0:df922596d756 520 xEq POP {WRK}
Recifarium 0:df922596d756 521 CMP WRK,TOS
Recifarium 0:df922596d756 522 LDR TOS, =0x0 ; False flag
Recifarium 0:df922596d756 523 BNE xEq1
Recifarium 0:df922596d756 524 SUBS TOS, #1 ; True
Recifarium 1:1224cf3799a5 525 xEq1 Next
Recifarium 1:1224cf3799a5 526
Recifarium 1:1224cf3799a5 527 ;-(<>)-------------------------------
Recifarium 1:1224cf3799a5 528 LNEq LINK LEq ; Link
Recifarium 1:1224cf3799a5 529 DCB 2, "<>"
Recifarium 1:1224cf3799a5 530 NEq DCD doCol
Recifarium 1:1224cf3799a5 531 DCD Eq, Not
Recifarium 1:1224cf3799a5 532 DCD Exit
Recifarium 0:df922596d756 533
Recifarium 0:df922596d756 534 ;-(<)-------------------------------
Recifarium 1:1224cf3799a5 535 LLt LINK LNEq ; Link
Recifarium 0:df922596d756 536 DCB 1, "<"
Recifarium 1:1224cf3799a5 537 Lt DCD xLt
Recifarium 0:df922596d756 538 xLt POP {WRK}
Recifarium 0:df922596d756 539 CMP WRK,TOS
Recifarium 1:1224cf3799a5 540 LDR TOS, =0x0 ; False flag
Recifarium 0:df922596d756 541 BGE xLt1
Recifarium 1:1224cf3799a5 542 SUBS TOS, #1 ; True
Recifarium 1:1224cf3799a5 543 xLt1 Next
Recifarium 0:df922596d756 544
Recifarium 0:df922596d756 545 ;-(>)-------------------------------
Recifarium 0:df922596d756 546 LGt LINK LLt ; Link
Recifarium 0:df922596d756 547 DCB 1, ">"
Recifarium 1:1224cf3799a5 548 Gt DCD xGt
Recifarium 0:df922596d756 549 xGt POP {WRK}
Recifarium 0:df922596d756 550 CMP WRK,TOS
Recifarium 1:1224cf3799a5 551 LDR TOS, =0x0 ; False flag
Recifarium 0:df922596d756 552 BLE xGt1
Recifarium 1:1224cf3799a5 553 SUBS TOS, #1 ; True
Recifarium 1:1224cf3799a5 554 xGt1 Next
Recifarium 0:df922596d756 555
Recifarium 0:df922596d756 556 ;-(INVERT)--------------------------
Recifarium 0:df922596d756 557 LInvert LINK LGt ; Link
Recifarium 1:1224cf3799a5 558 DCB 6, "INVERT"
Recifarium 1:1224cf3799a5 559 Invert DCD xInvert
Recifarium 0:df922596d756 560 xInvert MVNS TOS, TOS
Recifarium 1:1224cf3799a5 561 Next
Recifarium 0:df922596d756 562
Recifarium 1:1224cf3799a5 563 ;-(?DUP)----------------------------(n -- n,n | 0)
Recifarium 0:df922596d756 564 LDupNZ LINK LInvert ; Link
Recifarium 0:df922596d756 565 DCB 4, "?DUP"
Recifarium 1:1224cf3799a5 566 DupNZ DCD xDupNZ
Recifarium 0:df922596d756 567 xDupNZ TST TOS, TOS ; Test TOS
Recifarium 0:df922596d756 568 BEQ DupNZ1 ; If 0 do nothing
Recifarium 0:df922596d756 569 PUSH {TOS} ; Duplicate
Recifarium 1:1224cf3799a5 570 DupNZ1 Next
Recifarium 0:df922596d756 571
Recifarium 0:df922596d756 572 ;-(*)-------------------------------
Recifarium 0:df922596d756 573 LMul LINK LDupNZ ; Link
Recifarium 1:1224cf3799a5 574 DCB 1, "*"
Recifarium 1:1224cf3799a5 575 Mul DCD xMul
Recifarium 0:df922596d756 576 xMul POP {WRK} ; Get 2nd Element
Recifarium 0:df922596d756 577 MULS TOS, WRK, TOS ; Multiply
Recifarium 1:1224cf3799a5 578 Next
Recifarium 0:df922596d756 579
Recifarium 1:1224cf3799a5 580 ;-(*/)-------------------------------
Recifarium 1:1224cf3799a5 581 LMSlash LINK LMul ; Link
Recifarium 1:1224cf3799a5 582 DCB 2, "*/"
Recifarium 1:1224cf3799a5 583 MSlash DCD xMSlash
Recifarium 1:1224cf3799a5 584 xMSlash
Recifarium 1:1224cf3799a5 585
Recifarium 1:1224cf3799a5 586 Next
Recifarium 1:1224cf3799a5 587
Recifarium 1:1224cf3799a5 588
Recifarium 1:1224cf3799a5 589 ;-(+!)------------------------------(n,addr --)
Recifarium 1:1224cf3799a5 590 LAddSto LINK LMSlash ; Link
Recifarium 0:df922596d756 591 DCB 2, "+!"
Recifarium 1:1224cf3799a5 592 AddSto DCD xAddSto
Recifarium 0:df922596d756 593 xAddSto POP {WRK}
Recifarium 0:df922596d756 594 LDR WRK2, [TOS]
Recifarium 1:1224cf3799a5 595 ADDS WRK, WRK2
Recifarium 0:df922596d756 596 STR WRK, [TOS]
Recifarium 0:df922596d756 597 POP {TOS}
Recifarium 1:1224cf3799a5 598 Next
Recifarium 0:df922596d756 599
Recifarium 0:df922596d756 600 ;-(-!)------------------------------
Recifarium 0:df922596d756 601 LSubSto LINK LAddSto ; Link
Recifarium 0:df922596d756 602 DCB 2, "-!"
Recifarium 1:1224cf3799a5 603 SubSto DCD xSubSto
Recifarium 0:df922596d756 604 xSubSto POP {WRK}
Recifarium 0:df922596d756 605 LDR WRK2, [TOS]
Recifarium 1:1224cf3799a5 606 SUBS WRK, WRK2
Recifarium 0:df922596d756 607 STR WRK, [TOS]
Recifarium 0:df922596d756 608 POP {TOS}
Recifarium 1:1224cf3799a5 609 Next
Recifarium 0:df922596d756 610
Recifarium 0:df922596d756 611 ;-(CELL)---------------------------
Recifarium 0:df922596d756 612 LCell LINK LSubSto ; Link
Recifarium 1:1224cf3799a5 613 DCB 4, "CELL"
Recifarium 1:1224cf3799a5 614 Cell DCD doCon
Recifarium 1:1224cf3799a5 615 DCD 4
Recifarium 0:df922596d756 616
Recifarium 0:df922596d756 617 ;-(SP0)---------------------------
Recifarium 0:df922596d756 618 LSP0 LINK LCell ; Link
Recifarium 0:df922596d756 619 DCB 3, "SP0"
Recifarium 1:1224cf3799a5 620 Sp0 DCD xSp0
Recifarium 1:1224cf3799a5 621 xSp0 SUBS WRK, WRK ; Cortex M0+ initial stack value @address 0
Recifarium 0:df922596d756 622 LDR WRK, [WRK]
Recifarium 0:df922596d756 623 PUSH {TOS}
Recifarium 0:df922596d756 624 MOV TOS, WRK
Recifarium 1:1224cf3799a5 625 Next
Recifarium 0:df922596d756 626
Recifarium 0:df922596d756 627 ;-(SP@)-----------------------------
Recifarium 0:df922596d756 628 LSPAt LINK LSP0 ; Link
Recifarium 0:df922596d756 629 DCB 3, "SP@"
Recifarium 1:1224cf3799a5 630 SpAt DCD xSpAt
Recifarium 0:df922596d756 631 xSpAt MOV WRK, sp ; Collect the value before push!
Recifarium 0:df922596d756 632 PUSH {TOS}
Recifarium 0:df922596d756 633 MOV TOS, WRK ; Update
Recifarium 1:1224cf3799a5 634 Next
Recifarium 0:df922596d756 635
Recifarium 1:1224cf3799a5 636 ;-(DEPTH)---------------------------: Depth SP@ SP0 - /4 ;
Recifarium 0:df922596d756 637 LDepth LINK LSPAt ; Link
Recifarium 0:df922596d756 638 DCB 5, "DEPTH"
Recifarium 1:1224cf3799a5 639 Depth DCD doCol
Recifarium 1:1224cf3799a5 640 DCD SpAt, Sp0, Swap
Recifarium 1:1224cf3799a5 641 DCD Minus, Slash4 ;
Recifarium 1:1224cf3799a5 642 DCD Exit
Recifarium 0:df922596d756 643
Recifarium 0:df922596d756 644 ;-(STATE)---------------------------
Recifarium 0:df922596d756 645 LState LINK LDepth ; Link
Recifarium 0:df922596d756 646 DCB 5, "STATE"
Recifarium 1:1224cf3799a5 647 State DCD doVar
Recifarium 1:1224cf3799a5 648 DCD AState
Recifarium 0:df922596d756 649
Recifarium 0:df922596d756 650 ;-(LATEST)--------------------------
Recifarium 0:df922596d756 651 LLatest LINK LState ; Link
Recifarium 0:df922596d756 652 DCB 6, "LATEST"
Recifarium 1:1224cf3799a5 653 Latest DCD doVar
Recifarium 1:1224cf3799a5 654 DCD DLatest
Recifarium 0:df922596d756 655
Recifarium 1:1224cf3799a5 656 ;-(HERE)----------------------------( - address)
Recifarium 0:df922596d756 657 LHere LINK LLatest ; Link
Recifarium 0:df922596d756 658 DCB 4, "HERE"
Recifarium 1:1224cf3799a5 659 Here DCD doVar
Recifarium 1:1224cf3799a5 660 DCD AHERE
Recifarium 1:1224cf3799a5 661
Recifarium 1:1224cf3799a5 662 ;-(DHERE)----------------------------( - address)
Recifarium 1:1224cf3799a5 663 LDHere LINK LHere ; Link
Recifarium 1:1224cf3799a5 664 DCB 5, "DHERE"
Recifarium 1:1224cf3799a5 665 DHere DCD doVar
Recifarium 1:1224cf3799a5 666 DCD ADHERE
Recifarium 1:1224cf3799a5 667
Recifarium 1:1224cf3799a5 668 ;-(CHERE)----------------------------( - address)
Recifarium 1:1224cf3799a5 669 LCHere LINK LDHere ; Link
Recifarium 1:1224cf3799a5 670 DCB 5, "CHERE"
Recifarium 1:1224cf3799a5 671 CHere DCD doVar
Recifarium 1:1224cf3799a5 672 DCD ACHERE
Recifarium 1:1224cf3799a5 673
Recifarium 0:df922596d756 674 ;-(BASE)----------------------------
Recifarium 1:1224cf3799a5 675 LBase LINK LCHere ; Link
Recifarium 0:df922596d756 676 DCB 4, "BASE"
Recifarium 1:1224cf3799a5 677 Base DCD doVar
Recifarium 1:1224cf3799a5 678 DCD VBase
Recifarium 1:1224cf3799a5 679 ;xBase PUSH {TOS}
Recifarium 1:1224cf3799a5 680 ; LDR TOS, =VBase ; Put address on TOS
Recifarium 1:1224cf3799a5 681 ; Next
Recifarium 0:df922596d756 682
Recifarium 0:df922596d756 683 ;-(msec)----------------------------
Recifarium 0:df922596d756 684 Lmsec LINK LBase ; Link
Recifarium 0:df922596d756 685 DCB 4, "msec"
Recifarium 1:1224cf3799a5 686 msec DCD xmsec
Recifarium 1:1224cf3799a5 687 xmsec LDR WRK, =2400
Recifarium 1:1224cf3799a5 688 msec1 SUBS WRK, #1 ; 1 Cycle
Recifarium 1:1224cf3799a5 689 BNE msec1 ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 690 SUBS TOS, #1 ; 1 cycle
Recifarium 0:df922596d756 691 BNE msec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 692 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 693 Next
Recifarium 0:df922596d756 694
Recifarium 0:df922596d756 695 ;-(10usec)--------------------------
Recifarium 0:df922596d756 696 Lusec LINK Lmsec ; Link
Recifarium 0:df922596d756 697 DCB 6, "10usec"
Recifarium 1:1224cf3799a5 698 usec DCD xusec
Recifarium 1:1224cf3799a5 699 xusec LDR WRK, =23
Recifarium 1:1224cf3799a5 700 usec1 SUBS WRK, #1 ; 1 Cycle
Recifarium 1:1224cf3799a5 701 BNE usec1 ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 702 SUBS TOS, #1 ; 1 cycle
Recifarium 1:1224cf3799a5 703 BNE xusec ; 2 cycles (taken) 1 cycle (not taken)
Recifarium 0:df922596d756 704 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 705 Next
Recifarium 0:df922596d756 706
Recifarium 1:1224cf3799a5 707 ;-(SNAP)----------------------------; Debug helper when nothing work! LPC8xx centric
Recifarium 1:1224cf3799a5 708 ;LSnap LINK Lusec ; dump hex value of TOS
Recifarium 1:1224cf3799a5 709 ; DCB 4, "SNAP"
Recifarium 1:1224cf3799a5 710 ;xSnap PUSH {TOS}
Recifarium 1:1224cf3799a5 711 ;ESnap MOVS r0,#8
Recifarium 1:1224cf3799a5 712 ;Snap0 PUSH {TOS}
Recifarium 1:1224cf3799a5 713 ; LSRS TOS, TOS, #28
Recifarium 1:1224cf3799a5 714 ; CMP TOS, #0x9
Recifarium 1:1224cf3799a5 715 ; BGT Snap1
Recifarium 1:1224cf3799a5 716 ; ADDS TOS, #"0"
Recifarium 1:1224cf3799a5 717 ; B Snap2
Recifarium 1:1224cf3799a5 718 ;Snap1 ADDS TOS, #("A"-0xa)
Recifarium 1:1224cf3799a5 719 ;Snap2 LDR r1,=(USART0)
Recifarium 1:1224cf3799a5 720 ;Snap3 LDR r2,[r1,#STAT]
Recifarium 1:1224cf3799a5 721 ; LSRS r2,#3
Recifarium 1:1224cf3799a5 722 ; BCC Snap3 ; ? ready to Xmit
Recifarium 1:1224cf3799a5 723 ; STR TOS,[r1,#TXDAT]
Recifarium 1:1224cf3799a5 724 ; POP {TOS}
Recifarium 1:1224cf3799a5 725 ; LSLS TOS,#4
Recifarium 1:1224cf3799a5 726 ; SUBS r0,#1
Recifarium 1:1224cf3799a5 727 ; BNE Snap0 ; =0?
Recifarium 1:1224cf3799a5 728 ; POP {TOS}
Recifarium 1:1224cf3799a5 729 ; Next
Recifarium 0:df922596d756 730
Recifarium 0:df922596d756 731 ;-(COUNT)---------------------------(caddr -- addr,count)
Recifarium 1:1224cf3799a5 732 LCount LINK Lusec
Recifarium 0:df922596d756 733 DCB 5, "COUNT"
Recifarium 1:1224cf3799a5 734 Count DCD xCount
Recifarium 0:df922596d756 735 xCount MOVS WRK, TOS ;
Recifarium 0:df922596d756 736 ADDS TOS, #1 ; Point to 1st char
Recifarium 0:df922596d756 737 PUSH {TOS} ; Put it on the stack
Recifarium 0:df922596d756 738 LDRB TOS, [WRK] ; Get length
Recifarium 1:1224cf3799a5 739 Next
Recifarium 0:df922596d756 740
Recifarium 0:df922596d756 741 ;-(FIND)----------------------------(caddr -- caddr|xt,flag )
Recifarium 0:df922596d756 742 ; flag=0 not found, =1 immediate, =-1 not immediate
Recifarium 0:df922596d756 743 LFind LINK LCount
Recifarium 1:1224cf3799a5 744 DCB 4, "FIND" ; May be has to be recoded in high level !
Recifarium 1:1224cf3799a5 745 Find DCD xFind
Recifarium 0:df922596d756 746 xFind LDR WRK2, =VLatest ; Get last entry pointer field
Recifarium 0:df922596d756 747 Find1 TST WRK2, WRK2 ; More words?
Recifarium 0:df922596d756 748 BEQ Find4 ; No we have to leave
Recifarium 0:df922596d756 749 PUSH {WRK2} ; save pointer
Recifarium 0:df922596d756 750 ADDS WRK2, #4 ; WRK2 point to counted string
Recifarium 0:df922596d756 751 LDRB WRK1, [WRK2] ; Get Lenght+flag from dictionnary
Recifarium 0:df922596d756 752 MOVS WRK0, #0x1F ; Flag mask
Recifarium 0:df922596d756 753 ANDS WRK1, WRK0 ; Discard flags
Recifarium 0:df922596d756 754 LDRB WRK0, [TOS] ; Get length of searched string
Recifarium 0:df922596d756 755 CMP WRK0, WRK1 ; Are they equals ?
Recifarium 0:df922596d756 756 BNE Find3 ; no , we have to test next word
Recifarium 0:df922596d756 757
Recifarium 0:df922596d756 758 PUSH {TOS}
Recifarium 0:df922596d756 759 Find1b ADDS TOS, #1 ; point to next char in input string
Recifarium 0:df922596d756 760 ADDS WRK2, #1 ; point to next char in dictionnary word
Recifarium 0:df922596d756 761 LDRB WRK0, [TOS] ; Get char in input string
Recifarium 0:df922596d756 762 LDRB WRK, [WRK2] ; Get char in dictionnary
Recifarium 0:df922596d756 763 CMP WRK0, WRK ; Are they equal
Recifarium 0:df922596d756 764 BNE Find2 ; no try another word
Recifarium 0:df922596d756 765
Recifarium 0:df922596d756 766 SUBS WRK1, #1 ; we start this loop with length in WRK1. It's our char counter
Recifarium 0:df922596d756 767 BNE Find1b ; We still have to compare more caracters
Recifarium 0:df922596d756 768
Recifarium 0:df922596d756 769 POP {TOS} ; Yes we find it
Recifarium 0:df922596d756 770 POP {WRK2} ; link fiel address of the word we have found
Recifarium 0:df922596d756 771 LDRB WRK, [WRK2, #4] ; Get flag+Length byte
Recifarium 1:1224cf3799a5 772 MOVS WRK0, Immed
Recifarium 0:df922596d756 773 ANDS WRK, WRK0 ; ?Immed
Recifarium 0:df922596d756 774 BNE Find1c ; Immed
Recifarium 0:df922596d756 775
Recifarium 0:df922596d756 776 SUBS TOS, TOS ; Not Immed
Recifarium 1:1224cf3799a5 777 SUBS TOS, #1 ; Flag=-1 not immed
Recifarium 0:df922596d756 778 B Find1d
Recifarium 0:df922596d756 779
Recifarium 0:df922596d756 780 Find1c MOVS TOS, #1 ; Flag= 1 immed
Recifarium 0:df922596d756 781 Find1d LDRB WRK, [WRK2, #4]
Recifarium 1:1224cf3799a5 782 MOVS WRK1, #0x1f ; Flag mask
Recifarium 1:1224cf3799a5 783 ANDS WRK, WRK1 ; get length
Recifarium 1:1224cf3799a5 784 ADDS WRK2, #8 ;
Recifarium 0:df922596d756 785 ADDS WRK2, WRK
Recifarium 1:1224cf3799a5 786 LSRS WRK2, #2 ; Round to a multiple
Recifarium 1:1224cf3799a5 787 LSLS WRK2, #2 ; of 2
Recifarium 0:df922596d756 788 PUSH {WRK2} ; Xt address
Recifarium 1:1224cf3799a5 789 B Find5 ; ( -- xt,1|-1)
Recifarium 0:df922596d756 790
Recifarium 0:df922596d756 791 Find2 POP {TOS} ; Restore the address of counted string we are looking for
Recifarium 0:df922596d756 792 Find3 POP {WRK2} ; Restore pointer of the linked chain
Recifarium 0:df922596d756 793 LDR WRK2,[WRK2] ; Link to next in dictionnary
Recifarium 0:df922596d756 794 B Find1 ; Try next one
Recifarium 0:df922596d756 795
Recifarium 0:df922596d756 796 Find4 PUSH {TOS} ; Leave the c-address
Recifarium 0:df922596d756 797 SUBS TOS, TOS ; Clear TOS (not found)
Recifarium 1:1224cf3799a5 798 Find5 Next
Recifarium 0:df922596d756 799
Recifarium 0:df922596d756 800 LTORG
Recifarium 0:df922596d756 801
Recifarium 0:df922596d756 802 ;-(ACCEPT)--------------------------( addr, len --- len2)
Recifarium 0:df922596d756 803 LAccept LINK LFind
Recifarium 0:df922596d756 804 DCB 6
Recifarium 0:df922596d756 805 DCB "ACCEPT"
Recifarium 1:1224cf3799a5 806 Accept DCD doCol
Recifarium 1:1224cf3799a5 807 DCD Zero, ToR ; Initial count=0
Recifarium 1:1224cf3799a5 808 DCD Swap ; ( len, addr --- R:0)
Recifarium 0:df922596d756 809 Accept1
Recifarium 1:1224cf3799a5 810 DCD Key ; ( len, addr, char --- R:count)
Recifarium 1:1224cf3799a5 811 DCD Dup, Bl, Lt ; Is it a control character?
Recifarium 0:df922596d756 812 ZBranch Accept3 ; No
Recifarium 0:df922596d756 813
Recifarium 1:1224cf3799a5 814 DCD Dup, Lit32, 8, Eq ; Is it a backspace?
Recifarium 0:df922596d756 815 ZBranch Accept2 ; No
Recifarium 0:df922596d756 816
Recifarium 1:1224cf3799a5 817 DCD FromR, Dup, Zero
Recifarium 1:1224cf3799a5 818 DCD Eq ; Begining of line?
Recifarium 1:1224cf3799a5 819 DCD Swap, ToR
Recifarium 0:df922596d756 820 ZBranch Accept1b ; No
Recifarium 0:df922596d756 821
Recifarium 1:1224cf3799a5 822 DCD Lit32,7, Emit, Drop ; Emit Bell and go to get next char
Recifarium 0:df922596d756 823 Branch Accept1
Recifarium 0:df922596d756 824
Recifarium 0:df922596d756 825 Accept1b
Recifarium 1:1224cf3799a5 826 DCD Dup,Emit, Bl, Emit, Emit
Recifarium 1:1224cf3799a5 827 DCD FromR, Minus1,ToR
Recifarium 1:1224cf3799a5 828 DCD Minus1
Recifarium 0:df922596d756 829 Branch Accept1
Recifarium 0:df922596d756 830 Accept2
Recifarium 1:1224cf3799a5 831 DCD Dup, Lit32, 13 ; Is it a Carriage Nexturn
Recifarium 1:1224cf3799a5 832 DCD Eq, Not
Recifarium 1:1224cf3799a5 833 ZBranch Accept4 ; Yes
Recifarium 1:1224cf3799a5 834
Recifarium 0:df922596d756 835 Accept3
Recifarium 1:1224cf3799a5 836 DCD Over, Over, Swap ; ( len , addr, char, char, addr--- R:count)
Recifarium 1:1224cf3799a5 837 DCD CStore ; ( len, addr, char---R:count)
Recifarium 1:1224cf3799a5 838 DCD Emit ; ( len, addr---R:count)
Recifarium 1:1224cf3799a5 839 DCD Plus1 ; ( len, addr+1---R:count)
Recifarium 1:1224cf3799a5 840 DCD FromR,Plus1, ToR ; ( len, addr+1---R:count+1)
Recifarium 0:df922596d756 841 Branch Accept1 ; go get next char
Recifarium 0:df922596d756 842 Accept4
Recifarium 1:1224cf3799a5 843 DCD TDrop, Drop, FromR ; (count)
Recifarium 1:1224cf3799a5 844 DCD Cr
Recifarium 1:1224cf3799a5 845 DCD Exit
Recifarium 0:df922596d756 846
Recifarium 1:1224cf3799a5 847 ;-(WORD)----------------------------(char --- cstring)
Recifarium 0:df922596d756 848 LWord LINK LAccept
Recifarium 0:df922596d756 849 DCB 4
Recifarium 1:1224cf3799a5 850 DCB "WORD" ; May be has to be recoded in high level
Recifarium 1:1224cf3799a5 851 Word DCD xWord
Recifarium 0:df922596d756 852 xWord LDR WRK, =(APAD)
Recifarium 0:df922596d756 853 LDR WRK1, =(TIB) ; Get char at address
Recifarium 1:1224cf3799a5 854 MOVS WRK2, WRK1 ; save TIB
Recifarium 1:1224cf3799a5 855 LDR WRK0, =(AtoIn)
Recifarium 0:df922596d756 856 LDR WRK0, [WRK0]
Recifarium 0:df922596d756 857 ADDS WRK1, WRK0 ; Point current char
Recifarium 0:df922596d756 858 LDR WRK0, =(AnTib)
Recifarium 0:df922596d756 859 LDR WRK0, [WRK0]
Recifarium 0:df922596d756 860 ADDS WRK2, WRK0 ; Point end of TIB
Recifarium 0:df922596d756 861 Word1 CMP WRK1, WRK2
Recifarium 0:df922596d756 862 BEQ Word3
Recifarium 0:df922596d756 863
Recifarium 0:df922596d756 864 LDRB WRK0,[WRK1] ; Get char
Recifarium 0:df922596d756 865 ADDS WRK1, #1 ; point to next char
Recifarium 0:df922596d756 866 CMP WRK0, TOS ; is it the delimiter?
Recifarium 0:df922596d756 867 BEQ Word1
Recifarium 0:df922596d756 868
Recifarium 0:df922596d756 869 Word2 ADDS WRK, #1 ; avance 1 byte in PAD
Recifarium 0:df922596d756 870 STRB WRK0, [WRK]
Recifarium 0:df922596d756 871 CMP WRK1, WRK2
Recifarium 0:df922596d756 872 BEQ Word3
Recifarium 0:df922596d756 873
Recifarium 0:df922596d756 874 LDRB WRK0,[WRK1] ; Get char
Recifarium 0:df922596d756 875 ADDS WRK1, #1 ; point to next char
Recifarium 0:df922596d756 876 CMP WRK0, TOS ; is it the delimiter?
Recifarium 0:df922596d756 877 BNE Word2 ;
Recifarium 0:df922596d756 878
Recifarium 1:1224cf3799a5 879 Word3 MOVS WRK0, #' ' ; Put a blank
Recifarium 0:df922596d756 880 STRB WRK0, [WRK, #1] ; at the end of string in pad
Recifarium 0:df922596d756 881 LDR TOS, =(APAD)
Recifarium 0:df922596d756 882 SUBS WRK, WRK, TOS ; Compute length
Recifarium 0:df922596d756 883 STRB WRK, [TOS] ; Put length at the beginning
Recifarium 0:df922596d756 884 ; of PAD
Recifarium 0:df922596d756 885 LDR WRK, =(TIB)
Recifarium 0:df922596d756 886 SUBS WRK1, WRK
Recifarium 0:df922596d756 887 LDR WRK, =(AtoIn)
Recifarium 0:df922596d756 888 STR WRK1, [WRK]
Recifarium 1:1224cf3799a5 889 Next
Recifarium 0:df922596d756 890 LTORG
Recifarium 0:df922596d756 891
Recifarium 0:df922596d756 892 ;-(WORDS)----------------------------()
Recifarium 0:df922596d756 893 LWords LINK LWord
Recifarium 0:df922596d756 894 DCB 5
Recifarium 0:df922596d756 895 DCB "WORDS"
Recifarium 1:1224cf3799a5 896 Words DCD doCol
Recifarium 1:1224cf3799a5 897 DCD Lit32
Recifarium 0:df922596d756 898 DCD VLatest ; ??????????????????????????????????????????????????????????????????
Recifarium 1:1224cf3799a5 899 Words1 DCD Dup, ToR
Recifarium 1:1224cf3799a5 900 DCD Lit32, 4, Plus
Recifarium 1:1224cf3799a5 901 DCD Count, Lit32, 0x1f, And
Recifarium 1:1224cf3799a5 902 DCD Type, Bl, Emit
Recifarium 1:1224cf3799a5 903 DCD FromR, At, Dup
Recifarium 0:df922596d756 904 ZBranch Words2
Recifarium 0:df922596d756 905 Branch Words1
Recifarium 1:1224cf3799a5 906 Words2 DCD Drop, Cr
Recifarium 1:1224cf3799a5 907 DCD Exit
Recifarium 0:df922596d756 908
Recifarium 0:df922596d756 909 ;-(TYPE)----------------------------(addr,number --)
Recifarium 0:df922596d756 910 LType LINK LWords
Recifarium 0:df922596d756 911 DCB 4
Recifarium 0:df922596d756 912 DCB "TYPE"
Recifarium 1:1224cf3799a5 913 Type DCD doCol
Recifarium 1:1224cf3799a5 914 Type1 DCD Dup ; (addr,number,number)
Recifarium 0:df922596d756 915 ZBranch Type2
Recifarium 0:df922596d756 916
Recifarium 1:1224cf3799a5 917 DCD Swap, Dup, CAt ; (number, addr, char)
Recifarium 1:1224cf3799a5 918 DCD Emit
Recifarium 1:1224cf3799a5 919 DCD Plus1, Swap, Minus1 ; (addr+1, number-1)
Recifarium 0:df922596d756 920 Branch Type1
Recifarium 0:df922596d756 921
Recifarium 1:1224cf3799a5 922 Type2 DCD TDrop ; ()
Recifarium 1:1224cf3799a5 923 DCD Exit
Recifarium 0:df922596d756 924
Recifarium 0:df922596d756 925 ;-(UM+)-----------------------------(number,number -- sum,carry)
Recifarium 0:df922596d756 926 LUMPlus LINK LType
Recifarium 0:df922596d756 927 DCB 3, "UM+"
Recifarium 1:1224cf3799a5 928 UMPlus DCD xUMPlus
Recifarium 0:df922596d756 929 xUMPlus POP {WRK}
Recifarium 0:df922596d756 930 SUBS WRK2, WRK2
Recifarium 0:df922596d756 931 ADDS WRK,WRK,TOS
Recifarium 0:df922596d756 932 BCC UMPlus1
Recifarium 0:df922596d756 933 ADDS WRK2, #1
Recifarium 0:df922596d756 934 UMPlus1 MOVS TOS, WRK2
Recifarium 0:df922596d756 935 PUSH {WRK}
Recifarium 1:1224cf3799a5 936 Next
Recifarium 0:df922596d756 937
Recifarium 0:df922596d756 938 ;-(D+)------------------------------(double,double -- double)
Recifarium 0:df922596d756 939 LDPlus LINK LUMPlus
Recifarium 0:df922596d756 940 DCB 2, "D+"
Recifarium 1:1224cf3799a5 941 DPlus DCD xDPlus
Recifarium 0:df922596d756 942 xDPlus POP {WRK} ; low1
Recifarium 0:df922596d756 943 POP {WRK1} ; high2
Recifarium 0:df922596d756 944 POP {WRK2} ; low2
Recifarium 0:df922596d756 945 ADDS WRK, WRK2 ; low1 + low2
Recifarium 0:df922596d756 946 ADCS TOS, WRK1 ; high1+ high2 +carry
Recifarium 0:df922596d756 947 PUSH {WRK}
Recifarium 1:1224cf3799a5 948 Next
Recifarium 0:df922596d756 949
Recifarium 0:df922596d756 950 ;-(D-)------------------------------(double,double -- double)
Recifarium 0:df922596d756 951 LDMinus LINK LDPlus
Recifarium 1:1224cf3799a5 952 DCB 2, "D-"
Recifarium 1:1224cf3799a5 953 DMinus DCD doCol
Recifarium 1:1224cf3799a5 954 DCD DNeg, DPlus
Recifarium 1:1224cf3799a5 955 DCD Exit
Recifarium 0:df922596d756 956
Recifarium 0:df922596d756 957 ;-(DNEGATE)-------------------------(double -- -double)
Recifarium 0:df922596d756 958 LDNeg LINK LDMinus
Recifarium 1:1224cf3799a5 959 DCB 7, "DNEGATE"
Recifarium 1:1224cf3799a5 960 DNeg DCD xDNeg
Recifarium 1:1224cf3799a5 961 xDNeg POP {WRK0}
Recifarium 1:1224cf3799a5 962 SUBS WRK1, WRK1
Recifarium 1:1224cf3799a5 963 MVNS WRK0, WRK0
Recifarium 1:1224cf3799a5 964 MVNS TOS, TOS
Recifarium 1:1224cf3799a5 965 ADDS WRK0, #1
Recifarium 1:1224cf3799a5 966 ADCS TOS, WRK1
Recifarium 1:1224cf3799a5 967 PUSH {WRK0}
Recifarium 1:1224cf3799a5 968 Next
Recifarium 0:df922596d756 969
Recifarium 0:df922596d756 970 ;-(S>D)-----------------------------(number -- double)
Recifarium 0:df922596d756 971 LStoD LINK LDNeg
Recifarium 0:df922596d756 972 DCB 3
Recifarium 0:df922596d756 973 DCB "S>D"
Recifarium 1:1224cf3799a5 974 StoD DCD xStoD
Recifarium 0:df922596d756 975 xStoD PUSH {TOS}
Recifarium 1:1224cf3799a5 976 ASRS TOS, #32 ; Extend sign
Recifarium 1:1224cf3799a5 977 Next
Recifarium 0:df922596d756 978
Recifarium 0:df922596d756 979 ;-(U<)------------------------------(u1, u2 -- flag)
Recifarium 0:df922596d756 980 LULess LINK LStoD
Recifarium 0:df922596d756 981 DCB 2
Recifarium 0:df922596d756 982 DCB "U<"
Recifarium 1:1224cf3799a5 983 ULess DCD doCol
Recifarium 1:1224cf3799a5 984 DCD TDup, Xor, IsNeg
Recifarium 0:df922596d756 985 ZBranch ULess1
Recifarium 0:df922596d756 986
Recifarium 1:1224cf3799a5 987 DCD Swap, Drop, IsNeg
Recifarium 0:df922596d756 988 Branch ULess2
Recifarium 0:df922596d756 989
Recifarium 1:1224cf3799a5 990 ULess1 DCD Minus, IsNeg
Recifarium 1:1224cf3799a5 991 ULess2 DCD Exit
Recifarium 0:df922596d756 992
Recifarium 0:df922596d756 993 ;-(U/MOD)---------------------------(ud, u -- ur , uq)
Recifarium 0:df922596d756 994 LUmod LINK LULess
Recifarium 0:df922596d756 995 DCB 6
Recifarium 0:df922596d756 996 DCB "UM/MOD"
Recifarium 1:1224cf3799a5 997 UMSMod DCD xUMSMod
Recifarium 0:df922596d756 998 ; From Pygmy Forth
Recifarium 0:df922596d756 999 ; divide 64 bit r1:r2 by 32 bit TOS
Recifarium 0:df922596d756 1000 xUMSMod POP {WRK1} ; Hi reg from ud
Recifarium 0:df922596d756 1001 POP {WRK2} ; low reg from ud
Recifarium 0:df922596d756 1002 MOVS WRK, #32 ; Loop Index
Recifarium 0:df922596d756 1003 USMod1
Recifarium 0:df922596d756 1004 ADDS WRK2, WRK2
Recifarium 0:df922596d756 1005 ADCS WRK1, WRK1
Recifarium 0:df922596d756 1006 CMP WRK1, TOS
Recifarium 0:df922596d756 1007 BCC USMod2
Recifarium 0:df922596d756 1008 ADDS WRK2, #1
Recifarium 0:df922596d756 1009 SUBS WRK1, TOS
Recifarium 0:df922596d756 1010 USMod2
Recifarium 0:df922596d756 1011 SUBS WRK, #1
Recifarium 0:df922596d756 1012 BNE USMod1
Recifarium 0:df922596d756 1013 PUSH {WRK1}
Recifarium 0:df922596d756 1014 MOV TOS, WRK2
Recifarium 1:1224cf3799a5 1015 Next
Recifarium 0:df922596d756 1016
Recifarium 0:df922596d756 1017 ;-(LF)------------------------------; : LF 10 EMIT ;
Recifarium 0:df922596d756 1018 LLinF LINK LUmod
Recifarium 0:df922596d756 1019 DCB 2, "LF"
Recifarium 1:1224cf3799a5 1020 Lf DCD doCol
Recifarium 1:1224cf3799a5 1021 DCD Ten, Emit
Recifarium 1:1224cf3799a5 1022 DCD Exit
Recifarium 0:df922596d756 1023
Recifarium 0:df922596d756 1024 ;-(CR)------------------------------; : CR 13 EMIT LF ;
Recifarium 0:df922596d756 1025 LCr LINK LLinF
Recifarium 0:df922596d756 1026 DCB 2, "CR"
Recifarium 1:1224cf3799a5 1027 Cr DCD doCol
Recifarium 1:1224cf3799a5 1028 DCD Lit32, 0x0d, Emit, Lf
Recifarium 1:1224cf3799a5 1029 DCD Exit
Recifarium 0:df922596d756 1030
Recifarium 0:df922596d756 1031 ;-(BL)------------------------------
Recifarium 0:df922596d756 1032 LBl LINK LCr
Recifarium 1:1224cf3799a5 1033 DCB 2, "BL"
Recifarium 1:1224cf3799a5 1034 Bl DCD xBl
Recifarium 0:df922596d756 1035 xBl PUSH {TOS}
Recifarium 0:df922596d756 1036 MOVS TOS, #' '
Recifarium 1:1224cf3799a5 1037 Next
Recifarium 1:1224cf3799a5 1038
Recifarium 1:1224cf3799a5 1039 ;-(Esc)------------------------------; Escape char
Recifarium 1:1224cf3799a5 1040 LEsc LINK LBl
Recifarium 1:1224cf3799a5 1041 DCB 3, "ESC"
Recifarium 1:1224cf3799a5 1042 Esc DCD doCol
Recifarium 1:1224cf3799a5 1043 DCD Lit32, 0x1b, Emit
Recifarium 1:1224cf3799a5 1044 DCD Exit
Recifarium 0:df922596d756 1045
Recifarium 0:df922596d756 1046 ;-(SPACE)------------------------------
Recifarium 1:1224cf3799a5 1047 LSpace LINK LEsc
Recifarium 0:df922596d756 1048 DCB 5,"SPACE"
Recifarium 1:1224cf3799a5 1049 Space DCD doCol
Recifarium 1:1224cf3799a5 1050 DCD Bl, Emit
Recifarium 1:1224cf3799a5 1051 DCD Exit
Recifarium 0:df922596d756 1052
Recifarium 0:df922596d756 1053 ;-(SPACES)--------------------------;(n --)
Recifarium 0:df922596d756 1054 LSpaces LINK LSpace
Recifarium 0:df922596d756 1055 DCB 6,"SPACES"
Recifarium 1:1224cf3799a5 1056 Spaces DCD doCol
Recifarium 1:1224cf3799a5 1057 Spaces1 DCD DupNZ
Recifarium 0:df922596d756 1058 ZBranch Spaces2
Recifarium 1:1224cf3799a5 1059 DCD Space, Minus1
Recifarium 0:df922596d756 1060 Branch Spaces1
Recifarium 1:1224cf3799a5 1061 Spaces2 DCD Exit
Recifarium 0:df922596d756 1062
Recifarium 0:df922596d756 1063 ;-(DIGIT)---------------------------;(n -- char)
Recifarium 0:df922596d756 1064 LDigit LINK LSpaces
Recifarium 0:df922596d756 1065 DCB 5, "DIGIT"
Recifarium 1:1224cf3799a5 1066 Digit DCD doCol ; : Digit 9 Over < 7 And + 48 + ;
Recifarium 1:1224cf3799a5 1067 DCD Lit32, 9, Over, Lt
Recifarium 1:1224cf3799a5 1068 DCD Lit32, 7, And, Plus
Recifarium 1:1224cf3799a5 1069 DCD Lit32, '0', Plus
Recifarium 1:1224cf3799a5 1070 DCD Exit
Recifarium 0:df922596d756 1071
Recifarium 0:df922596d756 1072 ;-(FILL)----------------------------( addr,u,char -- )
Recifarium 0:df922596d756 1073 LFill LINK LDigit
Recifarium 0:df922596d756 1074 DCB 4
Recifarium 0:df922596d756 1075 DCB "FILL"
Recifarium 1:1224cf3799a5 1076 Fill DCD xFill
Recifarium 0:df922596d756 1077 xFill POP {WRK} ; Get u
Recifarium 0:df922596d756 1078 POP {WRK2} ; Get addr
Recifarium 0:df922596d756 1079 Fill1 CMP WRK, #0
Recifarium 0:df922596d756 1080 BEQ Fill2 ; Finish?
Recifarium 0:df922596d756 1081 STRB TOS, [WRK2] ; Put char
Recifarium 0:df922596d756 1082 ADDS WRK2, #1 ; addr= addr+1
Recifarium 0:df922596d756 1083 SUBS WRK, #1 ; u = u-1
Recifarium 0:df922596d756 1084 B Fill1 ; One more time
Recifarium 0:df922596d756 1085 Fill2 POP {TOS} ; Update TOS
Recifarium 1:1224cf3799a5 1086 Next
Recifarium 0:df922596d756 1087
Recifarium 0:df922596d756 1088 ;-(CODE:)---------------------------?Future??????????????
Recifarium 0:df922596d756 1089 LBCode LINK LFill
Recifarium 0:df922596d756 1090 DCB 5+Cmponly ; CODE: CANNOT be Inline !
Recifarium 1:1224cf3799a5 1091 DCB "CODE:"
Recifarium 1:1224cf3799a5 1092 BCode DCD xBCode
Recifarium 0:df922596d756 1093 xBCode ADDS IPTR, #1 ; to align at
Recifarium 0:df922596d756 1094 LSRS IPTR, IPTR, #1 ; the next halfword
Recifarium 0:df922596d756 1095 LSLS IPTR, IPTR, #1 ; boundary
Recifarium 0:df922596d756 1096 ADDS IPTR, #1 ; Because of Thumb boundary
Recifarium 0:df922596d756 1097 MOV PC, IPTR ; Jump to code itself
Recifarium 1:1224cf3799a5 1098 Next
Recifarium 0:df922596d756 1099
Recifarium 0:df922596d756 1100 ;-(;CODE)---------------------------?Future??????????????
Recifarium 0:df922596d756 1101 LECode LINK LBCode
Recifarium 1:1224cf3799a5 1102 DCB 5+Cmponly ; It MUST be inline ????
Recifarium 0:df922596d756 1103 DCB ";CODE"
Recifarium 1:1224cf3799a5 1104 ECode DCD xECode+1
Recifarium 1:1224cf3799a5 1105 xECode BL THere ; Where are we ? Collect address in lr
Recifarium 1:1224cf3799a5 1106 THere MOV IPTR, lr ;
Recifarium 0:df922596d756 1107 ADDS IPTR, #5 ; To point after the RET
Recifarium 1:1224cf3799a5 1108 Next
Recifarium 0:df922596d756 1109
Recifarium 1:1224cf3799a5 1110 ;-(TOUPPER)-------------------------(char -- upchar)
Recifarium 0:df922596d756 1111 LToupp LINK LECode
Recifarium 0:df922596d756 1112 DCB 7
Recifarium 0:df922596d756 1113 DCB "TOUPPER"
Recifarium 1:1224cf3799a5 1114 ToUpp DCD xToUpp
Recifarium 1:1224cf3799a5 1115 xToUpp CMP TOS, #'a'-1
Recifarium 0:df922596d756 1116 BLE Toupp1
Recifarium 0:df922596d756 1117 CMP TOS, #'z'+1
Recifarium 0:df922596d756 1118 BGE Toupp1
Recifarium 0:df922596d756 1119 SUBS TOS, #'a'-'A'
Recifarium 1:1224cf3799a5 1120 Toupp1 Next
Recifarium 0:df922596d756 1121
Recifarium 0:df922596d756 1122 ;-(NOOP)----------------------------()
Recifarium 0:df922596d756 1123 LNoop LINK LToupp
Recifarium 0:df922596d756 1124 DCB 4
Recifarium 1:1224cf3799a5 1125 DCB "NOOP"
Recifarium 1:1224cf3799a5 1126 Noop DCD xNoop
Recifarium 1:1224cf3799a5 1127 xNoop Next
Recifarium 1:1224cf3799a5 1128
Recifarium 0:df922596d756 1129 ;-(UPPER)---------------------------(addr, count --)
Recifarium 0:df922596d756 1130 LUpper LINK LNoop
Recifarium 0:df922596d756 1131 DCB 5
Recifarium 0:df922596d756 1132 DCB "UPPER"
Recifarium 1:1224cf3799a5 1133 Upper DCD xUpper
Recifarium 1:1224cf3799a5 1134 xUpper POP {WRK} ; Get addr
Recifarium 1:1224cf3799a5 1135 Upper1 CMP TOS, #0 ; count=0?
Recifarium 1:1224cf3799a5 1136 BEQ Upper3 ; yes
Recifarium 0:df922596d756 1137 LDRB WRK2, [WRK]
Recifarium 0:df922596d756 1138 CMP WRK2, #'a'-1
Recifarium 1:1224cf3799a5 1139 BLE Upper2
Recifarium 0:df922596d756 1140 CMP WRK2, #'z'+1
Recifarium 1:1224cf3799a5 1141 BGE Upper2
Recifarium 0:df922596d756 1142 SUBS WRK2, #'a'-'A'
Recifarium 0:df922596d756 1143 STRB WRK2, [WRK]
Recifarium 1:1224cf3799a5 1144 Upper2 ADDS WRK, #1
Recifarium 0:df922596d756 1145 SUBS TOS, #1
Recifarium 1:1224cf3799a5 1146 B Upper1
Recifarium 1:1224cf3799a5 1147 Upper3 POP {TOS}
Recifarium 1:1224cf3799a5 1148 Next
Recifarium 1:1224cf3799a5 1149
Recifarium 1:1224cf3799a5 1150 ;xUpper doCol
Recifarium 1:1224cf3799a5 1151 ;Upper1 DCB DupNZ ; (addr, count, count)
Recifarium 1:1224cf3799a5 1152 ; ZBranch Upper2
Recifarium 1:1224cf3799a5 1153 ; DCB Minus1, ToR
Recifarium 1:1224cf3799a5 1154 ; DCB Dup, Dup, CAt
Recifarium 1:1224cf3799a5 1155 ; DCB Toupp, Swap, Store
Recifarium 1:1224cf3799a5 1156 ; DCB Plus1, FromR
Recifarium 1:1224cf3799a5 1157 ; Branch Upper1
Recifarium 1:1224cf3799a5 1158 ;Upper2 DCB TDrop, Exit ; ( )
Recifarium 1:1224cf3799a5 1159
Recifarium 0:df922596d756 1160
Recifarium 0:df922596d756 1161 ;-(FALSE)---------------------------(--Fflag)
Recifarium 0:df922596d756 1162 LFalse LINK LUpper
Recifarium 0:df922596d756 1163 DCB 5, "FALSE"
Recifarium 1:1224cf3799a5 1164 False DCD doCon
Recifarium 1:1224cf3799a5 1165 DCD 0
Recifarium 0:df922596d756 1166
Recifarium 0:df922596d756 1167 ;-(TRUE)----------------------------(--Tflag)
Recifarium 0:df922596d756 1168 LTrue LINK LFalse
Recifarium 0:df922596d756 1169 DCB 4, "TRUE"
Recifarium 1:1224cf3799a5 1170 True DCD doCon
Recifarium 1:1224cf3799a5 1171 DCD 0xffffffff
Recifarium 0:df922596d756 1172
Recifarium 0:df922596d756 1173 ;-(DECIMAL)-------------------------()
Recifarium 0:df922596d756 1174 LDecim LINK LTrue
Recifarium 1:1224cf3799a5 1175 DCB 7, "DECIMAL"
Recifarium 1:1224cf3799a5 1176 Dec DCD xDec
Recifarium 1:1224cf3799a5 1177 xDec MOVS WRK2, #10
Recifarium 1:1224cf3799a5 1178 B SetBase
Recifarium 0:df922596d756 1179
Recifarium 1:1224cf3799a5 1180 ;-(BINARY)--------------------------()
Recifarium 0:df922596d756 1181 LBin LINK LDecim
Recifarium 1:1224cf3799a5 1182 DCB 6, "BINARY"
Recifarium 1:1224cf3799a5 1183 Bin DCD xBin
Recifarium 1:1224cf3799a5 1184 xBin MOVS WRK2, #2
Recifarium 1:1224cf3799a5 1185 B SetBase
Recifarium 0:df922596d756 1186
Recifarium 0:df922596d756 1187 ;-(HEX)------------------------------()
Recifarium 0:df922596d756 1188 LHex LINK LBin
Recifarium 0:df922596d756 1189 DCB 3, "HEX"
Recifarium 1:1224cf3799a5 1190 Hex DCD xHex
Recifarium 1:1224cf3799a5 1191 xHex MOVS WRK2, #16
Recifarium 1:1224cf3799a5 1192 SetBase LDR WRK1, =VBase
Recifarium 1:1224cf3799a5 1193 STR WRK2, [WRK1]
Recifarium 1:1224cf3799a5 1194 Next
Recifarium 0:df922596d756 1195
Recifarium 0:df922596d756 1196 ;-(HLD)-----------------------------()
Recifarium 0:df922596d756 1197 LHld LINK LHex
Recifarium 0:df922596d756 1198 DCB 3, "HLD"
Recifarium 1:1224cf3799a5 1199 Hld DCD doVar
Recifarium 1:1224cf3799a5 1200 DCD AHLD
Recifarium 1:1224cf3799a5 1201
Recifarium 0:df922596d756 1202 ;-(<#)------------------------------()
Recifarium 0:df922596d756 1203 LStrPic LINK LHld
Recifarium 0:df922596d756 1204 DCB 2, "<#"
Recifarium 1:1224cf3799a5 1205 StrPic DCD doCol
Recifarium 1:1224cf3799a5 1206 DCD Pad , Lit32, 127, Plus
Recifarium 1:1224cf3799a5 1207 DCD Hld, Store
Recifarium 1:1224cf3799a5 1208 DCD Exit
Recifarium 0:df922596d756 1209
Recifarium 0:df922596d756 1210 ;-(HOLD)----------------------------()
Recifarium 0:df922596d756 1211 LHold LINK LStrPic
Recifarium 0:df922596d756 1212 DCB 4, "HOLD"
Recifarium 1:1224cf3799a5 1213 Hold DCD doCol
Recifarium 1:1224cf3799a5 1214 DCD Hld, At, Minus1
Recifarium 1:1224cf3799a5 1215 DCD Dup, Hld, Store, CStore
Recifarium 1:1224cf3799a5 1216 DCD Exit
Recifarium 0:df922596d756 1217
Recifarium 0:df922596d756 1218 ;-(#)------------------------------()
Recifarium 0:df922596d756 1219 LNumb LINK LHold
Recifarium 0:df922596d756 1220 DCB 1, "#"
Recifarium 1:1224cf3799a5 1221 Numb DCD doCol
Recifarium 1:1224cf3799a5 1222 DCD Base, At
Recifarium 1:1224cf3799a5 1223 DCD Extract
Recifarium 1:1224cf3799a5 1224 DCD Hold
Recifarium 1:1224cf3799a5 1225 DCD Exit
Recifarium 0:df922596d756 1226
Recifarium 0:df922596d756 1227 ;-(#S)------------------------------()
Recifarium 0:df922596d756 1228 LNumStr LINK LNumb
Recifarium 0:df922596d756 1229 DCB 2, "#S"
Recifarium 1:1224cf3799a5 1230 NumStr DCD doCol
Recifarium 1:1224cf3799a5 1231 NumStr1 DCD Numb, Dup
Recifarium 1:1224cf3799a5 1232 DCD IsNull
Recifarium 0:df922596d756 1233 ZBranch NumStr1
Recifarium 1:1224cf3799a5 1234 DCD Exit
Recifarium 0:df922596d756 1235
Recifarium 0:df922596d756 1236 ;-(SIGN)----------------------------()
Recifarium 0:df922596d756 1237 LSign LINK LNumStr
Recifarium 0:df922596d756 1238 DCB 4, "SIGN"
Recifarium 1:1224cf3799a5 1239 Sign DCD doCol
Recifarium 1:1224cf3799a5 1240 DCD IsNeg
Recifarium 0:df922596d756 1241 ZBranch Sign1
Recifarium 1:1224cf3799a5 1242 DCD Lit32, '-', Hold
Recifarium 1:1224cf3799a5 1243 Sign1 DCD Exit
Recifarium 0:df922596d756 1244
Recifarium 0:df922596d756 1245 ;-(#>)------------------------------()
Recifarium 0:df922596d756 1246 LEndPic LINK LSign
Recifarium 0:df922596d756 1247 DCB 2, "#>"
Recifarium 1:1224cf3799a5 1248 EndPic DCD doCol
Recifarium 1:1224cf3799a5 1249 DCD Drop, Hld, At
Recifarium 1:1224cf3799a5 1250 DCD Pad, Lit32, 127, Plus
Recifarium 1:1224cf3799a5 1251 DCD Over, Minus
Recifarium 1:1224cf3799a5 1252 DCD Exit
Recifarium 0:df922596d756 1253
Recifarium 0:df922596d756 1254 ;-(STR)-----------------------------()
Recifarium 0:df922596d756 1255 LStr LINK LEndPic
Recifarium 0:df922596d756 1256 DCB 3, "STR"
Recifarium 1:1224cf3799a5 1257 Str DCD doCol
Recifarium 1:1224cf3799a5 1258 DCD Dup, ToR, Abs, StrPic
Recifarium 1:1224cf3799a5 1259 DCD NumStr, FromR, Sign, EndPic
Recifarium 1:1224cf3799a5 1260 DCD Exit
Recifarium 0:df922596d756 1261
Recifarium 0:df922596d756 1262 ;-(DotR)----------------------------()
Recifarium 0:df922596d756 1263 LDotR LINK LStr
Recifarium 0:df922596d756 1264 DCB 2, ".R"
Recifarium 1:1224cf3799a5 1265 DotR DCD doCol
Recifarium 1:1224cf3799a5 1266 DCD ToR, Str, FromR
Recifarium 1:1224cf3799a5 1267 DCD Over, Minus, Spaces
Recifarium 1:1224cf3799a5 1268 DCD Type
Recifarium 1:1224cf3799a5 1269 DCD Exit
Recifarium 0:df922596d756 1270
Recifarium 0:df922596d756 1271 ;-(UdR)----------------------------()
Recifarium 0:df922596d756 1272 LUdR LINK LDotR
Recifarium 0:df922596d756 1273 DCB 3, "U.R"
Recifarium 1:1224cf3799a5 1274 UDotR DCD doCol
Recifarium 1:1224cf3799a5 1275 DCD ToR, StrPic, NumStr
Recifarium 1:1224cf3799a5 1276 DCD EndPic, FromR, Over
Recifarium 1:1224cf3799a5 1277 DCD Minus, Spaces, Type
Recifarium 1:1224cf3799a5 1278 DCD Exit
Recifarium 0:df922596d756 1279
Recifarium 0:df922596d756 1280 ;-(U.)------------------------------()
Recifarium 0:df922596d756 1281 LUDot LINK LUdR
Recifarium 0:df922596d756 1282 DCB 2, "U."
Recifarium 1:1224cf3799a5 1283 UDot DCD doCol
Recifarium 1:1224cf3799a5 1284 DCD StrPic, NumStr, EndPic
Recifarium 1:1224cf3799a5 1285 DCD Space, Type
Recifarium 1:1224cf3799a5 1286 DCD Exit
Recifarium 0:df922596d756 1287
Recifarium 0:df922596d756 1288 ;-(.)------------------------------()
Recifarium 0:df922596d756 1289 LDot LINK LUDot
Recifarium 0:df922596d756 1290 DCB 1, "."
Recifarium 1:1224cf3799a5 1291 Dot DCD doCol
Recifarium 1:1224cf3799a5 1292 DCD Base, At, Ten
Recifarium 1:1224cf3799a5 1293 DCD Xor
Recifarium 0:df922596d756 1294 ZBranch Dot1
Recifarium 1:1224cf3799a5 1295 DCD UDot
Recifarium 0:df922596d756 1296 Branch Dot2
Recifarium 1:1224cf3799a5 1297 Dot1 DCD Str, Space, Type
Recifarium 1:1224cf3799a5 1298 Dot2 DCD Exit
Recifarium 0:df922596d756 1299
Recifarium 0:df922596d756 1300 ;-(.S)------------------------------()
Recifarium 0:df922596d756 1301 LDotS LINK LDot
Recifarium 0:df922596d756 1302 DCB 2, ".S"
Recifarium 1:1224cf3799a5 1303 DotS DCD doCol
Recifarium 1:1224cf3799a5 1304 DCD Depth ; (depth)
Recifarium 1:1224cf3799a5 1305 DCD Sp0, Lit32,8, Minus ; (depth, Sp)
Recifarium 1:1224cf3799a5 1306 DCD Swap ; (Sp, depth)
Recifarium 1:1224cf3799a5 1307 DCD Dup ; (Sp, depth, depth)
Recifarium 1:1224cf3799a5 1308 ZBranch DotS3 ; Stack empty at the beginning
Recifarium 1:1224cf3799a5 1309 DotS1 DCD DupNZ ; (Sp, depth, depth)
Recifarium 1:1224cf3799a5 1310 ZBranch DotS4 ; No more in stack
Recifarium 1:1224cf3799a5 1311 ; (Sp, depth)
Recifarium 1:1224cf3799a5 1312 DotS2 DCD Swap, Dup, At ; (Depth,Sp,@Sp)
Recifarium 1:1224cf3799a5 1313 DCD Dot, Cr ; (Depth,Sp)
Recifarium 1:1224cf3799a5 1314 DCD Lit32, 4, Minus ; (Depth,Sp-4)
Recifarium 1:1224cf3799a5 1315 DCD Swap, Minus1 ; (Sp-4,Depth-1)
Recifarium 1:1224cf3799a5 1316 Branch DotS1 ; next item
Recifarium 0:df922596d756 1317
Recifarium 1:1224cf3799a5 1318 DotS3 DCD Drop
Recifarium 1:1224cf3799a5 1319 DCD Lit32
Recifarium 1:1224cf3799a5 1320 DCD Mess6 ; Stack empty
Recifarium 1:1224cf3799a5 1321 DCD Count, Type
Recifarium 1:1224cf3799a5 1322 DotS4 DCD Drop ; ()
Recifarium 1:1224cf3799a5 1323 DCD Exit
Recifarium 1:1224cf3799a5 1324
Recifarium 0:df922596d756 1325
Recifarium 0:df922596d756 1326 ;(C,)-------------------------------(char--)
Recifarium 0:df922596d756 1327 LCComa LINK LDotS
Recifarium 0:df922596d756 1328 DCB 2, "C,"
Recifarium 1:1224cf3799a5 1329 CComa DCD doCol
Recifarium 1:1224cf3799a5 1330 ;...............................
Recifarium 1:1224cf3799a5 1331 DCD Exit
Recifarium 0:df922596d756 1332
Recifarium 0:df922596d756 1333 ;(H,)-------------------------------(halfword--)
Recifarium 0:df922596d756 1334 LHComa LINK LCComa
Recifarium 0:df922596d756 1335 DCB 2, "H,"
Recifarium 1:1224cf3799a5 1336 HComa DCD doCol
Recifarium 1:1224cf3799a5 1337 DCD Lit32
Recifarium 0:df922596d756 1338 DCD Transit
Recifarium 1:1224cf3799a5 1339 DCD Dup, MRot
Recifarium 1:1224cf3799a5 1340 ; DCD Hstore
Recifarium 1:1224cf3799a5 1341 ; DCD Dup, At, CComa
Recifarium 1:1224cf3799a5 1342 ; DCD PlusOne, At, CComa
Recifarium 1:1224cf3799a5 1343 DCD Exit
Recifarium 0:df922596d756 1344
Recifarium 0:df922596d756 1345 ;(,)--------------------------------(word--)
Recifarium 0:df922596d756 1346 LComa LINK LHComa
Recifarium 0:df922596d756 1347 DCB 1, ","
Recifarium 1:1224cf3799a5 1348 Coma DCD doCol
Recifarium 1:1224cf3799a5 1349 DCD Lit32
Recifarium 0:df922596d756 1350 DCD Transit
Recifarium 1:1224cf3799a5 1351 DCD Dup, MRot ;(TRansaddr, word, Transaddr)
Recifarium 1:1224cf3799a5 1352 DCD Store ;(Transaddr)
Recifarium 1:1224cf3799a5 1353 ; DCD Dup, At, HComa
Recifarium 1:1224cf3799a5 1354 ; DCD TwoPlus, At, HComa
Recifarium 1:1224cf3799a5 1355 DCD Exit
Recifarium 0:df922596d756 1356
Recifarium 0:df922596d756 1357 ;(>IN)------------------------------(--address)
Recifarium 0:df922596d756 1358 LtoIn LINK LComa
Recifarium 0:df922596d756 1359 DCB 3, ">IN"
Recifarium 1:1224cf3799a5 1360 toIn DCD doVar
Recifarium 1:1224cf3799a5 1361 DCD AtoIn
Recifarium 0:df922596d756 1362
Recifarium 0:df922596d756 1363 ;(PAD)-----------------------------(--address)
Recifarium 0:df922596d756 1364 LPad LINK LtoIn
Recifarium 0:df922596d756 1365 DCB 3, "PAD"
Recifarium 1:1224cf3799a5 1366 Pad DCD doVar
Recifarium 1:1224cf3799a5 1367 DCD APAD
Recifarium 1:1224cf3799a5 1368
Recifarium 0:df922596d756 1369 ;(#TIB)-----------------------------(--address)
Recifarium 0:df922596d756 1370 LnTib LINK LPad
Recifarium 0:df922596d756 1371 DCB 4, "#TIB"
Recifarium 1:1224cf3799a5 1372 nTib DCD doVar
Recifarium 1:1224cf3799a5 1373 DCD AnTib
Recifarium 0:df922596d756 1374 LTORG
Recifarium 1:1224cf3799a5 1375
Recifarium 0:df922596d756 1376 ;(RS0)------------------------------ Headerless
Recifarium 1:1224cf3799a5 1377 RS0 DCD xRS0
Recifarium 0:df922596d756 1378 xRS0 LDR RPTR, =Begin
Recifarium 1:1224cf3799a5 1379 Next
Recifarium 0:df922596d756 1380
Recifarium 0:df922596d756 1381 ;(QUIT)-----------------------------(word--)
Recifarium 0:df922596d756 1382 LQuit LINK LnTib
Recifarium 0:df922596d756 1383 DCB 4, "QUIT"
Recifarium 1:1224cf3799a5 1384 Quit DCD doCol
Recifarium 1:1224cf3799a5 1385 DCD Lit32
Recifarium 0:df922596d756 1386 DCD Begin ; Set RPTR Return Stack Pointer to
Recifarium 1:1224cf3799a5 1387 DCD RS0 ; beginning of RAM
Recifarium 1:1224cf3799a5 1388 DCD False, State, Store ; Set Interpret Mode
Recifarium 0:df922596d756 1389 ; ...........
Recifarium 1:1224cf3799a5 1390 DCD Exit
Recifarium 1:1224cf3799a5 1391 LTORG
Recifarium 0:df922596d756 1392 ;(ABORT)----------------------------(word--)
Recifarium 0:df922596d756 1393 LAbort LINK LQuit
Recifarium 0:df922596d756 1394 DCB 5, "ABORT"
Recifarium 0:df922596d756 1395 ;...................
Recifarium 1:1224cf3799a5 1396 DCD Exit
Recifarium 1:1224cf3799a5 1397
Recifarium 1:1224cf3799a5 1398 ;(>NUMBER)--------------------------( u11 c-addr1 u12 -- u21 c-addr2 u22 )
Recifarium 1:1224cf3799a5 1399 LTNumber LINK LAbort
Recifarium 1:1224cf3799a5 1400 DCB 7, ">NUMBER"
Recifarium 1:1224cf3799a5 1401 TNbr DCD doCol
Recifarium 1:1224cf3799a5 1402 ; DCD DotS ; (0,addr, n) Debug
Recifarium 1:1224cf3799a5 1403 DCD ToR ; (0,addr R:n)
Recifarium 1:1224cf3799a5 1404 DCD Dup, CAt ; (0,addr, char R:n)
Recifarium 1:1224cf3799a5 1405 DCD Dup ; (0,addr, char, char R:n)
Recifarium 1:1224cf3799a5 1406 DCD Lit32, '-'
Recifarium 1:1224cf3799a5 1407 DCD Eq
Recifarium 1:1224cf3799a5 1408 ZBranch TNumbr1
Recifarium 1:1224cf3799a5 1409
Recifarium 1:1224cf3799a5 1410 DCD Lit32, -1, MRot
Recifarium 1:1224cf3799a5 1411 ; DCD DotS
Recifarium 1:1224cf3799a5 1412 DCD FromR, Minus1,ToR ; (0,-1, addr, char R: n-1)
Recifarium 1:1224cf3799a5 1413 DCD Drop, Plus1
Recifarium 1:1224cf3799a5 1414 DCD Dup, CAt ; (0,-1, addr+1, char R: n-1)
Recifarium 1:1224cf3799a5 1415 ; DCD DotS
Recifarium 1:1224cf3799a5 1416 Branch TNumbr2
Recifarium 0:df922596d756 1417
Recifarium 1:1224cf3799a5 1418 TNumbr1 DCD Lit32, 1, MRot ; (0,1, addr, char R:n)
Recifarium 1:1224cf3799a5 1419
Recifarium 1:1224cf3799a5 1420 TNumbr2 DCD ToR, ToR, Swap
Recifarium 1:1224cf3799a5 1421 DCD FromR, FromR
Recifarium 1:1224cf3799a5 1422 TNumbr3 DCD Base, At, isDigit ; (-1|1, cumul, addr, u,f R:n )
Recifarium 1:1224cf3799a5 1423 ZBranch TNumbr4 ; It's not a number
Recifarium 1:1224cf3799a5 1424
Recifarium 1:1224cf3799a5 1425 DCD Rot, Base, At, Mul ;
Recifarium 1:1224cf3799a5 1426 DCD Plus, Swap ; (-1|1, cumul, addr R:n )
Recifarium 1:1224cf3799a5 1427 DCD FromR, Minus1
Recifarium 1:1224cf3799a5 1428 DCD DupNZ
Recifarium 1:1224cf3799a5 1429 ZBranch TNumbr5
Recifarium 1:1224cf3799a5 1430
Recifarium 1:1224cf3799a5 1431 DCD ToR, Plus1, Dup, CAt
Recifarium 1:1224cf3799a5 1432 Branch TNumbr3
Recifarium 1:1224cf3799a5 1433
Recifarium 1:1224cf3799a5 1434 TNumbr4 DCD Drop, MRot, TDrop
Recifarium 1:1224cf3799a5 1435 DCD FromR, False
Recifarium 1:1224cf3799a5 1436 DCD Exit
Recifarium 1:1224cf3799a5 1437
Recifarium 1:1224cf3799a5 1438 TNumbr5 DCD Drop, Mul, True ;
Recifarium 1:1224cf3799a5 1439 DCD Exit
Recifarium 1:1224cf3799a5 1440
Recifarium 1:1224cf3799a5 1441 ;(INTERPRET)------------------------(word--) Still to be cleaned
Recifarium 1:1224cf3799a5 1442 LInterp LINK LTNumber
Recifarium 0:df922596d756 1443 DCB 9, "INTERPRET"
Recifarium 1:1224cf3799a5 1444 Inter DCD doCol
Recifarium 1:1224cf3799a5 1445 Interp DCD nTib, At ; Get # of char entered
Recifarium 1:1224cf3799a5 1446 DCD toIn, At ; Get # of char processed
Recifarium 1:1224cf3799a5 1447 DCD Eq
Recifarium 0:df922596d756 1448 ZBranch Intrp5 ; Still some char to process
Recifarium 0:df922596d756 1449 Intrp2
Recifarium 1:1224cf3799a5 1450 DCD Lit32
Recifarium 1:1224cf3799a5 1451 DCD Mess4
Recifarium 1:1224cf3799a5 1452 DCD Count, Type
Recifarium 1:1224cf3799a5 1453 ; DCD Lit32, '>', Emit ; Prompt
Recifarium 1:1224cf3799a5 1454 DCD Lit32
Recifarium 0:df922596d756 1455 DCD TIB
Recifarium 1:1224cf3799a5 1456 DCD Lit32, 50, Accept ; Refill with a new line
Recifarium 1:1224cf3799a5 1457 ; DCD DotS ; Debug <<<<<<<<<<<<<<<
Recifarium 1:1224cf3799a5 1458 DCD Dup, Zero, Eq ; Is it a null line?
Recifarium 0:df922596d756 1459 ZBranch Intrp4 ; No
Recifarium 0:df922596d756 1460 Intrp3
Recifarium 1:1224cf3799a5 1461 DCD Drop ; Discard length
Recifarium 0:df922596d756 1462 Branch Intrp2 ; and retry
Recifarium 0:df922596d756 1463 Intrp4
Recifarium 1:1224cf3799a5 1464 DCD Lit32, AnTib, Store ; Update #TIB
Recifarium 1:1224cf3799a5 1465 DCD Zero, toIn, Store ; Point to the beginning
Recifarium 0:df922596d756 1466 Intrp5
Recifarium 1:1224cf3799a5 1467 DCD Bl ; space is the separator
Recifarium 1:1224cf3799a5 1468 DCD Word ; Try to find a WORD
Recifarium 1:1224cf3799a5 1469 DCD Dup, CAt ; Get length
Recifarium 1:1224cf3799a5 1470 DCD Zero, Eq, Not ; Not a blank line?
Recifarium 1:1224cf3799a5 1471 ZBranch Intrp3 ; no! get new one
Recifarium 1:1224cf3799a5 1472 ; here we have a string !
Recifarium 1:1224cf3799a5 1473 DCD Dup, Count
Recifarium 1:1224cf3799a5 1474 DCD Upper ; Convert to uppercase
Recifarium 1:1224cf3799a5 1475 DCD Find ; try to find it in dictionary
Recifarium 1:1224cf3799a5 1476 DCD Dup ; Duplicate flag from Find: 0 mean not found
Recifarium 1:1224cf3799a5 1477 ZBranch Intrp8 ; Not a Word may be a number
Recifarium 1:1224cf3799a5 1478 ; It's in dictionary
Recifarium 1:1224cf3799a5 1479 DCD Dup
Recifarium 1:1224cf3799a5 1480 DCD Lit32, 1, Eq ; Immed?
Recifarium 1:1224cf3799a5 1481 ZBranch Intrp6
Recifarium 0:df922596d756 1482
Recifarium 1:1224cf3799a5 1483 DCD DotS, Key, Drop ; Debug <<<<<<<<<<<<<<<
Recifarium 1:1224cf3799a5 1484 DCD State, At
Recifarium 1:1224cf3799a5 1485 DCD Eq ; Are we compiling?
Recifarium 1:1224cf3799a5 1486 ZBranch Intrp7 ; if not execute it
Recifarium 0:df922596d756 1487 ;
Recifarium 0:df922596d756 1488 ; compile
Recifarium 1:1224cf3799a5 1489 DCD Lit32, Mess7
Recifarium 1:1224cf3799a5 1490 DCD Count, Type
Recifarium 1:1224cf3799a5 1491 DCD Dot, Cr
Recifarium 1:1224cf3799a5 1492 DCD Key, Drop
Recifarium 0:df922596d756 1493 Branch Intrp10
Recifarium 1:1224cf3799a5 1494 Intrp6
Recifarium 1:1224cf3799a5 1495 DCD Drop
Recifarium 1:1224cf3799a5 1496 Intrp7
Recifarium 1:1224cf3799a5 1497 DCD Execute ; Do the job and continue
Recifarium 1:1224cf3799a5 1498 Branch Interp
Recifarium 1:1224cf3799a5 1499 Intrp8 ; Try to convert as a number
Recifarium 1:1224cf3799a5 1500 DCD Swap, Count
Recifarium 1:1224cf3799a5 1501 DCD TNbr
Recifarium 1:1224cf3799a5 1502 ZBranch Intrp11
Recifarium 1:1224cf3799a5 1503
Recifarium 0:df922596d756 1504 Intrp10
Recifarium 0:df922596d756 1505 Branch Interp
Recifarium 1:1224cf3799a5 1506 Intrp11
Recifarium 1:1224cf3799a5 1507 DCD Type, Bl, Emit
Recifarium 1:1224cf3799a5 1508 DCD Lit32
Recifarium 1:1224cf3799a5 1509 DCD Mess3
Recifarium 1:1224cf3799a5 1510 DCD Count, Type, Cr
Recifarium 1:1224cf3799a5 1511 Branch Interp
Recifarium 1:1224cf3799a5 1512
Recifarium 0:df922596d756 1513
Recifarium 0:df922596d756 1514 ;(CallR0)---------------------------(word--)
Recifarium 0:df922596d756 1515 LCallR0 LINK LInterp
Recifarium 0:df922596d756 1516 DCB 6
Recifarium 0:df922596d756 1517 DCB "CallR0"
Recifarium 1:1224cf3799a5 1518 CallR0 DCD doCol
Recifarium 0:df922596d756 1519 ;...............;
Recifarium 0:df922596d756 1520
Recifarium 1:1224cf3799a5 1521 DCD Exit
Recifarium 0:df922596d756 1522
Recifarium 1:1224cf3799a5 1523 ;(DIGIT?)---------------------------(char, base --u,f)
Recifarium 0:df922596d756 1524 LisDigit LINK LCallR0
Recifarium 0:df922596d756 1525 DCB 6, "DIGIT?"
Recifarium 1:1224cf3799a5 1526 isDigit DCD doCol
Recifarium 1:1224cf3799a5 1527 DCD ToR ;(char)
Recifarium 1:1224cf3799a5 1528 DCD Lit32, '0', Minus ;(num)
Recifarium 1:1224cf3799a5 1529 DCD Dup ;(num,num)
Recifarium 1:1224cf3799a5 1530 DCD Lit32, 9, Gt ;(num, flag)
Recifarium 0:df922596d756 1531 ZBranch isDigit1
Recifarium 1:1224cf3799a5 1532
Recifarium 1:1224cf3799a5 1533 DCD Lit32, ('A'-'9'-1)
Recifarium 1:1224cf3799a5 1534 DCD Minus
Recifarium 0:df922596d756 1535 isDigit1 ;(num)
Recifarium 1:1224cf3799a5 1536 DCD Dup, FromR, ULess
Recifarium 1:1224cf3799a5 1537 DCD Exit
Recifarium 0:df922596d756 1538
Recifarium 0:df922596d756 1539 ;(CHAR)-----------------------------( -- char)
Recifarium 0:df922596d756 1540 LChar LINK LisDigit
Recifarium 0:df922596d756 1541 DCB 4, "CHAR"
Recifarium 1:1224cf3799a5 1542 Char DCD doCol
Recifarium 1:1224cf3799a5 1543 DCD Bl, Word, Plus1, CAt
Recifarium 1:1224cf3799a5 1544 DCD Exit
Recifarium 0:df922596d756 1545
Recifarium 1:1224cf3799a5 1546 ;(EXTRACT)--------------------------( n base -- n c)
Recifarium 0:df922596d756 1547 LExtract LINK LChar
Recifarium 0:df922596d756 1548 DCB 7, "EXTRACT"
Recifarium 1:1224cf3799a5 1549 Extract DCD doCol
Recifarium 1:1224cf3799a5 1550 DCD Zero, Swap, UMSMod, Swap, Digit
Recifarium 1:1224cf3799a5 1551 DCD Exit
Recifarium 1:1224cf3799a5 1552
Recifarium 0:df922596d756 1553 ;(')--------------------------------( -- address)
Recifarium 0:df922596d756 1554 LTick LINK LExtract
Recifarium 0:df922596d756 1555 DCB 1, "'"
Recifarium 1:1224cf3799a5 1556 Tick DCD doCol
Recifarium 1:1224cf3799a5 1557 DCD Bl, Word
Recifarium 1:1224cf3799a5 1558 DCD Dup, Count, Upper
Recifarium 1:1224cf3799a5 1559 DCD Find, Not
Recifarium 0:df922596d756 1560 ZBranch Tick1
Recifarium 1:1224cf3799a5 1561
Recifarium 1:1224cf3799a5 1562 DCD Count, Type, Bl, Emit
Recifarium 1:1224cf3799a5 1563 DCD Lit32
Recifarium 0:df922596d756 1564 DCD Mess3
Recifarium 1:1224cf3799a5 1565 DCD Count, Type, Cr
Recifarium 1:1224cf3799a5 1566 Tick1 DCD Exit
Recifarium 0:df922596d756 1567
Recifarium 0:df922596d756 1568 ;( ( )------------------------------( -- )
Recifarium 0:df922596d756 1569 LParan LINK LTick
Recifarium 0:df922596d756 1570 DCB 1, "("
Recifarium 1:1224cf3799a5 1571 Paran DCD doCol
Recifarium 1:1224cf3799a5 1572 DCD Lit32, ')' , Word
Recifarium 1:1224cf3799a5 1573 DCD Drop
Recifarium 1:1224cf3799a5 1574 DCD Exit
Recifarium 0:df922596d756 1575
Recifarium 0:df922596d756 1576 ;(M/MOD)----------------------------( d, n -- r, q)
Recifarium 0:df922596d756 1577 LMSMod LINK LParan
Recifarium 0:df922596d756 1578 DCB 5, "M/MOD"
Recifarium 1:1224cf3799a5 1579 MSMod DCD doCol
Recifarium 1:1224cf3799a5 1580 DCD Dup, IsNeg, Dup, ToR
Recifarium 0:df922596d756 1581 ZBranch UMSMod1
Recifarium 0:df922596d756 1582
Recifarium 1:1224cf3799a5 1583 DCD Neg, ToR, DNeg, FromR
Recifarium 1:1224cf3799a5 1584 UMSMod1 DCD ToR, Dup, IsNeg
Recifarium 0:df922596d756 1585 ZBranch UMSMod2
Recifarium 0:df922596d756 1586
Recifarium 1:1224cf3799a5 1587 DCD RAt, Plus
Recifarium 1:1224cf3799a5 1588 UMSMod2 DCD FromR, UMSMod, FromR
Recifarium 0:df922596d756 1589 ZBranch UMSMod3
Recifarium 0:df922596d756 1590
Recifarium 1:1224cf3799a5 1591 DCD Swap, Neg, Swap
Recifarium 1:1224cf3799a5 1592 UMSMod3 DCD Exit
Recifarium 0:df922596d756 1593
Recifarium 0:df922596d756 1594 ;( /MOD )---------------------------( n, n -- r, q)
Recifarium 0:df922596d756 1595 LSMod LINK LMSMod
Recifarium 0:df922596d756 1596 DCB 4, "/MOD"
Recifarium 1:1224cf3799a5 1597 SMod DCD doCol
Recifarium 1:1224cf3799a5 1598 DCD Over, IsNeg, Swap, MSMod
Recifarium 1:1224cf3799a5 1599 DCD Exit
Recifarium 0:df922596d756 1600 LTORG
Recifarium 0:df922596d756 1601
Recifarium 0:df922596d756 1602 ;( MOD )----------------------------(n, n -- r )
Recifarium 0:df922596d756 1603 LMod LINK LSMod
Recifarium 0:df922596d756 1604 DCB 3, "MOD"
Recifarium 1:1224cf3799a5 1605 Mod DCD doCol
Recifarium 1:1224cf3799a5 1606 DCD SMod, Drop
Recifarium 1:1224cf3799a5 1607 DCD Exit
Recifarium 0:df922596d756 1608
Recifarium 1:1224cf3799a5 1609 ;( / )------------------------------( n, n -- q )
Recifarium 0:df922596d756 1610 LDiv LINK LMod
Recifarium 0:df922596d756 1611 DCB 1, "/"
Recifarium 1:1224cf3799a5 1612 Div DCD doCol
Recifarium 1:1224cf3799a5 1613 DCD SMod, Swap, Drop
Recifarium 1:1224cf3799a5 1614 DCD Exit
Recifarium 1:1224cf3799a5 1615
Recifarium 1:1224cf3799a5 1616 ;( [ )------------------------------( )
Recifarium 1:1224cf3799a5 1617 LOBrtk LINK LDiv
Recifarium 1:1224cf3799a5 1618 DCB 1, "["
Recifarium 1:1224cf3799a5 1619 OBrtk DCD doCol
Recifarium 1:1224cf3799a5 1620 DCD False, State, Store ; Set to Interpret mode
Recifarium 1:1224cf3799a5 1621 DCD Exit
Recifarium 1:1224cf3799a5 1622
Recifarium 1:1224cf3799a5 1623 ;( ] )------------------------------( )
Recifarium 1:1224cf3799a5 1624 LCBrtk LINK LOBrtk
Recifarium 1:1224cf3799a5 1625 DCB 1, "]"
Recifarium 1:1224cf3799a5 1626 CBrtk DCD doCol
Recifarium 1:1224cf3799a5 1627 DCD True, State, Store ; Set to Compile mode
Recifarium 1:1224cf3799a5 1628 DCD Exit
Recifarium 1:1224cf3799a5 1629 LTORG
Recifarium 0:df922596d756 1630
Recifarium 1:1224cf3799a5 1631 ;( DMP )---------------------------(addr-- )
Recifarium 1:1224cf3799a5 1632 LDump LINK LCBrtk
Recifarium 1:1224cf3799a5 1633 DCB 3,"DMP"
Recifarium 1:1224cf3799a5 1634 Dump DCD doCol
Recifarium 1:1224cf3799a5 1635 DCD Base, At, ToR ;(addr R:oldbase)
Recifarium 1:1224cf3799a5 1636 DCD Hex
Recifarium 1:1224cf3799a5 1637 DCD Lit32, -4, And ; word align
Recifarium 1:1224cf3799a5 1638 Dump2 DCD Dup,Lit32,9,DotR
Recifarium 1:1224cf3799a5 1639 DCD Dup, At ;(addr,word R:oldbase)
Recifarium 1:1224cf3799a5 1640 DCD StrPic, Numb, Numb
Recifarium 1:1224cf3799a5 1641 DCD Numb, Numb
Recifarium 1:1224cf3799a5 1642 DCD Numb, Numb
Recifarium 1:1224cf3799a5 1643 DCD Numb, Numb, EndPic
Recifarium 1:1224cf3799a5 1644 DCD Space, Type, Cr
Recifarium 1:1224cf3799a5 1645 DCD Key
Recifarium 1:1224cf3799a5 1646 DCD Lit32,0x1b, Eq, Not ; Esc key ?
Recifarium 1:1224cf3799a5 1647 ZBranch Dump3
Recifarium 1:1224cf3799a5 1648 DCD Cell, Plus
Recifarium 1:1224cf3799a5 1649 Branch Dump2
Recifarium 1:1224cf3799a5 1650 Dump3 DCD Drop
Recifarium 1:1224cf3799a5 1651 DCD FromR, Base, Store
Recifarium 1:1224cf3799a5 1652 DCD Exit
Recifarium 1:1224cf3799a5 1653
Recifarium 1:1224cf3799a5 1654 ;( ALIGNED )---------------------------(addr -- w.addr)
Recifarium 1:1224cf3799a5 1655 LAligned LINK LDump
Recifarium 1:1224cf3799a5 1656 DCB 7,"ALIGNED"
Recifarium 1:1224cf3799a5 1657 Aligned DCD xAligned
Recifarium 1:1224cf3799a5 1658 xAligned ADDS TOS, #3
Recifarium 1:1224cf3799a5 1659 LSRS TOS, #2
Recifarium 1:1224cf3799a5 1660 LSLS TOS, #2
Recifarium 1:1224cf3799a5 1661 Next
Recifarium 1:1224cf3799a5 1662
Recifarium 1:1224cf3799a5 1663 ;( ALIGN )---------------------------( -- )
Recifarium 1:1224cf3799a5 1664 LAlign LINK LAligned
Recifarium 1:1224cf3799a5 1665 DCB 5,"ALIGN"
Recifarium 1:1224cf3799a5 1666 Align DCD doCol
Recifarium 1:1224cf3799a5 1667 DCD Here, Dup, At, Aligned
Recifarium 1:1224cf3799a5 1668 DCD Store
Recifarium 1:1224cf3799a5 1669 DCD Exit
Recifarium 1:1224cf3799a5 1670
Recifarium 1:1224cf3799a5 1671 ;( CREATE )---------------------------( -- )
Recifarium 1:1224cf3799a5 1672 LCreate LINK LAlign
Recifarium 1:1224cf3799a5 1673 DCB 6,"CREATE"
Recifarium 1:1224cf3799a5 1674 Create DCD doCol
Recifarium 1:1224cf3799a5 1675 DCD Align, Here, Latest
Recifarium 1:1224cf3799a5 1676 DCD Comma
Recifarium 1:1224cf3799a5 1677 DCD Bl, Word
Recifarium 1:1224cf3799a5 1678 DCD DotS
Recifarium 1:1224cf3799a5 1679 DCD Exit
Recifarium 1:1224cf3799a5 1680
Recifarium 1:1224cf3799a5 1681 Mess8 DCB 9,"Creating "
Recifarium 1:1224cf3799a5 1682 ;( FLASH )---------------------------( -- )
Recifarium 1:1224cf3799a5 1683 LFlash LINK LCreate
Recifarium 1:1224cf3799a5 1684 DCB 5,"FLASH"
Recifarium 1:1224cf3799a5 1685 Flash DCD doCol
Recifarium 0:df922596d756 1686
Recifarium 1:1224cf3799a5 1687 DCD Exit
Recifarium 1:1224cf3799a5 1688
Recifarium 1:1224cf3799a5 1689 ;( RAM )---------------------------( -- )
Recifarium 1:1224cf3799a5 1690 LRam LINK LFlash
Recifarium 1:1224cf3799a5 1691 DCB 3,"RAM"
Recifarium 1:1224cf3799a5 1692 Ram DCD doCol
Recifarium 1:1224cf3799a5 1693 DCD Here, At
Recifarium 1:1224cf3799a5 1694 DCD CHere, Store
Recifarium 1:1224cf3799a5 1695 DCD Exit
Recifarium 1:1224cf3799a5 1696
Recifarium 1:1224cf3799a5 1697 ;( : )---------------------------( -- )
Recifarium 1:1224cf3799a5 1698 LColon LINK LRam
Recifarium 1:1224cf3799a5 1699 DCB 1+Immed,":"
Recifarium 1:1224cf3799a5 1700 Colon DCD doCol
Recifarium 1:1224cf3799a5 1701 DCD Create
Recifarium 1:1224cf3799a5 1702 DCD CBrtk ; Set compiler state on
Recifarium 1:1224cf3799a5 1703 ; DCD
Recifarium 1:1224cf3799a5 1704 DCD Exit
Recifarium 1:1224cf3799a5 1705
Recifarium 1:1224cf3799a5 1706 ;( ; )---------------------------( -- )
Recifarium 1:1224cf3799a5 1707 LSemi LINK LColon
Recifarium 1:1224cf3799a5 1708 DCB 1+Immed,";"
Recifarium 1:1224cf3799a5 1709 Semi DCD doCol
Recifarium 1:1224cf3799a5 1710 DCD Lit32, Exit
Recifarium 1:1224cf3799a5 1711 DCD Comma
Recifarium 1:1224cf3799a5 1712 DCD OBrtk ; Set compiler state off
Recifarium 1:1224cf3799a5 1713 DCD Exit
Recifarium 1:1224cf3799a5 1714
Recifarium 1:1224cf3799a5 1715 ;( , )---------------------------(w -- )
Recifarium 1:1224cf3799a5 1716 LComma LINK LSemi
Recifarium 1:1224cf3799a5 1717 DCB 1+Cmponly,","
Recifarium 1:1224cf3799a5 1718 Comma DCD doCol
Recifarium 1:1224cf3799a5 1719 DCD Here, At, Store
Recifarium 1:1224cf3799a5 1720 DCD Cell, Here, AddSto
Recifarium 1:1224cf3799a5 1721 DCD Exit
Recifarium 1:1224cf3799a5 1722
Recifarium 1:1224cf3799a5 1723 ;( Hello )---------------------------(w -- )
Recifarium 1:1224cf3799a5 1724 LHello LINK LComma
Recifarium 1:1224cf3799a5 1725 DCB 5+Immed,"HELLO"
Recifarium 1:1224cf3799a5 1726 Hello DCD doCol
Recifarium 1:1224cf3799a5 1727 DCD Lit32, Mess9
Recifarium 1:1224cf3799a5 1728 DCD Count, Type
Recifarium 1:1224cf3799a5 1729 DCD Exit
Recifarium 1:1224cf3799a5 1730
Recifarium 0:df922596d756 1731 ;-----------------------------------
Recifarium 0:df922596d756 1732 ; CONSTANTS
Recifarium 0:df922596d756 1733 Mess1 DCB 11,"ENORA-Forth"
Recifarium 0:df922596d756 1734 Mess2 DCB 5, "Error"
Recifarium 0:df922596d756 1735 Mess3 DCB 7, "Unknown"
Recifarium 0:df922596d756 1736 Mess4 DCB 3, "Ok>"
Recifarium 1:1224cf3799a5 1737 Mess5 DCB 11,"Not numeric"
Recifarium 1:1224cf3799a5 1738 Mess6 DCB 12,"Stack empty",0x0d
Recifarium 1:1224cf3799a5 1739 Mess7 DCB 9,"Compiling "
Recifarium 1:1224cf3799a5 1740 Mess9 DCB 5,"Hello",0x0d
Recifarium 0:df922596d756 1741 DP0 DCD Begin
Recifarium 1:1224cf3799a5 1742 Last DCD VLatest
Recifarium 1:1224cf3799a5 1743 Avail DCD end_data
Recifarium 1:1224cf3799a5 1744 ;-----------------------------------
Recifarium 0:df922596d756 1745
Recifarium 1:1224cf3799a5 1746 NextEntry EQU .
Recifarium 0:df922596d756 1747
Recifarium 1:1224cf3799a5 1748 VLatest EQU LHello
Recifarium 0:df922596d756 1749
Recifarium 1:1224cf3799a5 1750 ;---------End of Dictionary
Recifarium 1:1224cf3799a5 1751
Recifarium 1:1224cf3799a5 1752 AREA |.data|, DATA
Recifarium 1:1224cf3799a5 1753
Recifarium 1:1224cf3799a5 1754 Begin DCD 0
Recifarium 1:1224cf3799a5 1755 SPACE ReturnStackLength
Recifarium 1:1224cf3799a5 1756 SPACE RAMForIAP
Recifarium 1:1224cf3799a5 1757 SPACE DataStackLength
Recifarium 1:1224cf3799a5 1758 __initial_sp
Recifarium 1:1224cf3799a5 1759 APAD SPACE 128
Recifarium 1:1224cf3799a5 1760 TIB SPACE 128
Recifarium 1:1224cf3799a5 1761 RomBuff SPACE BuffSize
Recifarium 1:1224cf3799a5 1762 DLatest DCD 0 ; Point to latest link field
Recifarium 1:1224cf3799a5 1763 ;Latest DCD 0
Recifarium 1:1224cf3799a5 1764 AState DCD 0 ; True= Compile False= Interpret
Recifarium 1:1224cf3799a5 1765 VBase DCD 0
Recifarium 1:1224cf3799a5 1766 AnTib DCD 0
Recifarium 1:1224cf3799a5 1767 AtoIn DCD 0
Recifarium 1:1224cf3799a5 1768 Transit DCD 0
Recifarium 1:1224cf3799a5 1769 AHLD DCD 0
Recifarium 1:1224cf3799a5 1770 AHERE DCD 0 ; RAM pointer
Recifarium 1:1224cf3799a5 1771 ACHERE DCD 0 ; code pointer
Recifarium 1:1224cf3799a5 1772 ADHERE DCD 0 ; data pointer
Recifarium 0:df922596d756 1773
Recifarium 1:1224cf3799a5 1774 end_data EQU .
Recifarium 1:1224cf3799a5 1775 Length EQU end_data-Begin
Recifarium 1:1224cf3799a5 1776 END