; ; ; Bytecode.a ; ; Author Jonathan Kipling Knight ; Created 12/27/2000 ; Modified 12/27/2000 ; ; ; Primitive Functions addFn EQU 0x00 subtractFn EQU 0x01 arefFn EQU 0x02 setArefFn EQU 0x03 equalsFn EQU 0x04 notFn EQU 0x05 notEqualsFn EQU 0x06 multiplyFn EQU 0x07 divideFn EQU 0x08 divFn EQU 0x09 lessThanFn EQU 0x0A greaterThanFn EQU 0x0B greaterOrEqualFn EQU 0x0C lessOrEqualFn EQU 0x0D bitAndFn EQU 0x0E bitOrFn EQU 0x0F bitNotFn EQU 0x10 newIteratorFn EQU 0x11 lengthFn EQU 0x12 cloneFn EQU 0x13 setClassFn EQU 0x14 addArraySlotFn EQU 0x15 stringerFn EQU 0x16 hasPathFn EQU 0x17 classOfFn EQU 0x18 MACRO Bytecode $class, $num [ $num<7 DCB $class:SHL:3 + $num | DCB $class:SHL:3 + 7 DCB ($num:SHR:8):AND:0xFF DCB $num:AND:0xFF ] MEND MACRO Pop Bytecode 0x00, 0 MEND MACRO Dup Bytecode 0x00, 1 MEND MACRO Return Bytecode 0x00, 2 MEND MACRO PushSelf Bytecode 0x00, 3 MEND MACRO SetLexScope Bytecode 0x00, 4 MEND MACRO IterNext Bytecode 0x00, 5 MEND MACRO IterDone Bytecode 0x00, 6 MEND MACRO PopHandlers Bytecode 0x00, 7 MEND ; 0x01 - 0x02 classes are undefined MACRO Push $n Bytecode 0x03, $n ; 0x18 + $n MEND MACRO PushConstant $n Bytecode 0x04, $n ; 0x20 + $n MEND MACRO PushInteger $n PushConstant $n:SHL:2 MEND MACRO PushMagicPointer $n ASSERT $n>=0 ASSERT $n<4096 PushConstant $n:SHL:2 + 0x3 MEND MACRO PushCharacter $n PushConstant $n:SHL:4 + 0x6 MEND MACRO PushTrue PushConstant 0x1A MEND MACRO PushNIL PushConstant 0x2 MEND MACRO Call $n Bytecode 0x05, $n MEND MACRO Invoke $n Bytecode 0x06, $n MEND MACRO Send $n Bytecode 0x07, $n MEND MACRO SendIfDefined $n Bytecode 0x08, $n MEND MACRO Resend $n Bytecode 0x09, $n MEND MACRO ResendIfDefined $n Bytecode 0x0A, $n ; 0x50 + $n MEND MACRO Branch $n Bytecode 0x0B, $n MEND MACRO BranchIfTrue $n Bytecode 0x0C, $n MEND MACRO BranchIfFalse $n Bytecode 0x0D, $n MEND MACRO FindVar $n Bytecode 0x0E, $n MEND MACRO GetVar $n Bytecode 0x0F, $n MEND MACRO MakeFrame $n Bytecode 0x10, $n MEND MACRO MakeArray $n Bytecode 0x11, $n MEND MACRO GetPath $n ASSERT $n<2 ASSERT $n>=0 Bytecode 0x12, $n MEND MACRO SetPath $n ASSERT $n<2 ASSERT $n>=0 Bytecode 0x13, $n MEND MACRO SetVar $n Bytecode 0x14, $n MEND MACRO FindSetVar $n Bytecode 0x15, $n ; 0xA8 + $n MEND MACRO IncrVar $n Bytecode 0x16, $n MEND MACRO BranchIfNotDone $n Bytecode 0x17, $n MEND MACRO PrimitiveFn $n Bytecode 0x18, $n MEND MACRO NewHandlers $n Bytecode 0x19, $n MEND ; 0x1A - 0x1F classes are undefined END