12-18-2003, 06:35 PM
Thanks, Neo
Really cool routines. This library is really interesting. Adosorken, I love text mode stuff, if ya wanna I could try to help you providing some functions I've seen the "future plans" section and I can provide the 512 characters mode and the extended text resolutions, as well as the custom character set loader.
---
This is my little set of routines to use the 512 characters mode and to load the customized char maps into VGA memory:
To use it you just do this:
... where charset1.fnt and charset2.fnt are standard 4096 bytes text-mode font files (all the 256 characters, 16 bytes each).
Now remember that with colour 0-7 you print with the charset1 font and with colour 8-15 you print with the charset2 font, so adjust your palettes.
If you, reader, don't know what the heck the 512 characters mode is, check this demo Right-click -> Save as
---
Edited once more: I can't work with the enhaced SVGA text modes 'cause my card doesn't seem to support them. I just call the interrupt and it does... nothing :o
Really cool routines. This library is really interesting. Adosorken, I love text mode stuff, if ya wanna I could try to help you providing some functions I've seen the "future plans" section and I can provide the 512 characters mode and the extended text resolutions, as well as the custom character set loader.
---
This is my little set of routines to use the 512 characters mode and to load the customized char maps into VGA memory:
Code:
DECLARE SUB LoadCharInMap (file$, Map%)
DECLARE SUB BlockBitPlane2 ()
DECLARE SUB UnBlockBitPlane2 ()
DECLARE SUB SelectMaps (Map0%, Map1%)
DECLARE SUB OutPortW (dir%, a%)
'$INCLUDE: 'QB.BI'
SUB BlockBitPlane2
EgaVgaSequencer% = &H3C4
EgaVgaGraphCtr% = &H3CE
OutPortW EgaVgaSequencer%, &H100
OutPortW EgaVgaSequencer%, &H402
OutPortW EgaVgaSequencer%, &H704
OutPortW EgaVgaSequencer%, &H300
OutPortW EgaVgaGraphCtr%, &H204
OutPortW EgaVgaGraphCtr%, &H5
OutPortW EgaVgaGraphCtr%, &H6
END SUB
SUB LoadCharInMap (file$, Map%)
d$ = CHR$(0)
aBase% = &H4000 * Map%
DEF SEG = &HA000
f% = FREEFILE
OPEN file$ FOR BINARY AS #f%
FOR i% = 0 TO 255
FOR j% = 0 TO 15
GET #f%, , d$
POKE aBase% + j%, ASC(d$)
NEXT j%
aBase% = aBase% + 32
NEXT i%
CLOSE #f%
DEF SEG
END SUB
SUB OutPortW (dir%, a%)
OUT dir%, a% AND 255
OUT dir% + 1, a% \ 256
END SUB
SUB SelectMaps (Map0%, Map1%)
DIM Regs AS RegType
DIM OutPortWs AS RegType
' Bytes:
Map0% = Map0% AND 255
Map1% = Map1% AND 255
' Acceso a los registros
Regs.ax = &H1103
b% = (Map0% AND 3) + (Map0% AND 4) * 4
c% = (Map1% AND 3) * 4 + (Map1% AND 4) * 8
bc% = b% + c%
Regs.bx = bc%
INTERRUPT &H10, Regs, OutPortWs
END SUB
SUB UnBlockBitPlane2
EgaVgaSequencer% = &H3C4
EgaVgaGraphCtr% = &H3CE
OutPortW EgaVgaSequencer%, &H100
OutPortW EgaVgaSequencer%, &H302
OutPortW EgaVgaSequencer%, &H304
OutPortW EgaVgaSequencer%, &H300
OutPortW EgaVgaGraphCtr%, &H4
OutPortW EgaVgaGraphCtr%, &H1005
OutPortW EgaVgaGraphCtr%, &HE06
END SUB
To use it you just do this:
Code:
BlockBitPlane2
LoadCharInMap "charset1.fnt", 0
LoadCharInMap "charset2.fnt", 1
SelectMaps 0, 1
UnBlockBitPlane2
... where charset1.fnt and charset2.fnt are standard 4096 bytes text-mode font files (all the 256 characters, 16 bytes each).
Now remember that with colour 0-7 you print with the charset1 font and with colour 8-15 you print with the charset2 font, so adjust your palettes.
If you, reader, don't know what the heck the 512 characters mode is, check this demo Right-click -> Save as
---
Edited once more: I can't work with the enhaced SVGA text modes 'cause my card doesn't seem to support them. I just call the interrupt and it does... nothing :o
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i