Annotation of frontvm/as68k/test.s.S, revision 1.1.1.1

1.1       root        1: #define __Dpoo 0x24
                      2:        .align 4
                      3: jtab:
                      4:        .long   bad_jmp
                      5:        .long   bad_jmp
                      6:        .long   bad_jmp
                      7:        .long   bad_jmp
                      8:        .long   bad_jmp
                      9:        .long   bad_jmp
                     10:        .long   bad_jmp
                     11:        .long   bad_jmp
                     12:        .long   bad_jmp
                     13:        .long   bad_jmp
                     14:        .long   bad_jmp
                     15:        .long   bad_jmp
                     16:        .long   bad_jmp
                     17:        .long   bad_jmp
                     18:        .long   __l1c
                     19: jumptable:
                     20:        cmpl    $0x1c,%eax
                     21:        jg      bad_jmp2
                     22:        shrl    $1,%eax
                     23:        jmp     *jtab(,%eax,4)
                     24:        .section        .rodata
                     25: bad_jmp_str:   .string "Error. Bad jump target: $%x at line %d.\n"
                     26:        .text
                     27: bad_jmp:
                     28:        shll    $1,%eax
                     29: bad_jmp2:
                     30:        pushl   line_no
                     31:        pushl   %eax
                     32:        pushl   $bad_jmp_str
                     33:        call    printf
                     34:        addl    $8,%esp
                     35:        call    abort
                     36: #define MEM_SIZE       0x110000
                     37: #define PROC_STATE 64
                     38: #define MemBase        STData+PROC_STATE
                     39: 
                     40:        .data
                     41:        .comm   STData,MEM_SIZE+PROC_STATE
                     42:        .comm   X,4
                     43:        .comm   N,4
                     44:        .comm   Z,4
                     45:        .comm   V,4
                     46:        .comm   C,4
                     47:        .comm   bX,4
                     48:        .comm   bN,4
                     49:        .comm   bZ,4
                     50:        .comm   bV,4
                     51:        .comm   bC,4
                     52:        .comm   rdest,4
                     53:        .comm   exceptions_pending_mask,4
                     54:        .comm   exceptions_pending_nums,32
                     55:        .comm   exception_handlers,4*32
                     56:        .comm   line_no,4
                     57: debugstr:      .string "$%x $%x $%x $%x $%x $%x $%x $%x*$%x $%x $%x $%x $%x $%x $%x $%x:%d\n"
                     58:        .global STRam
                     59: STRam: .long   STData+PROC_STATE
                     60:        .section        .rodata
                     61: bin_filename:  .string "test.s.bin"
                     62: open_mode:     .string "r"
                     63: 
                     64: dreg_fmt:              .string "D%d = $%08x    "
                     65: areg_fmt:      .string "A%d = $%08x\n"
                     66: cr:            .string "\n"
                     67: cc_names:      .string "XNZVC"
                     68: hex_fmt:               .string "$%02x "
                     69: illegal_fmt:   .string "Illegal instruction at line %d.\n"
                     70:        .text
                     71: .globl SetZFlag
                     72: SetZFlag:
                     73:        movl    4(%esp),%eax
                     74:        movb    %al,Z
                     75:        ret
                     76: .globl GetXFlag
                     77: GetXFlag:
                     78:        movl    X,%eax
                     79:        ret
                     80: .globl GetZFlag
                     81: GetZFlag:
                     82:        movl    Z,%eax
                     83:        ret
                     84: .globl GetCFlag
                     85: GetCFlag:
                     86:        movl    C,%eax
                     87:        ret
                     88: .globl GetNFlag
                     89: GetNFlag:
                     90:        movl    N,%eax
                     91:        ret
                     92: .globl GetVFlag
                     93: GetVFlag:
                     94:        movl    V,%eax
                     95:        ret
                     96: .globl DumpRegs
                     97: DumpRegs:
                     98:        pushl   %ebp
                     99:        pushl   %ebx
                    100:        pushl   %ecx
                    101:        pushl   %esi
                    102:        movl    $STData,%ebx
                    103:        xorl    %eax,%eax
                    104: 1:     pushl   %eax
                    105:        pushl   (%ebx,%eax,4)
                    106:        pushl   %eax
                    107:        pushl   $dreg_fmt
                    108:        call    printf
                    109:        addl    $12,%esp
                    110:        movl    (%esp),%eax
                    111:        pushl   8*4(%ebx,%eax,4)
                    112:        pushl   %eax
                    113:        pushl   $areg_fmt
                    114:        call    printf
                    115:        addl    $12,%esp
                    116:        popl    %eax
                    117:        inc     %eax
                    118:        cmpl    $8,%eax
                    119:        jl      1b
                    120:        movb    X,%al
                    121:        movl    $0,%ecx
                    122:        call    print_scat
                    123:        movb    N,%al
                    124:        movl    $1,%ecx
                    125:        call    print_scat
                    126:        movb    Z,%al
                    127:        movl    $2,%ecx
                    128:        call    print_scat
                    129:        movb    V,%al
                    130:        movl    $3,%ecx
                    131:        call    print_scat
                    132:        movb    C,%al
                    133:        movl    $4,%ecx
                    134:        call    print_scat
                    135:        pushl   $cr
                    136:        call    printf
                    137:        addl    $4,%esp
                    138:        movl    $STData+PROC_STATE,%esi
                    139:        movl    $MEM_SIZE,%ebx
                    140: 1:     movzbl  (%esi),%eax
                    141:        pushl   %eax
                    142:        pushl   $hex_fmt
                    143:        call    printf
                    144:        addl    $8,%esp
                    145:        inc     %esi
                    146:        dec     %ebx
                    147:        testl   $15,%ebx
                    148:        jz      3f
                    149: 2:     testl   %ebx,%ebx
                    150:        jnz     1b
                    151:        popl    %esi
                    152:        popl    %ecx
                    153:        popl    %ebx
                    154:        popl    %ebp
                    155:        ret
                    156: 3:     pushl   $cr
                    157:        call    printf
                    158:        addl    $4,%esp
                    159:        jmp     2b
                    160: print_scat:
                    161:        xorl    %ebx,%ebx
                    162:        cmpb    %al,%bl
                    163:        jz      1f
                    164:        movb    cc_names(%ecx),%al
                    165:        pushl   %eax
                    166:        call    putchar
                    167:        addl    $4,%esp
                    168: 1:     ret
                    169: .globl FlagException
                    170: FlagException:
                    171:        movl    4(%esp),%eax
                    172:        btsl    %eax,exceptions_pending_mask
                    173:        incb    exceptions_pending_nums(%eax)
                    174:        ret
                    175: .globl MemReadByte
                    176: MemReadByte:
                    177:        movl    4(%esp),%eax
                    178:        movsbl  STData+PROC_STATE(%eax),%eax
                    179:        ret
                    180: .globl MemReadWord
                    181: MemReadWord:
                    182:        movl    4(%esp),%eax
                    183:        movswl  STData+PROC_STATE(%eax),%eax
                    184:        xchg    %al,%ah
                    185:        ret
                    186: .globl MemReadLong
                    187: MemReadLong:
                    188:        movl    4(%esp),%eax
                    189:        movl    STData+PROC_STATE(%eax),%eax
                    190:        bswap   %eax
                    191:        ret
                    192: .globl MemWriteByte
                    193: MemWriteByte:
                    194:        movl    4(%esp),%eax
                    195:        movl    8(%esp),%edx
                    196:        movb    %dl,STData+PROC_STATE(%eax)
                    197:        ret
                    198: .globl MemWriteWord
                    199: MemWriteWord:
                    200:        movl    8(%esp),%edx
                    201:        movl    4(%esp),%eax
                    202:        xchg    %dl,%dh
                    203:        movw    %dx,STData+PROC_STATE(%eax)
                    204:        ret
                    205: .globl MemWriteLong
                    206: MemWriteLong:
                    207:        movl    8(%esp),%edx
                    208:        movl    4(%esp),%eax
                    209:        bswap   %edx
                    210:        movl    %edx,STData+PROC_STATE(%eax)
                    211:        ret
                    212: .globl GetReg
                    213: GetReg:
                    214:        movl    4(%esp),%eax
                    215:        movl    STData(,%eax,4),%eax
                    216:        ret
                    217: .globl SetReg
                    218: SetReg:
                    219:        movl    4(%esp),%eax
                    220:        movl    8(%esp),%edx
                    221:        movl    %edx,STData(,%eax,4)
                    222:        ret
                    223: .globl Init680x0
                    224: Init680x0:
                    225:        pushl   %esi
                    226:        pushl   %ebx
                    227:        pushl   $open_mode
                    228:        pushl   $bin_filename
                    229:        call    fopen
                    230:        movl    %eax, %ebx
                    231:        popl    %eax
                    232:        xorl    %eax, %eax
                    233:        testl   %ebx, %ebx
                    234:        popl    %edx
                    235:        je      1f
                    236:        pushl   $2
                    237:        pushl   $0
                    238:        pushl   %ebx
                    239:        call    fseek
                    240:        pushl   %ebx
                    241:        call    ftell
                    242:        pushl   $0
                    243:        movl    %eax, %esi
                    244:        pushl   $0
                    245:        pushl   %ebx
                    246:        call    fseek
                    247:        addl    $28, %esp
                    248:        xorl    %eax, %eax
                    249:        cmpl    $MEM_SIZE, %esi
                    250:        jge     1f
                    251:        pushl   %ebx
                    252:        pushl   %esi
                    253:        pushl   $1
                    254:        pushl   $STData+PROC_STATE
                    255:        call    fread
                    256:        pushl   %ebx
                    257:        call    fclose
                    258:        movl    $1, %eax
                    259:        addl    $20, %esp
                    260: 1:
                    261:        popl    %ebx
                    262:        popl    %esi
                    263:        ret
                    264: .globl Start680x0
                    265: Start680x0:
                    266:        pushl   %ebp
                    267:        pushl   %esi
                    268:        pushl   %edi
                    269:        pushl   %edx
                    270:        pushl   %ecx
                    271:        pushl   %ebx
                    272:        movl    $STData+PROC_STATE,%ebp
                    273: 
                    274: __l1c:
                    275:        movl    $1, line_no
                    276:        movl    $0,%eax
                    277: 
                    278: /* 0x1e */
                    279:        movl    $2, line_no
                    280:        movw    __Dpoo(%ebp),%bx
                    281:        rorw    $8,%bx
                    282:        addw    %bx,%ax
                    283:        sets    N
                    284:        seto    V
                    285:        setc    C
                    286:        setz    Z
                    287:        setc    X
                    288: 
                    289:        movl    %eax,-64(%ebp)
                    290:        popl    %ebx
                    291:        popl    %ecx
                    292:        popl    %edx
                    293:        popl    %edi
                    294:        popl    %esi
                    295:        popl    %ebp
                    296:        ret
                    297: handle_exception:
                    298:        movl    rdest,%ebx
                    299:        testl   %ebx,%ebx
                    300:        jnz     jumptable
                    301:        movl    %eax,rdest
                    302:        movl    exceptions_pending_mask,%edx
                    303:        xorl    %ecx,%ecx
                    304: 1:
                    305:        btl     %ecx,%edx
                    306:        jnc     2f
                    307:        movl    $exception_handlers,%ebx
                    308:        movb    exceptions_pending_nums(%ecx),%al
                    309:        decb    %al
                    310:        jnz     3f
                    311:        btrl    %ecx,exceptions_pending_mask
                    312:        3: movb %al,exceptions_pending_nums(%ecx)
                    313:        movl    (%ebx,%ecx,4),%eax
                    314:        movb    X,%bh
                    315:        movb    N,%bl
                    316:        movb    Z,%ch
                    317:        movb    V,%cl
                    318:        movb    C,%dh
                    319:        movb    %bh,bX
                    320:        movb    %bl,bN
                    321:        movb    %ch,bZ
                    322:        movb    %cl,bV
                    323:        movb    %dh,bC
                    324:        jmp     jumptable
                    325: 2:
                    326:        inc     %ecx
                    327:        cmpl    $32,%ecx
                    328:        jl      1b
                    329:        movl    rdest,%eax
                    330:        movl    $0,rdest
                    331:        jmp     jumptable

unix.superglobalmegacorp.com

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