Metropoli BBS
VIEWER: stbpg32.mod MODE: TEXT (ASCII)
[STBModes]
Version=1.00
Product=POWERGRAPH32
Bus=PCI
Modes=35

[Modes]
;         HRes, VRes, Bpp, HScan, VScan, Mem, Pitch, Flags, Cntr1, Cntr2, Work
Mode.1  =  640,  480,   4,  31.5,  60.0,  1M,   320,     0, 0300h, 1111h, 640_4_60
Mode.2  =  640,  480,   4,  37.9,  72.0,  1M,   320,     0, 0A00h, 1111h, 640_4_72
Mode.3  =  640,  480,   4,  37.5,  75.0,  1M,   320,     0, 0700h, 1111h, 640_4_75
Mode.4  =  640,  480,   8,  31.5,  60.0,  1M,   640,     0, 0300h, 1111h, 640_8_60
Mode.5  =  640,  480,   8,  37.9,  72.0,  1M,   640,     0, 0A00h, 1111h, 640_8_72
Mode.6  =  640,  480,   8,  37.5,  75.0,  1M,   640,     0, 0700h, 1111h, 640_8_75
Mode.7  =  640,  480,  16,  31.5,  60.0,  1M,  1280,     0, 1111h, 1111h, 640_16_60
Mode.8  =  640,  480,  16,  37.9,  72.0,  1M,  1280,     0, 1111h, 1111h, 640_16_72
Mode.9  =  640,  480,  16,  37.5,  75.0,  1M,  1280,     0, 1111h, 1111h, 640_16_75
Mode.10 =  640,  480,  24,  31.5,  60.0,  1M,  1920,     0, 1111h, 1111h, 640_24_60
Mode.11 =  640,  480,  32,  31.5,  60.0,  2M,  2560,     0, 1111h, 1111h, 640_32_60
Mode.12 =  800,  600,   4,  35.2,  56.0,  1M,  1024,     0, 0601h, 1111h, 800_4_56
Mode.13 =  800,  600,   4,  37.9,  60.0,  1M,  1024,     0, 0000h, 1111h, 800_4_60
Mode.14 =  800,  600,   4,  48.0,  72.0,  1M,  1024,     0, 0000h, 1111h, 800_4_72
Mode.15 =  800,  600,   4,  46.9,  75.0,  1M,  1024,     0, 0800h, 1111h, 800_4_75
Mode.16 =  800,  600,   8,  35.2,  56.0,  1M,   800,     0, 0601h, 1111h, 800_8_56
Mode.17 =  800,  600,   8,  37.9,  60.0,  1M,   800,     0, 0000h, 1111h, 800_8_60
Mode.18 =  800,  600,   8,  48.0,  72.0,  1M,   800,     0, 0000h, 1111h, 800_8_72
Mode.19 =  800,  600,   8,  46.9,  75.0,  1M,   800,     0, 0800h, 1111h, 800_8_75
Mode.20 =  800,  600,  16,  37.9,  60.0,  1M,  1600,     0, 1111h, 1111h, 800_16_60
Mode.21 =  800,  600,  16,  48.0,  72.0,  1M,  1600,     0, 1111h, 1111h, 800_16_72
Mode.22 =  800,  600,  16,  46.9,  75.0,  1M,  1600,     0, 1111h, 1111h, 800_16_75
Mode.23 = 1024,  768,   4,  35.5,  88.0,  1M,  1024,     2, 0301h, 1111h, 1024_4_88i
Mode.24 = 1024,  768,   4,  48.4,  60.0,  1M,  1024,     0, 0000h, 1111h, 1024_4_60
Mode.25 = 1024,  768,   4,  56.5,  70.0,  1M,  1024,     0, 0000h, 1111h, 1024_4_70
Mode.26 = 1024,  768,   4,  60.0,  75.0,  1M,  1024,     0, 0300h, 1111h, 1024_4_75
Mode.27 = 1024,  768,   8,  35.5,  88.0,  1M,  1024,     2, 0301h, 1111h, 1024_8_88i
Mode.28 = 1024,  768,   8,  48.4,  60.0,  1M,  1024,     0, 0000h, 1111h, 1024_8_60
Mode.29 = 1024,  768,   8,  56.5,  70.0,  1M,  1024,     0, 0000h, 1111h, 1024_8_70
Mode.30 = 1024,  768,   8,  60.0,  75.0,  1M,  1024,     0, 0300h, 1111h, 1024_8_75
Mode.31 = 1024,  768,  16,  35.5,  88.0,  2M,  2048,     2, 1111h, 1111h, 1024_16_88i
Mode.32 = 1280, 1024,   4,  48.0,  88.0,  1M,  1024,     2, 1111h, 1111h, 1280_4_88i
Mode.33 = 1280, 1024,   4,  64.0,  60.0,  1M,  1024,     0, 1111h, 1111h, 1280_4_60
Mode.34 = 1280, 1024,   8,  48.0,  88.0,  2M,  1280,     2, 0000h, 1111h, 1280_8_88i
Mode.35 = 1280, 1024,   8,  64.0,  60.0,  2M,  1280,     0, 0000h, 1111h, 1280_8_60

[640_4_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_60
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,Set4Bpp
Exec.6=Call,PerformFixups4

[640_4_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_72
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,Set4Bpp
Exec.6=Call,PerformFixups4

[640_4_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_75
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,Set4Bpp
Exec.6=Call,PerformFixups4

[640_8_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_60
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_8_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_72
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_8_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_75
Exec.3=Call,SetMode_101h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_16_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_60
Exec.3=Call,SetMode_111h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_16_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_72
Exec.3=Call,SetMode_111h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_16_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_75
Exec.3=Call,SetMode_111h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_24_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_60
Exec.3=Call,SetMode_212h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[640_32_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon640_60
Exec.3=Call,SetMode_112h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_4_56]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_56
Exec.3=Call,SetMode_202h
Exec.4=Call,RestoreMonType

[800_4_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_60
Exec.3=Call,SetMode_202h
Exec.4=Call,RestoreMonType

[800_4_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_72
Exec.3=Call,SetMode_202h
Exec.4=Call,RestoreMonType

[800_4_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_75
Exec.3=Call,SetMode_202h
Exec.4=Call,RestoreMonType

[800_8_56]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_56
Exec.3=Call,SetMode_103h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_8_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_60
Exec.3=Call,SetMode_103h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_8_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_72
Exec.3=Call,SetMode_103h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_8_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_75
Exec.3=Call,SetMode_103h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_16_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_60
Exec.3=Call,SetMode_114h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_16_72]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_72
Exec.3=Call,SetMode_114h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[800_16_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon800_75
Exec.3=Call,SetMode_114h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1024_4_88i]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_88i
Exec.3=Call,SetMode_204h
Exec.4=Call,RestoreMonType

[1024_4_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_60
Exec.3=Call,SetMode_204h
Exec.4=Call,RestoreMonType

[1024_4_70]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_70
Exec.3=Call,SetMode_204h
Exec.4=Call,RestoreMonType

[1024_4_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_75
Exec.3=Call,SetMode_204h
Exec.4=Call,RestoreMonType

[1024_8_88i]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_88i
Exec.3=Call,SetMode_205h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1024_8_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_60
Exec.3=Call,SetMode_205h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1024_8_70]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_70
Exec.3=Call,SetMode_205h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1024_8_75]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_75
Exec.3=Call,SetMode_205h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1024_16_88i]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1024_88i
Exec.3=Call,SetMode_117h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1280_4_88i]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1280_88i
Exec.3=Call,SetMode_107h
Exec.4=Call,Set4Bpp
Exec.5=Call,RestoreMonType
Exec.6=Call,PerformFixups4

[1280_4_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1280_60
Exec.3=Call,SetMode_107h
Exec.4=Call,Set4Bpp
Exec.5=Call,RestoreMonType
Exec.6=Call,PerformFixups4

[1280_8_88i]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1280_88i
Exec.3=Call,SetMode_107h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[1280_8_60]
Exec.1=Call,SaveMonType
Exec.2=Call,SetMon1280_60
Exec.3=Call,SetMode_107h
Exec.4=Call,RestoreMonType
Exec.5=Call,PerformFixups

[SaveMonType]
Exec.1=Call,UnlockS3
Exec.2=Code,BAh,D4h,03h,B0h,52h,EEh,42h,ECh,8Ah,D8h,BAh,D4h,03h,B0h,41h,EEh
Exec.3=Code,42h,ECh,8Ah,F8h,53h

[RestoreMonType]
Exec.1=Call,UnlockS3
Exec.2=Code,5Bh,BAh,D4h,03h,B0h,52h,EEh,42h,8Ah,C3h,EEh,BAh,D4h,03h,B0h,41h
Exec.3=Code,EEh,42h,8Ah,C7h,EEh

[SetMon640_60]
Exec.1=RMW8I,3D4h,52h,00h,70h

[SetMon640_72]
Exec.1=RMW8I,3D4h,52h,10h,70h

[SetMon640_75]
Exec.1=RMW8I,3D4h,52h,20h,70h

[SetMon800_56]
Exec.1=RMW8I,3D4h,41h,00h,03h
Exec.2=RMW8I,3D4h,52h,00h,80h

[SetMon800_60]
Exec.1=RMW8I,3D4h,41h,00h,03h
Exec.2=RMW8I,3D4h,52h,80h,80h

[SetMon800_72]
Exec.1=RMW8I,3D4h,41h,01h,03h
Exec.2=RMW8I,3D4h,52h,00h,80h

[SetMon800_75]
Exec.1=RMW8I,3D4h,41h,01h,03h
Exec.2=RMW8I,3D4h,52h,80h,80h

[SetMon1024_88i]
Exec.1=RMW8I,3D4h,41h,00h,1Ch

[SetMon1024_60]
Exec.1=RMW8I,3D4h,41h,08h,1Ch

[SetMon1024_70]
Exec.1=RMW8I,3D4h,41h,0Ch,1Ch

[SetMon1024_75]
Exec.1=RMW8I,3D4h,41h,10h,1Ch

[SetMon1280_88i]
Exec.1=RMW8I,3D4h,41h,00h,E0h

[SetMon1280_60]
Exec.1=RMW8I,3D4h,41h,80h,E0h

[SetMode_101h]
; 640_8
Exec.1=Int,10h,4F02h,8101h

[SetMode_103h]
; 800_8
Exec.1=Int,10h,4F02h,8103h

[SetMode_107h]
; 1280_8
Exec.1=Int,10h,4F02h,8107h

[SetMode_110h]
; 640_15
Exec.1=Int,10h,4F02h,8110h

[SetMode_111h]
; 640_16
Exec.1=Int,10h,4F02h,8111h

[SetMode_112h]
; 640_32
Exec.1=Int,10h,4F02h,8112h

[SetMode_113h]
; 800_15
Exec.1=Int,10h,4F02h,8113h

[SetMode_114h]
; 800_16
Exec.1=Int,10h,4F02h,8114h

[SetMode_116h]
; 1024_15
Exec.1=Int,10h,4F02h,8116h

[SetMode_117h]
; 1024_16
Exec.1=Int,10h,4F02h,8117h

[SetMode_202h]
; 800_4
Exec.1=Int,10h,4F02h,8202h

[SetMode_204h]
; 1024_4
Exec.1=Int,10h,4F02h,8204h

[SetMode_205h]
; 1024_8
Exec.1=Int,10h,4F02h,8205h

[SetMode_208h]
; 1280_4
Exec.1=Int,10h,4F02h,8208h

[SetMode_212h]
; 640_24
Exec.1=Int,10h,4F02h,8212h

[PerformFixups]
; Enable enh mode.
; Disable 4 bpp enh mode, linear addr, and mmio.
Exec.1=RMW16,4AE8h,0001h,0035h

[UnlockS3]
Exec.1=RMW8I,3D4h,38h,48h,48h
Exec.2=RMW8I,3D4h,39h,A0h,A0h

[EnableExtRegs]
;       Enable S3 enhanced mode registers (4ae8h, etc.)
;       (Set bit 1 in CR 40)
Exec.1=RMW8I,3D4h,40h,01h,01h

[ResetAttrToggle]
; reset attribute controller index/data flip-flop by reading 3dah
;
; push  dx
; push  ax
; mov   dx, 3da
; in    al, dx
; pop   ax
; pop   dx
;
Exec.1=Code,52h,50h,BAh,DAh,03h,ECh,58h,5Ah

[Set4Bpp]
; Change drawing engine from 8bpp mode to 4bpp mode
; The 4 bit modes must have a pitch of 1024
;
;       Unlock S3 registers
Exec.1=Call,UnlockS3
;
;       Enable Extended S3 registers
Exec.2=Call,EnableExtRegs
;
;       Set CR 3A (Misc. reg. 1) to 4 bpp enhanced mode rather than
;       256 color enh. mode
Exec.3=RMW8I,3D4h,3Ah,00h,10h
;
;       Set CR 31h to two page screen mode
;       forces pitch to 1024 bytes (required to make 4 bit modes work)
Exec.4=RMW8I,3D4h,31h,02h,02h
;
;       Reset Attribute index/data flip-flop
Exec.5=Call,ResetAttrToggle
;
;       Select Attribute register 10h, and disable 256 color mode
;
;       push  dx
;       push  ax
;       mov   dx, 3c0h
;       mov   al, 10h
;       out   dx, al          select attr. register 10, turn off palette
;       inc   dx
;       in    al, dx          read reg. 10
;       dec   dx
;       and   al, bfh
;       out   dx, al          disable 256 color mode
;       pop   ax
;       pop   dx
Exec.6=Code,52h,50h,BAh,C0h,03h,B0h,10h,EEh,42h,ECh,4Ah,24h,BFh,EEh,58h,5Ah
;
;       Reset Attribute index/data flip-flop
Exec.7=Call,ResetAttrToggle
;
;       Re-enable the palette
Exec.8=Out8,3C0h,20h
;
;       set video shift registers into 4 bit graphics mode
Exec.9=RMW8I,3CEh,05h,00h,60h


[PerformFixups4]
; Enable 4 bpp enh mode and enh mode.
; Disable linear addr and mmio.
Exec.1=RMW16,4AE8h,0005h,0035h
[ RETURN TO DIRECTORY ]