|
|
| version 1.1.1.1, 2003/10/16 17:58:21 | version 1.2, 2003/12/08 00:55:30 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | #include "cpucore.h" |
| #include "memory.h" | #include "memory.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| Line 9 | Line 9 |
| static void printerbios_11(void) { | static void printerbios_11(void) { |
| if (iocore_inp8(0x42) & 0x04) { // busy? | if (iocore_inp8(0x42) & 0x04) { // busy? |
| I286_AH = 0x01; | CPU_AH = 0x01; |
| iocore_out8(0x40, I286_AL); | iocore_out8(0x40, CPU_AL); |
| #if 0 | #if 0 |
| iocore_out8(0x46, 0x0e); | iocore_out8(0x46, 0x0e); |
| iocore_out8(0x46, 0x0f); | iocore_out8(0x46, 0x0f); |
| #endif | #endif |
| } | } |
| else { | else { |
| I286_AH = 0x02; | CPU_AH = 0x02; |
| } | } |
| } | } |
| void bios0x1a_main(void) { // ver0.30 | void bios0x1a_main(void) { // ver0.30 |
| switch(I286_AH & 0x0f) { | switch(CPU_AH & 0x0f) { |
| case 0x00: | case 0x00: |
| if (I286_AH == 0x30) { | if (CPU_AH == 0x30) { |
| if (I286_CX) { | if (CPU_CX) { |
| do { | do { |
| I286_AL = i286_membyte_read(I286_ES, I286_BX); | CPU_AL = i286_membyte_read(CPU_ES, CPU_BX); |
| printerbios_11(); | printerbios_11(); |
| if (I286_AH & 0x02) { | if (CPU_AH & 0x02) { |
| I286_AH = 0x02; | CPU_AH = 0x02; |
| return; | return; |
| } | } |
| I286_BX++; | CPU_BX++; |
| } while(--I286_CX); | } while(--CPU_CX); |
| I286_AH = 0x00; | CPU_AH = 0x00; |
| } | } |
| else { | else { |
| I286_AH = 0x02; | CPU_AH = 0x02; |
| } | } |
| } | } |
| else { | else { |
| Line 47 void bios0x1a_main(void) { // | Line 47 void bios0x1a_main(void) { // |
| iocore_out8(0x46, 0x82); // reset | iocore_out8(0x46, 0x82); // reset |
| iocore_out8(0x46, 0x0f); // PSTB inactive | iocore_out8(0x46, 0x0f); // PSTB inactive |
| iocore_out8(0x37, 0x0c); // printer f/f | iocore_out8(0x37, 0x0c); // printer f/f |
| I286_AH = (iocore_inp8(0x42) >> 2) & 1; | CPU_AH = (iocore_inp8(0x42) >> 2) & 1; |
| } | } |
| break; | break; |
| case 0x01: | case 0x01: |
| printerbios_11(); | printerbios_11(); |
| break; | break; |
| case 0x02: | case 0x02: |
| I286_AH = (iocore_inp8(0x42) >> 2) & 1; | CPU_AH = (iocore_inp8(0x42) >> 2) & 1; |
| break; | break; |
| default: | default: |
| I286_AH = 0x00; | CPU_AH = 0x00; |
| break; | break; |
| } | } |
| } | } |
| void bios0x1a(void) { | void bios0x1a(void) { |
| if (I286_AH & 0x10) { | if (CPU_AH & 0x10) { |
| bios0x1a_main(); // ver0.30 | bios0x1a_main(); // ver0.30 |
| } | } |
| else { | else { |
| if (I286_AH == 0x04) { | if (CPU_AH == 0x04) { |
| I286_AH = 0x02; | CPU_AH = 0x02; |
| } | } |
| else { | else { |
| I286_AH = 0x00; | CPU_AH = 0x00; |
| } | } |
| } | } |
| } | } |