; -*- coding: utf-8 -*- ; ForthThreads.mac voclink .set 0 ; initial vocabulary link forthlink .set 0 forthlink1 .set 0 forthlink2 .set 0 forthlink3 .set 0 forthlink4 .set 0 forthlink5 .set 0 forthlink6 .set 0 forthlink7 .set 0 forthlink8 .set 0 forthlink9 .set 0 forthlink10 .set 0 forthlink11 .set 0 forthlink12 .set 0 forthlink13 .set 0 forthlink14 .set 0 forthlink15 .set 0 forthlink16 .set 0 forthlink17 .set 0 forthlink18 .set 0 forthlink19 .set 0 forthlink20 .set 0 forthlink21 .set 0 forthlink22 .set 0 forthlink23 .set 0 forthlink24 .set 0 forthlink25 .set 0 forthlink26 .set 0 forthlink27 .set 0 forthlink28 .set 0 forthlink29 .set 0 forthlink30 .set 0 forthlink31 .set 0 asmlink .set 0 asmlink1 .set 0 asmlink2 .set 0 asmlink3 .set 0 asmlink4 .set 0 asmlink5 .set 0 asmlink6 .set 0 asmlink7 .set 0 asmlink8 .set 0 asmlink9 .set 0 asmlink10 .set 0 asmlink11 .set 0 asmlink12 .set 0 asmlink13 .set 0 asmlink14 .set 0 asmlink15 .set 0 asmlink16 .set 0 asmlink17 .set 0 asmlink18 .set 0 asmlink19 .set 0 asmlink20 .set 0 asmlink21 .set 0 asmlink22 .set 0 asmlink23 .set 0 asmlink24 .set 0 asmlink25 .set 0 asmlink26 .set 0 asmlink27 .set 0 asmlink28 .set 0 asmlink29 .set 0 asmlink30 .set 0 asmlink31 .set 0 ;------------------------------------------- FORTHWORD .MACRO name ;------------------------------------------- ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary thread .set charfromstr(name,0) & ((THREADS-1)*2) .SWITCH thread .case 0 .word forthlink forthlink .set $ .case 2 .word forthlink1 forthlink1 .set $ .case 4 .word forthlink2 forthlink2 .set $ .case 6 .word forthlink3 forthlink3 .set $ .case 8 .word forthlink4 forthlink4 .set $ .case 10 .word forthlink5 forthlink5 .set $ .case 12 .word forthlink6 forthlink6 .set $ .case 14 .word forthlink7 forthlink7 .set $ .case 16 .word forthlink8 forthlink8 .set $ .case 18 .word forthlink9 forthlink9 .set $ .case 20 .word forthlink10 forthlink10 .set $ .case 22 .word forthlink11 forthlink11 .set $ .case 24 .word forthlink12 forthlink12 .set $ .case 26 .word forthlink13 forthlink13 .set $ .case 28 .word forthlink14 forthlink14 .set $ .case 30 .word forthlink15 forthlink15 .set $ .case 32 .word forthlink16 forthlink16 .set $ .case 34 .word forthlink17 forthlink17 .set $ .case 36 .word forthlink18 forthlink18 .set $ .case 38 .word forthlink19 forthlink19 .set $ .case 40 .word forthlink20 forthlink20 .set $ .case 42 .word forthlink21 forthlink21 .set $ .case 44 .word forthlink22 forthlink22 .set $ .case 46 .word forthlink23 forthlink23 .set $ .case 48 .word forthlink24 forthlink24 .set $ .case 50 .word forthlink25 forthlink25 .set $ .case 52 .word forthlink26 forthlink26 .set $ .case 54 .word forthlink27 forthlink27 .set $ .case 56 .word forthlink28 forthlink28 .set $ .case 58 .word forthlink29 forthlink29 .set $ .case 60 .word forthlink30 forthlink30 .set $ .case 62 .word forthlink31 forthlink31 .set $ .endcase .byte STRLEN(name),name ; .align 2 .ENDM ;------------------------------------------- FORTHWORDIMM .MACRO name ;------------------------------------------- ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary thread .set charfromstr(name,0) & ((THREADS-1)*2) .SWITCH thread .case 0 .word forthlink forthlink .set $ .case 2 .word forthlink1 forthlink1 .set $ .case 4 .word forthlink2 forthlink2 .set $ .case 6 .word forthlink3 forthlink3 .set $ .case 8 .word forthlink4 forthlink4 .set $ .case 10 .word forthlink5 forthlink5 .set $ .case 12 .word forthlink6 forthlink6 .set $ .case 14 .word forthlink7 forthlink7 .set $ .case 16 .word forthlink8 forthlink8 .set $ .case 18 .word forthlink9 forthlink9 .set $ .case 20 .word forthlink10 forthlink10 .set $ .case 22 .word forthlink11 forthlink11 .set $ .case 24 .word forthlink12 forthlink12 .set $ .case 26 .word forthlink13 forthlink13 .set $ .case 28 .word forthlink14 forthlink14 .set $ .case 30 .word forthlink15 forthlink15 .set $ .case 32 .word forthlink16 forthlink16 .set $ .case 34 .word forthlink17 forthlink17 .set $ .case 36 .word forthlink18 forthlink18 .set $ .case 38 .word forthlink19 forthlink19 .set $ .case 40 .word forthlink20 forthlink20 .set $ .case 42 .word forthlink21 forthlink21 .set $ .case 44 .word forthlink22 forthlink22 .set $ .case 46 .word forthlink23 forthlink23 .set $ .case 48 .word forthlink24 forthlink24 .set $ .case 50 .word forthlink25 forthlink25 .set $ .case 52 .word forthlink26 forthlink26 .set $ .case 54 .word forthlink27 forthlink27 .set $ .case 56 .word forthlink28 forthlink28 .set $ .case 58 .word forthlink29 forthlink29 .set $ .case 60 .word forthlink30 forthlink30 .set $ .case 62 .word forthlink31 forthlink31 .set $ .endcase .byte STRLEN(name)+128,name ; .align 2 .ENDM ;------------------------------------------- asmword .MACRO name ;------------------------------------------- ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary thread .set charfromstr(name,0) & ((THREADS-1)*2) .SWITCH thread .case 0 .word asmlink asmlink .set $ .case 2 .word asmlink1 asmlink1 .set $ .case 4 .word asmlink2 asmlink2 .set $ .case 6 .word asmlink3 asmlink3 .set $ .case 8 .word asmlink4 asmlink4 .set $ .case 10 .word asmlink5 asmlink5 .set $ .case 12 .word asmlink6 asmlink6 .set $ .case 14 .word asmlink7 asmlink7 .set $ .case 16 .word asmlink8 asmlink8 .set $ .case 18 .word asmlink9 asmlink9 .set $ .case 20 .word asmlink10 asmlink10 .set $ .case 22 .word asmlink11 asmlink11 .set $ .case 24 .word asmlink12 asmlink12 .set $ .case 26 .word asmlink13 asmlink13 .set $ .case 28 .word asmlink14 asmlink14 .set $ .case 30 .word asmlink15 asmlink15 .set $ .case 32 .word asmlink16 asmlink16 .set $ .case 34 .word asmlink17 asmlink17 .set $ .case 36 .word asmlink18 asmlink18 .set $ .case 38 .word asmlink19 asmlink19 .set $ .case 40 .word asmlink20 asmlink20 .set $ .case 42 .word asmlink21 asmlink21 .set $ .case 44 .word asmlink22 asmlink22 .set $ .case 46 .word asmlink23 asmlink23 .set $ .case 48 .word asmlink24 asmlink24 .set $ .case 50 .word asmlink25 asmlink25 .set $ .case 52 .word asmlink26 asmlink26 .set $ .case 54 .word asmlink27 asmlink27 .set $ .case 56 .word asmlink28 asmlink28 .set $ .case 58 .word asmlink29 asmlink29 .set $ .case 60 .word asmlink30 asmlink30 .set $ .case 62 .word asmlink31 asmlink31 .set $ .endcase .byte STRLEN(name),name ; .align 2 .ENDM