Annotation of 3BSD/cmd/px/00case.s, revision 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.