|
|
| version 1.1, 2003/10/16 17:58:19 | version 1.8, 2003/12/01 10:45:46 |
|---|---|
| Line 6 | Line 6 |
| #include "iocore.h" | #include "iocore.h" |
| #include "bios.h" | #include "bios.h" |
| #include "biosmem.h" | #include "biosmem.h" |
| #include "keytable.res" | #include "sound.h" |
| #include "itfrom.res" | #include "fmboard.h" |
| #include "lio.h" | #include "lio.h" |
| #include "fdfmt.h" | |
| #include "fddfile.h" | #include "fddfile.h" |
| #include "fdd_mtr.h" | #include "fdd_mtr.h" |
| #include "fdfmt.h" | |
| #include "keytable.res" | |
| #include "itfrom.res" | |
| BOOL biosrom = FALSE; | BOOL biosrom = FALSE; |
| Line 94 static void bios_reinitbyswitch(void) { | Line 96 static void bios_reinitbyswitch(void) { |
| gdc.display |= 4; | gdc.display |= 4; |
| } | } |
| gdcs.textdisp |= GDCSCRN_EXT; | gdcs.textdisp |= GDCSCRN_EXT; |
| if ((pc.model >= PCMODEL_VX) && (usesound & 0x7e)) { | |
| iocore_out8(0x188, 0x27); | |
| iocore_out8(0x18a, 0x3f); | |
| } | |
| } | } |
| static void bios_vectorset(void) { // ver0.30 | static void bios_vectorset(void) { // ver0.30 |
| Line 147 void bios_init(void) { | Line 154 void bios_init(void) { |
| CopyMemory(mem + 0x0e8000, nosyscode, sizeof(nosyscode)); | CopyMemory(mem + 0x0e8000, nosyscode, sizeof(nosyscode)); |
| } | } |
| itf.bank = 0; | |
| // BIOS hookのアドレス変更 | // BIOS hookのアドレス変更 |
| for (i=0; i<0x20; i++) { | for (i=0; i<0x20; i++) { |
| STOREINTELWORD(mem + 0xfd868 + i*2, biosoffset[i]); | STOREINTELWORD(mem + 0xfd868 + i*2, biosoffset[i]); |
| Line 231 static void bios_boot(void) { | Line 236 static void bios_boot(void) { |
| I286_AL = 0x10; | I286_AL = 0x10; |
| mem[0x004f8] = 0xee; // out dx, al | mem[0x004f8] = 0xee; // out dx, al |
| mem[0x004f9] = 0xea; // call far | mem[0x004f9] = 0xea; // call far |
| SETBIOSMEM32(0x004fa, 0xffff0000); | SETBIOSMEM16(0x004fa, 0x0000); |
| SETBIOSMEM16(0x004fc, 0xffff); | |
| } | } |
| else { | else { |
| I286_SP = GETBIOSMEM16(0x00404); | I286_SP = GETBIOSMEM16(0x00404); |
| Line 244 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 250 UINT MEMCALL biosfunc(UINT32 adrs) { |
| UINT16 bootseg; | UINT16 bootseg; |
| if ((itf.bank) && (adrs >= 0xf8000) && (adrs < 0x100000)) { | if ((i286core.s.itfbank) && (adrs >= 0xf8000) && (adrs < 0x100000)) { |
| I286_IP--; | I286_IP--; |
| nevent.remainclock = -1; | I286_REMCLOCK = -1; |
| return(1); | return(1); |
| } | } |
| switch(adrs) { // ver0.30 | switch(adrs) { // ver0.30 |
| case BIOS_BASE + BIOSOFST_EOIM: | case BIOS_BASE + BIOSOFST_EOIM: |
| nevent.remainclock -= 300; | I286_REMCLOCK -= 300; |
| iocore_out8(0x00, 0x20); | iocore_out8(0x00, 0x20); |
| return(0); | return(0); |
| Line 264 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 270 UINT MEMCALL biosfunc(UINT32 adrs) { |
| return(0); | return(0); |
| case BIOS_BASE + BIOSOFST_02: | case BIOS_BASE + BIOSOFST_02: |
| nevent.remainclock -= 300; | I286_REMCLOCK -= 300; |
| bios0x02(); | bios0x02(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_08: | case BIOS_BASE + BIOSOFST_08: |
| nevent.remainclock -= 300; | I286_REMCLOCK -= 300; |
| bios0x08(); | bios0x08(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_09: | case BIOS_BASE + BIOSOFST_09: |
| nevent.remainclock -= 300; | I286_REMCLOCK -= 300; |
| bios0x09(); | bios0x09(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_0c: | case BIOS_BASE + BIOSOFST_0c: |
| nevent.remainclock -= 500; | I286_REMCLOCK -= 500; |
| bios0x0c(); | bios0x0c(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_12: | case BIOS_BASE + BIOSOFST_12: |
| nevent.remainclock -= 500; | I286_REMCLOCK -= 500; |
| bios0x12(); | bios0x12(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_13: | case BIOS_BASE + BIOSOFST_13: |
| nevent.remainclock -= 500; | I286_REMCLOCK -= 500; |
| bios0x13(); | bios0x13(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_18: | case BIOS_BASE + BIOSOFST_18: |
| nevent.remainclock -= 200; | I286_REMCLOCK -= 200; |
| bios0x18(); | bios0x18(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_19: | case BIOS_BASE + BIOSOFST_19: |
| nevent.remainclock -= 200; | I286_REMCLOCK -= 200; |
| bios0x19(); | bios0x19(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_1a: | case BIOS_BASE + BIOSOFST_1a: |
| nevent.remainclock -= 200; | I286_REMCLOCK -= 200; |
| bios0x1a(); | bios0x1a(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_1b: | case BIOS_BASE + BIOSOFST_1b: |
| nevent.remainclock -= 200; | I286_REMCLOCK -= 200; |
| bios0x1b(); | bios0x1b(); |
| return(1); | return(1); |
| case BIOS_BASE + BIOSOFST_1c: | case BIOS_BASE + BIOSOFST_1c: |
| nevent.remainclock -= 200; | I286_REMCLOCK -= 200; |
| bios0x1c(); | bios0x1c(); |
| return(1); | return(1); |
| Line 322 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 328 UINT MEMCALL biosfunc(UINT32 adrs) { |
| I286_STI; | I286_STI; |
| if (fddmtr_biosbusy) { // ver0.26 | if (fddmtr_biosbusy) { // ver0.26 |
| I286_IP--; | I286_IP--; |
| nevent.remainclock = -1; | I286_REMCLOCK = -1; |
| } | } |
| else { | else { |
| switch(CTRL_FDMEDIA) { | switch(CTRL_FDMEDIA) { |
| case DISKTYPE_2HD: | case DISKTYPE_2HD: |
| if (pic.pi[1].isr & PIC_INT42) { | if (pic.pi[1].isr & PIC_INT42) { |
| I286_IP--; | I286_IP--; |
| nevent.remainclock -= 1000; | I286_REMCLOCK -= 1000; |
| } | } |
| break; | break; |
| case DISKTYPE_2DD: | case DISKTYPE_2DD: |
| if (pic.pi[1].isr & PIC_INT41) { | if (pic.pi[1].isr & PIC_INT41) { |
| I286_IP--; | I286_IP--; |
| nevent.remainclock -= 1000; | I286_REMCLOCK -= 1000; |
| } | } |
| break; | break; |
| } | } |
| Line 363 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 369 UINT MEMCALL biosfunc(UINT32 adrs) { |
| return(1); | return(1); |
| case 0xfffe8: // ブートストラップロード | case 0xfffe8: // ブートストラップロード |
| nevent.remainclock -= 2000; | I286_REMCLOCK -= 2000; |
| bootseg = bootstrapload(); | bootseg = bootstrapload(); |
| if (bootseg) { | if (bootseg) { |
| I286_STI; | I286_STI; |
| Line 376 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 382 UINT MEMCALL biosfunc(UINT32 adrs) { |
| return(0); | return(0); |
| case 0xfffec: | case 0xfffec: |
| nevent.remainclock -= 2000; | I286_REMCLOCK -= 2000; |
| bootstrapload(); | bootstrapload(); |
| return(0); | return(0); |
| } | } |
| Line 392 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 398 UINT MEMCALL biosfunc(UINT32 adrs) { |
| return(0); | return(0); |
| } | } |
| I286_IP--; | I286_IP--; |
| nevent.remainclock = -1; | I286_REMCLOCK = -1; |
| return(1); | return(1); |
| } | } |