.TITLE $PRSTK .PSECT $PRSTK ; ; DATA STRUCTURES COMMON TO BOTH PARSAE AND EVALAE ARE ; STORED IN THIS MODULE SO THAT THEY CAN BE PLACED IN THE ; ROOT OF AN OVERLAY STRUCTURE. ; TYPICALY, PARSAE WOULD BE ON AN "INPUT" BRACH OF THE ; OVERLAY WITH EVALAE ON THE "OUTPUT" BRACH OF A PROGRAM. ; ;**************************************************************** ; ; ; ; INTERNAL DATA STRUNCTURES ; ;***************************************************************** ; FORMAT OF AN ENTRY IN THE OPCODE STACK ; ; BYTE 0-1 PRIORITY OF OPCODE ; BYTE 2-3 TYPE OF OPCODE (ADDRESS OF OPCODE ROUTINE CALLER) ; BYTE 4-5 ADDRESS OF ROUTINE TO PERFORM OPERATION ;**************************************************************** ;- TOPSTK:: .BLKW 3*30 OPSTK:: .WORD 0,0,0 ;+ ;**************************************************************** ; FORMAT OF AN ENTRY IN THE CONSTANT TABLE ; ; BYTE 0-7 SYMBOLIC NAME, LEFT JUSTIFIED, SPACE FILLED ; BYTE 8-11 NUMERIC VALUE, FLOATING POINT REAL ; ; THE LAST ENTRY IN THE TABLE IS SIGNALED BY A ZERO BYTE 0 ;***************************************************************** ;- CONTST:: .ASCII /PIE / .FLT2 3.141592654 .ASCII /E / .FLT2 2.718281828 .ASCII /TRUE / .FLT2 1.0 .ASCII /FALSE / .FLT2 0.0 .WORD 0 ;+ ;****************************************************************** ; FORMAT OF AN ENTRY IN THE UNARY OPCODES TABLE ; ; BYTE 0-7 SYMBOLIC NAME, LEFT JUSTIFIED, SPACE FILLED ; BYTE 8-9 ADDRESS OF SUBROUTINE THAT COMPUTES RESULT ; ; LAST ENTRY IS SIGNALED BY A ZERO IN BYTE 0 ;***************************************************************** ;- UNOPS:: .ASCII /SQRT / .WORD FSQRT .ASCII /LN / .WORD FALOG .ASCII /EXP / .WORD EXP .ASCII /NOT / .WORD FNOT .ASCII /ABS / .WORD ABS .ASCII /CONF05 / .WORD CONF05 .ASCII /CONF01 / .WORD CONF01 .WORD 0 ;+ ;************************************************************** ; FORMAT OF AN ENTRY IN THE BINARY OPCODES TABLE ; ; BYTE 0-2 OPCODE, LEFT JUSTIFIED, ZERO FILLED ; BYTE 3 ARITHMETIC PRESIDENCE OF OPCODE ; BYTE 4-5 ADDRESS OF SUBROUTINE THAT PERFORMS OPERATION ; ; LAST ENTRY IN TABLE IS FLAGED BY A ZERO IN BYTE 0 ;***************************************************************** ;- BIOPS:: .ASCII /+/ .BYTE 0,0,30 .WORD PADD .ASCII /-/ .BYTE 0,0,30 .WORD PSUB .ASCII \/\ .BYTE 0,0,40 .WORD PDIV .ASCII /^/ .BYTE 0,0,50 .WORD FXTOY .ASCII /**/ .BYTE 0,50 .WORD FXTOY .ASCII /*/ .BYTE 0,0,40 .WORD PMUL .ASCII /&/ .BYTE 0,0,20 .WORD FAND ; VERTICLE BAR, ANOTHER FORM OF "OR" SYMBOL THAT IS SUPPORTED .BYTE 174,0,0,20 .WORD FOR .ASCII /\/ .BYTE 0,0,20 .WORD FOR .ASCII />=/ .BYTE 0,10 .WORD FGREQ .ASCII />=/ .BYTE 0,10 .WORD FLESEQ .ASCII /<>/ .BYTE 0,10 .WORD FNOTEQ .ASCII />/ .BYTE 0,0,10 .WORD FGREAT .ASCII /