--- np2/i286a/i286a.inc 2003/12/19 09:38:25 1.11 +++ np2/i286a/i286a.inc 2003/12/22 10:24:50 1.15 @@ -12,9 +12,9 @@ I_FLAG equ &0200 D_FLAG equ &0400 O_FLAG equ &0800 -CPU_SIZE equ 112 -CPU_STAT equ 0 - 112 -CPU_EXT equ 104 - 112 +CPU_SIZE equ 116 +CPU_STAT equ (0 - CPU_SIZE) +CPU_EXT equ (104 - CPU_SIZE) CPU_REG equ CPU_STAT + 0 CPU_SEG equ CPU_STAT + 16 @@ -39,12 +39,8 @@ CPU_GDTR equ CPU_STAT + 88 CPU_IDTR equ CPU_STAT + 94 CPU_MSW equ CPU_STAT + 100 ; cpu_resetreq equ CPU_STAT + 102 -; cpu_itfbank equ CPU_STAT + 103 +CPU_ITFBANK equ CPU_STAT + 103 ; cpu_stat_size equ 104 -CPU_EXTMEM equ CPU_STAT + 104 -CPU_EXTMEMSIZE equ CPU_STAT + 108 -; cpu_ext_size equ 8 -; cpu_mainmem equ CPU_STAT + 112 CPU_AL equ CPU_STAT + 0 CPU_AH equ CPU_STAT + 1 @@ -70,17 +66,37 @@ CPU_DS equ CPU_STAT + 22 CPU_FLAG equ CPU_STAT + 24 CPU_IP equ CPU_STAT + 26 + +CPU_EXTMEM equ CPU_EXT + 0 +CPU_EXTMEMSIZE equ CPU_EXT + 4 +MEMWAIT_TRAM equ CPU_EXT + 8 +MEMWAIT_VRAM equ CPU_EXT + 9 +MEMWAIT_GRCG equ CPU_EXT + 10 +; cpu_ext_size equ 12 + MAX_PREFIX equ 8 + + MACRO +$label CPUDBGS +$label ;; str r7, [r9, #CPU_REMAINCLOCK] + MEND + + MACRO +$label CPUDBGL +$label ;; ldr r7, [r9, #CPU_REMAINCLOCK] + MEND + + MACRO $label CPUSVC -$label +$label str r7, [r9, #CPU_REMAINCLOCK] MEND MACRO $label CPULDC -$label +$label ldr r7, [r9, #CPU_REMAINCLOCK] MEND MACRO @@ -108,27 +124,27 @@ $label CPULDF MACRO $label CPUWORK $clock -$label ldr r7, [r9, #CPU_REMAINCLOCK] +$label CPUDBGL sub r7, r7, $clock - str r7, [r9, #CPU_REMAINCLOCK] + CPUDBGS MEND MACRO $label CPUWKS $clock -$label ldr r7, [r9, #CPU_REMAINCLOCK] +$label CPUDBGL subs r7, r7, $clock - str r7, [r9, #CPU_REMAINCLOCK] + CPUDBGS MEND MACRO $label CREMSET $clock $label mov r7, $clock - str r7, [r9, #CPU_REMAINCLOCK] + CPUDBGS MEND MACRO $label NEXT_OPCODE -$label ldr r7, [r9, #CPU_REMAINCLOCK] +$label CPUDBGL cmp r7, #1 movge pc, r11 ldr r0, [r9, #CPU_BASECLOCK] @@ -136,13 +152,13 @@ $label ldr r7, [r9, #CPU_REMAINCLOCK] mov r7, #1 add r0, r0, r1 str r0, [r9, #CPU_BASECLOCK] - str r7, [r9, #CPU_REMAINCLOCK] + CPUDBGS mov pc, r11 MEND MACRO $label REMAIN_ADJUST $clk -$label ldr r7, [r9, #CPU_REMAINCLOCK] +$label CPUDBGL cmp r7, $clk moveq pc, r11 ldr r0, [r9, #CPU_BASECLOCK] @@ -150,23 +166,32 @@ $label ldr r7, [r9, #CPU_REMAINCLOCK] mov r7, $clk add r0, r0, r1 str r0, [r9, #CPU_BASECLOCK] - str r7, [r9, #CPU_REMAINCLOCK] + CPUDBGS mov pc, r11 MEND MACRO $label I286IRQCHECKTERM -$label ldr r7, [r9, #CPU_REMAINCLOCK] +$label CPUDBGL cmp r7, #0 movle pc, r11 ldr r0, [r9, #CPU_BASECLOCK] mov r1, r7 mov r7, #0 sub r0, r0, r1 - str r7, [r9, #CPU_REMAINCLOCK] str r0, [r9, #CPU_BASECLOCK] + CPUDBGS mov pc, r11 MEND + + MACRO +$label WORDACC $r, $l +$label tst $r, #1 + bne $l + cmp $r, #I286_MEMWRITEMAX + bcs $l + MEND + END