;$%@0 (+-*/) $; .TRIM @10% ^IND@76 ^TRIM@86% .STM @81% % $; @10% % ------ CHANGE SPACE TO TAB $; @10% % $; @10% % $; @10% % .STM BYTE $; .@10: DS 1@F1% % .STM BYTE $($); .@10: DS @24@F1% % .STM INT I$; .I@10: DW 0@F1% % .STM INT I$($); .I@10: DS @24*2@F1% % .STM GOSUB $; CALL ..@10@F1% % .STM I$=I$; LHLD .I@20@F1% SHLD .I@10@F1% % .STM $=+000; XRA A@F1% STA .@10@F1% % .STM I$=+K$; LXI H,.K@20@F1% SHLD .I@10@F1% % .STM $=+K$; MVI A,.K@20@F1% STA .@10@F1% % .STM I$=+$; LXI H,@24@F13% SHLD .I@10@F13% % .STM I$=I$(I$); LXI D,.I@20@F1% LHLD .I@30@F1% DAD H@F1% DAD D@F1% XCHG@F1% LXI H,.I@10@F1% LDAX D@F1% MOV M,A@F1% INX D@F1% INX H@F1% LDAX D@F1% MOV M,A@F1% % .STM I$=I$($); LXI D,.I@20@F1% LDA .@30@F1% ADD A@F1% MOV L,A@F1% MVI H,0@F1% DAD D@F1% XCHG@F1% LDAX D@F1% MOV L,A@F1% INX D@F1% LDAX D@F1% MOV H,A@F1% SHLD .I@10@F1% % .STM I$($)=I$; LXI D,.I@10@F1% LDA .@20@F1% ADD A@F1% MOV L,A@F1% MVI H,0@F1% DAD D@F1% XCHG@F1% LHLD .I@30@F1% MOV A,L@F1% STAX D@F1% INX D@F1% MOV A,H@F1% STAX D@F1% % .STM $(I$)=$; LHLD .I@20@F1% LXI D,.@10@F1% DAD D@F1% LDA .@30@F1% MOV M,A@F1% % .STM $=$(I$); LHLD .I@30@F1% LXI D,.@20@F1% DAD D@F1% MOV A,M@F1% STA .@10@F1% % .STM $=$($); LHLD .@30@F1% MVI H,0@F1% LXI D,.@20@F1% DAD D@F1% MOV A,M@F1% STA .@10@F1% % .STM $=I$; LDA .I@20@F1% STA .@10@F1% % .STM I$=$; LHLD .@20@F1% MVI H,0@F1% SHLD .I@10@F1% % .STM $=$; LDA .@20@F1% STA .@10@F1% % .STM MS '$'; CALL ?MSG@F13% DB '@10'@F1% EXTRN ?MSG@F13% % .STM I$=I$+I$; LHLD .I@30@F1% XCHG@F1% LHLD .I@20@F1% DAD D@F1% SHLD .I@10@F1% % .STM I$=I$*I$; LHLD .I@20@F1% XCHG@F1% LHLD .I@30@F1% CALL ?IMUL@F13% EXTRN ?IMUL@F13% SHLD .I@10@F1% % .STM I$=I$/I$; LHLD .I@30@F1% XCHG@F1% LHLD .I@20@F1% CALL ?IDIV@F13% EXTRN ?IDIV@F13% SHLD .I@10@F1% % .STM I$=-I$; LHLD .I@20@F13% CALL ?ICOMP@F13% EXTRN ?ICOMP@F13% SHLD .I@10@F13% % .STM I$=I$-I$; LHLD .I@30@F1% XCHG@F1% LHLD .I@20@F1% CALL ?ISUB@F13% EXTRN ?ISUB@F13% SHLD .I@10@F13% % .STM $=I$<=I$; LHLD .I@30@F13% XCHG@F13% LHLD .I@20@F13% CALL ?CDEHL@F13% EXTRN ?CDEHL@F13% CALL ?SETAC@F13% STA .@10@F13% % .STM $=I$$ SKIP $; @F61% % .DUMP STACK; ^DBG@56 .IF @51=T SKIP 1% @F9% .LET ^CNT=^CSP% ^CSP@16 @11@F7% ^CNT@26 ^CS@21@36% ^CS@21 "@31"@F14% .LET ^CNT=^CNT-1% @F8% ^LEV@46% ^LEV =@41@F14% % .DEBUG; .STO ^DBG=T% % .UNBUG; .STO ^DBG=F% % .IF $>$ SKIP $; @F6+% % .CAT $,$; @11@20@26 @F3% % - END CONCATENATION .TRIM $; .TRIM @10% % .TRIM $; .TRIM @10% % .TRIM $; .STO ^TRIM=@10% % .XSTM $; .INCLEV% .TRIM @10% ^TRIM@26 .YSTM @21% % .YSTM % % .YSTM ;@% % .INCLEV; .LET ^LEV=^LEV+1% .CAT ^IND, | % % .DECLEV; ^LEV@16 .IF @11<1 SKIP 2% .LET ^LEV=^LEV-1% ^IND@26 .UND @21% % -------- .UND $ | ; .STO ^IND=@10% % -------- .TOS; ^CSP@96 .IF @91<1 SKIP 2% ^CS@91@86 .STO ^CSI=@81% @F9% .STO ^CSI=*% % .CONSOLE; 5@F2% %% .LET ^ERR=0; .LET ^IOS=0; .LET ^LEV=0; .STO ^IND=; .LET ^CSP=0; .STO ^DBG=F .STO ^ELB=; .LET ^WPL=0; .STO ^CS0=*; .STO ^SOP=; .STO ^DOP=;