--- np2/i286a/i286a.inc 2003/12/20 11:49:47 1.13 +++ np2/i286a/i286a.inc 2004/01/07 12:51:29 1.18 @@ -12,34 +12,39 @@ I_FLAG equ &0200 D_FLAG equ &0400 O_FLAG equ &0800 -CPU_SIZE equ 124 +MSW_PE equ &0001 +MSW_MP equ &0002 +MSW_EM equ &0004 +MSW_TS equ &0008 + +CPU_SIZE equ 120 CPU_STAT equ (0 - CPU_SIZE) CPU_EXT equ (104 - CPU_SIZE) CPU_REG equ CPU_STAT + 0 CPU_SEG equ CPU_STAT + 16 -CPU_REMAINCLOCK equ CPU_STAT + 28 -CPU_BASECLOCK equ CPU_STAT + 32 -; cpu_clock equ CPU_STAT + 36 -CPU_ADRSMASK equ CPU_STAT + 40 -CPU_ES_BASE equ CPU_STAT + 44 -CPU_CS_BASE equ CPU_STAT + 48 -CPU_SS_BASE equ CPU_STAT + 52 -CPU_DS_BASE equ CPU_STAT + 56 -CPU_SS_FIX equ CPU_STAT + 60 -CPU_DS_FIX equ CPU_STAT + 64 -CPU_PREFIX equ CPU_STAT + 68 -CPU_TRAP equ CPU_STAT + 70 -; cpu_type equ CPU_STAT + 71 -; cpu_pf_semaphore equ CPU_STAT + 72 -; cpu_repbak equ CPU_STAT + 76 -CPU_INPUT equ CPU_STAT + 80 -; cpu_ovflag equ CPU_STAT + 84 -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_ES_BASE equ CPU_STAT + 28 +CPU_CS_BASE equ CPU_STAT + 32 +CPU_SS_BASE equ CPU_STAT + 36 +CPU_DS_BASE equ CPU_STAT + 40 +CPU_SS_FIX equ CPU_STAT + 44 +CPU_DS_FIX equ CPU_STAT + 48 +CPU_ADRSMASK equ CPU_STAT + 52 +CPU_PREFIX equ CPU_STAT + 56 +; cpu_resetreq equ CPU_STAT + 57 +CPU_GDTR equ CPU_STAT + 58 +CPU_MSW equ CPU_STAT + 64 +CPU_IDTR equ CPU_STAT + 66 +CPU_LDTR equ CPU_STAT + 72 +CPU_LDTRC equ CPU_STAT + 74 +CPU_TR equ CPU_STAT + 80 +CPU_TRC equ CPU_STAT + 82 +; cpu_type equ CPU_STAT + 88 +CPU_ITFBANK equ CPU_STAT + 89 +; cpu_ram_d0 equ CPU_STAT + 90 +CPU_REMAINCLOCK equ CPU_STAT + 92 +CPU_BASECLOCK equ CPU_STAT + 96 +; cpu_clock equ CPU_STAT + 100 ; cpu_stat_size equ 104 CPU_AL equ CPU_STAT + 0 @@ -69,26 +74,37 @@ 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 -FONTPTR_LOW equ CPU_EXT + 12 -FONTPTR_HIGH equ CPU_EXT + 16 -; cpu_ext_size equ 20 +CPU_INPUT equ CPU_EXT + 8 +MEMWAIT_TRAM equ CPU_EXT + 12 +MEMWAIT_VRAM equ CPU_EXT + 13 +MEMWAIT_GRCG equ CPU_EXT + 14 +; cpu_ext_size equ 16 MAX_PREFIX equ 8 + MACRO -$label CPUSVC +$label CPUDBGS $label ;; str r7, [r9, #CPU_REMAINCLOCK] MEND MACRO -$label CPULDC +$label CPUDBGL $label ;; ldr r7, [r9, #CPU_REMAINCLOCK] MEND + + MACRO +$label CPUSVC +$label str r7, [r9, #CPU_REMAINCLOCK] + MEND + + MACRO +$label CPULDC +$label ldr r7, [r9, #CPU_REMAINCLOCK] + MEND + MACRO $label CPUSVF $label str r8, [r9, #CPU_FLAG] @@ -114,27 +130,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] @@ -142,13 +158,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] @@ -156,23 +172,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