Thanks Don.
I was using an old version of this (pre Rhialto modifications).
However, the TRAP instruction appears to generate an error. There is a line missing from source file "assemble.c".
in the 'CASE OC_MARK:', just after the statement "value = parse_expr(cp,0);", there should be a statement "cp = value->cp;" otherwise the source line character pointer does not get moved on properly to satisfy the EOL check.
However, this didn't 'fix' my original problem. When invoking .FLT2 from with an a .MACRO, the assembler hangs. I will have another look at this later on tonight.
I also had a problem with .RADIX 2 (but this was in the previous - older - macro11 assembler source). I modified the original code for the UCSD p-code interpreter to use an OCTAL constant rather than a BINARY constant.
EDIT1: The .RADIX 2 problem appears to be fixed with the later release.
EDIT2: The bit of code that causes the macro11 assembler to loop appears to be:
Code:
;. BUILD A POWER OF TEN TABLE
EXPON = 0
.MACRO PWR10 EXP
;DERBODGE .FLT2 1.0E'EXP
.ENDM
TENTBL: .REPT 38.
PWR10 EXPON
EXPON = EXPON+1
.ENDR
Obviously, without the ";DERBODGE" present!
Using the construct:
Code:
.FLT2 1.0E0
.FLT2 1.0E1
Appears to work OK, so I suspect it has something to do with the concatenation within the macro.
Interestingly, putting some debug code into assembler.c within the while loop of "case P_FLT2:" resulted in the debug code not executing for some reason. Almost as though the assembler went into a loop before getting there...
Dave
Bookmarks