Annotation of 3BSD/cmd/px/00case.s, revision 1.1.1.1

1.1       root        1: # 00case.s
                      2: #
                      3: # Berkeley Pascal Assembler Kernel
                      4: #
                      5:        .globl  _interpret      #normal interpreter entry point
                      6: #
                      7: # register definitions
                      8: #
                      9: # registers R0 - R6 are for scratch use
                     10: #
                     11:        .set    lino, r11
                     12:        .set    lc, r10
                     13:        .set    dp, r9
                     14:        .set    loop, r8
                     15:        .set    buf, r7
                     16: #
                     17: # Global constants
                     18: #
                     19:        .set    R2,0x004        #register fields in call mask
                     20:        .set    R3,0x008
                     21:        .set    R4,0x010
                     22:        .set    R5,0x020
                     23:        .set    R6,0x040
                     24:        .set    R7,0x080
                     25:        .set    R8,0x100
                     26:        .set    R9,0x200
                     27:        .set    R10,0x400
                     28:        .set    R11,0x800
                     29:        .set    SIGINT,2        #interrupt signal
                     30:        .set    SIGFPE,8        #arithmetic exception signal
                     31:        .set    SIGSEGV,11      #segmentation violation
                     32:        .set    MASK,6          #offset of save mask in call stack
                     33:        .set    FP,12           #offset of "fp" in call stack
                     34:        .set    PC,16           #offset of "pc" in call stack
                     35:        .set    REGS,20         #beginning of saved registers in call stack
                     36:        .set    O_DATE,0346     #DATE opcode number
                     37:        .set    O_TIME,0347     #TIME opcode number
                     38:        .set    tempsize,-256   #maximum required temporary stack space
                     39:        .set    HZ,60           #interrupt frequency
                     40: #
                     41: # program variables
                     42: #
                     43:        .globl  _display        #runtime display
                     44:        .globl  _addrsze        #size of addresses
                     45:        .globl  _file           #current file name
                     46:        .globl  _bufopt         #standard output buffering option
                     47:        .globl  _fchain         #head of active file chain
                     48:        .globl  _llimit         #max number of output lines
                     49:        .globl  _stcnt          #number of stmts executed
                     50:        .globl  _stlim          #max number of stmts to exec
                     51:        .globl  _nodump         #1 => no postmortum dump
                     52:        .globl  _perrno         #interpreter error number
                     53:        .globl  _profcnts       #PX profile execution counts
                     54:        .globl  _pxpbuf         #ptr to pxp buffer
                     55:        .globl  _pxpsize        #size of pxp buffer
                     56:        .globl  _argc           #number of passed args
                     57:        .globl  _argv           #values of passed args
                     58:        .globl  __iob           #base of I/O buffer block
                     59: #
                     60: # system subroutines
                     61: #
                     62:        .globl  _signal
                     63:        .globl  _time
                     64:        .globl  _times
                     65: #
                     66: # system math routines
                     67: #
                     68:        .globl  _atan
                     69:        .globl  _cos
                     70:        .globl  _exp
                     71:        .globl  _log
                     72:        .globl  _sin
                     73:        .globl  _sqrt
                     74:        .globl  _srand
                     75:        .globl  _rand
                     76: #
                     77: # pascal specific subroutines
                     78: #
                     79:        .globl  _error          #error message routine
                     80:        .globl  _palloc         #heap allocator
                     81:        .globl  _pfree
                     82:        .globl  _pcttot         #set constructor
                     83:        .globl  _pdattim        #getting date, time info
                     84:        .globl  _perror         #process pxp errors
                     85: #
                     86: # initializing the interpreter
                     87: #
                     88: _interpret:
                     89:        .word   0xffc           #register save mask
                     90:        moval   iloop,r8
                     91:        tstl    8(ap)           #check for profiling
                     92:        beql    l0050
                     93:        moval   ploop,r8        #set profiling request
                     94: l0050:
                     95:        callg   *4(ap),l0051    #set ap to base of program
                     96:        ret
                     97: l0051:
                     98:        .word   0
                     99:        bispsw  $0xe0           #enable overflow traps
                    100:        movl    ap,r10          #program start address
                    101:        moval   _display,r9
                    102:        moval   -4(sp),(r9)
                    103:        pushal  stderr          #set up global file variables
                    104:        movl    sp,stderr+FLEV
                    105:        movl    _llimit,stderr+LLIMIT
                    106:        pushal  stdout
                    107:        movl    sp,stdout+FLEV
                    108:        movl    _llimit,stdout+LLIMIT
                    109:        pushal  stdin
                    110:        movl    sp,stdin+FLEV
                    111:        moval   stdin,_fchain
                    112:        jmp     (r8)            #begin interpreter
                    113: #
                    114: # main interpreter loop
                    115: # the instruction 'jmp (loop)'
                    116: # transfers here
                    117: #
                    118: ploop:
                    119:        movzbl  (r10),r0
                    120:        incl    _profcnts[r0]
                    121: iloop:
                    122:        caseb   (r10)+,$0,$255
                    123: optab:
                    124:        .word   _ABORT-optab
                    125:        .word   _HALT-optab
                    126:        .word   _TRA4-optab
                    127:        .word   _NODUMP-optab
                    128:        .word   _BEG-optab
                    129:        .word   _END-optab
                    130:        .word   _CALL-optab
                    131:        .word   _TRACNT-optab
                    132:        .word   _PUSH-optab
                    133:        .word   _POP-optab
                    134:        .word   _INX4-optab
                    135:        .word   _SDUP-optab
                    136:        .word   _IF-optab
                    137:        .word   _TRA-optab
                    138:        .word   _LINO-optab
                    139:        .word   _GOTO-optab
                    140:        .word   _REL2-optab
                    141:        .word   _REL4-optab
                    142:        .word   _REL24-optab
                    143:        .word   _REL42-optab
                    144:        .word   _REL8-optab
                    145:        .word   _RELG-optab
                    146:        .word   _RELT-optab
                    147:        .word   badop-optab
                    148:        .word   _REL28-optab
                    149:        .word   _REL48-optab
                    150:        .word   _REL82-optab
                    151:        .word   _REL84-optab
                    152:        .word   _AND-optab
                    153:        .word   _OR-optab
                    154:        .word   _NOT-optab
                    155:        .word   badop-optab
                    156:        .word   _AS2-optab
                    157:        .word   _AS4-optab
                    158:        .word   _AS24-optab
                    159:        .word   _AS42-optab
                    160:        .word   _AS8-optab
                    161:        .word   _INX2P2-optab
                    162:        .word   _INX4P2-optab
                    163:        .word   _AS-optab
                    164:        .word   _AS21-optab
                    165:        .word   _AS41-optab
                    166:        .word   _AS28-optab
                    167:        .word   _AS48-optab
                    168:        .word   _OFF-optab
                    169:        .word   _INX2-optab
                    170:        .word   _NIL-optab
                    171:        .word   _LV-optab
                    172:        .word   _ADD2-optab
                    173:        .word   _ADD4-optab
                    174:        .word   _ADD24-optab
                    175:        .word   _ADD42-optab
                    176:        .word   _ADD28-optab
                    177:        .word   _ADD48-optab
                    178:        .word   _ADD82-optab
                    179:        .word   _ADD84-optab
                    180:        .word   _SUB2-optab
                    181:        .word   _SUB4-optab
                    182:        .word   _SUB24-optab
                    183:        .word   _SUB42-optab
                    184:        .word   _SUB28-optab
                    185:        .word   _SUB48-optab
                    186:        .word   _SUB82-optab
                    187:        .word   _SUB84-optab
                    188:        .word   _MUL2-optab
                    189:        .word   _MUL4-optab
                    190:        .word   _MUL24-optab
                    191:        .word   _MUL42-optab
                    192:        .word   _MUL28-optab
                    193:        .word   _MUL48-optab
                    194:        .word   _MUL82-optab
                    195:        .word   _MUL84-optab
                    196:        .word   _ABS2-optab
                    197:        .word   _ABS4-optab
                    198:        .word   _ABS8-optab
                    199:        .word   badop-optab
                    200:        .word   _ADD8-optab
                    201:        .word   _SUB8-optab
                    202:        .word   _MUL8-optab
                    203:        .word   _DVD8-optab
                    204:        .word   _DIV2-optab
                    205:        .word   _DIV4-optab
                    206:        .word   _DIV24-optab
                    207:        .word   _DIV42-optab
                    208:        .word   badop-optab
                    209:        .word   badop-optab
                    210:        .word   badop-optab
                    211:        .word   badop-optab
                    212:        .word   _MOD2-optab
                    213:        .word   _MOD4-optab
                    214:        .word   _MOD24-optab
                    215:        .word   _MOD42-optab
                    216:        .word   badop-optab
                    217:        .word   badop-optab
                    218:        .word   badop-optab
                    219:        .word   badop-optab
                    220:        .word   _NEG2-optab
                    221:        .word   _NEG4-optab
                    222:        .word   _NEG8-optab
                    223:        .word   badop-optab
                    224:        .word   badop-optab
                    225:        .word   badop-optab
                    226:        .word   badop-optab
                    227:        .word   badop-optab
                    228:        .word   badop-optab
                    229:        .word   badop-optab
                    230:        .word   badop-optab
                    231:        .word   badop-optab
                    232:        .word   badop-optab
                    233:        .word   badop-optab
                    234:        .word   badop-optab
                    235:        .word   badop-optab
                    236:        .word   _DVD2-optab
                    237:        .word   _DVD4-optab
                    238:        .word   _DVD24-optab
                    239:        .word   _DVD42-optab
                    240:        .word   _DVD28-optab
                    241:        .word   _DVD48-optab
                    242:        .word   _DVD82-optab
                    243:        .word   _DVD84-optab
                    244:        .word   _RV1-optab
                    245:        .word   _RV2-optab
                    246:        .word   _RV4-optab
                    247:        .word   _RV8-optab
                    248:        .word   _IND1-optab
                    249:        .word   _IND2-optab
                    250:        .word   _IND4-optab
                    251:        .word   _IND8-optab
                    252:        .word   _CON1-optab
                    253:        .word   _CON2-optab
                    254:        .word   _CON4-optab
                    255:        .word   _CON8-optab
                    256:        .word   _RV-optab
                    257:        .word   _IND-optab
                    258:        .word   _CON-optab
                    259:        .word   badop-optab
                    260:        .word   _RANG2-optab
                    261:        .word   _RANG42-optab
                    262:        .word   _RSNG2-optab
                    263:        .word   _RSNG42-optab
                    264:        .word   _RANG4-optab
                    265:        .word   _RANG24-optab
                    266:        .word   _RSNG4-optab
                    267:        .word   _RSNG24-optab
                    268:        .word   _WRITEF-optab
                    269:        .word   _WRITEC-optab
                    270:        .word   _WRITES-optab
                    271:        .word   _WRITEB-optab
                    272:        .word   badop-optab
                    273:        .word   badop-optab
                    274:        .word   badop-optab
                    275:        .word   badop-optab
                    276:        .word   _BLKBEG-optab
                    277:        .word   _PUSH4-optab
                    278:        .word   _POP4-optab
                    279:        .word   badop-optab
                    280:        .word   badop-optab
                    281:        .word   badop-optab
                    282:        .word   badop-optab
                    283:        .word   badop-optab
                    284:        .word   _CASE1OP-optab
                    285:        .word   _CASE2OP-optab
                    286:        .word   _CASE4OP-optab
                    287:        .word   _PXPBUF-optab
                    288:        .word   _COUNT-optab
                    289:        .word   badop-optab
                    290:        .word   badop-optab
                    291:        .word   badop-optab
                    292:        .word   _ADDT-optab
                    293:        .word   _SUBT-optab
                    294:        .word   _MULT-optab
                    295:        .word   _INCT-optab
                    296:        .word   _CTTOT-optab
                    297:        .word   _CARD-optab
                    298:        .word   _IN-optab
                    299:        .word   _ASRT-optab
                    300:        .word   _FOR1U-optab
                    301:        .word   _FOR2U-optab
                    302:        .word   _FOR4U-optab
                    303:        .word   _FOR1D-optab
                    304:        .word   _FOR2D-optab
                    305:        .word   _FOR4D-optab
                    306:        .word   _STLIM-optab
                    307:        .word   _SCLCK-optab
                    308:        .word   _STOI-optab
                    309:        .word   _STOD-optab
                    310:        .word   _ITOD-optab
                    311:        .word   _ITOS-optab
                    312:        .word   _BUFF-optab
                    313:        .word   _WCLCK-optab
                    314:        .word   _WRHEX2-optab
                    315:        .word   _WRHEX4-optab
                    316:        .word   _GET-optab
                    317:        .word   _PUT-optab
                    318:        .word   _MESSAGE-optab
                    319:        .word   _FNIL-optab
                    320:        .word   _EOF-optab
                    321:        .word   _EOLN-optab
                    322:        .word   _RESET-optab
                    323:        .word   _REWRITE-optab
                    324:        .word   _REMOVE-optab
                    325:        .word   _READ4-optab
                    326:        .word   _UNIT-optab
                    327:        .word   _READC-optab
                    328:        .word   _READ8-optab
                    329:        .word   _UNITINP-optab
                    330:        .word   _UNITOUT-optab
                    331:        .word   _READLN-optab
                    332:        .word   _WRIT2-optab
                    333:        .word   _WRIT4-optab
                    334:        .word   _WRITB-optab
                    335:        .word   _WRITC-optab
                    336:        .word   _WRIT8-optab
                    337:        .word   _WRITG-optab
                    338:        .word   _WRIT82-optab
                    339:        .word   _WRITLN-optab
                    340:        .word   _WROCT2-optab
                    341:        .word   _WROCT4-optab
                    342:        .word   _FLUSH-optab
                    343:        .word   _PACK-optab
                    344:        .word   _UNPACK-optab
                    345:        .word   _LLIMIT-optab
                    346:        .word   _ARGC-optab
                    347:        .word   _ARGV-optab
                    348:        .word   _CLCK-optab
                    349:        .word   _SEED-optab
                    350:        .word   _RANDOM-optab
                    351:        .word   _DISPOSE-optab
                    352:        .word   _NEW-optab
                    353:        .word   _EXPO-optab
                    354:        .word   _DATE-optab
                    355:        .word   _TIME-optab
                    356:        .word   _ATAN-optab
                    357:        .word   _COS-optab
                    358:        .word   _EXP-optab
                    359:        .word   _LN-optab
                    360:        .word   _SIN-optab
                    361:        .word   _SQRT-optab
                    362:        .word   _CHR2-optab
                    363:        .word   _CHR4-optab
                    364:        .word   _ODD2-optab
                    365:        .word   _ODD4-optab
                    366:        .word   _PRED2-optab
                    367:        .word   _PRED4-optab
                    368:        .word   _PRED24-optab
                    369:        .word   _SUCC2-optab
                    370:        .word   _SUCC4-optab
                    371:        .word   _SUCC24-optab
                    372:        .word   _DEFNAME-optab
                    373:        .word   _PAGE-optab
                    374:        .word   _UNDEF-optab
                    375:        .word   _SQR2-optab
                    376:        .word   _SQR4-optab
                    377:        .word   _SQR8-optab
                    378:        .word   _ROUND-optab
                    379:        .word   _TRUNC-optab
                    380: badop:
                    381:        incl    r10
                    382:        movw    $EBADOP,_perrno
                    383:        jbr     error

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.