From 7084f6e1131c2f4bc3da9de2b7ee41f4d7420982 Mon Sep 17 00:00:00 2001 From: Romain Dolbeau Date: Sat, 17 Sep 2022 17:06:15 +0200 Subject: [PATCH] automate DeclRom more --- nubus-to-ztex-gateware/DeclROM/Makefile | 12 +- .../DeclROM/NuBusFPGADrvr.h | 11 +- .../DeclROM/NuBusFPGADrvr_Ctrl.c | 26 +- .../DeclROM/NuBusFPGADrvr_OpenClose.c | 4 + .../DeclROM/NuBusFPGADrvr_Status.c | 16 +- .../DeclROM/NuBusFPGAPrimaryInit_Primary.c | 19 +- nubus-to-ztex-gateware/DeclROM/gen_mode.c | 335 ++++++++++++++++++ nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s | 75 +--- .../DeclROM/vid_decl_rom_13.s | 133 ------- .../DeclROM/vid_decl_rom_hires.s | 133 ------- 10 files changed, 389 insertions(+), 375 deletions(-) create mode 100644 nubus-to-ztex-gateware/DeclROM/gen_mode.c delete mode 100644 nubus-to-ztex-gateware/DeclROM/vid_decl_rom_13.s delete mode 100644 nubus-to-ztex-gateware/DeclROM/vid_decl_rom_hires.s diff --git a/nubus-to-ztex-gateware/DeclROM/Makefile b/nubus-to-ztex-gateware/DeclROM/Makefile index da52d3a..8ff26a6 100644 --- a/nubus-to-ztex-gateware/DeclROM/Makefile +++ b/nubus-to-ztex-gateware/DeclROM/Makefile @@ -17,9 +17,17 @@ CSRC_RAMDSK=NuBusFPGARAMDskDrvr_OpenClose.c NuBusFPGARAMDskDrvr_Ctrl.c NuBusFPGA CSRC=${CSRC_VIDEO} ${CSRC_RAMDSK} CSRC_ASM=${CSRC:.c=.s} +GEN_ASM=VidRomDef.s VidRomDir.s VidRomName.s VidRomRes.s VidRomRsrcDir.s + +gen_mode: gen_mode.c + $(HOSTCC) -Wall -O2 $^ -o $@ + +${GEN_ASM}: gen_mode + ./gen_mode ${HRES} ${VRES} + all: vid_decl_rom.bin vid_decl_rom.srec -vid_decl_rom.o: vid_decl_rom.s NuBusFPGAPrimaryInit.s NuBusFPGAPrimaryInit_Primary.s NuBusFPGASecondaryInit.s NuBusFPGASecondaryInit_Secondary.s NuBusFPGADrvr.s ${APPLEINCS} ${CSRC_ASM} DepVideo.inc +vid_decl_rom.o: vid_decl_rom.s NuBusFPGAPrimaryInit.s NuBusFPGAPrimaryInit_Primary.s NuBusFPGASecondaryInit.s NuBusFPGASecondaryInit_Secondary.s NuBusFPGADrvr.s ${APPLEINCS} ${CSRC_ASM} DepVideo.inc ${GEN_ASM} rm -f res.inc echo -e "HRES=${HRES}\nVRES=${VRES}\n" | tee res.inc ${AS} -march=68020 -mcpu=68020 -I${NS816DECLROMDIR} $< -o $@ -a > vid_decl_rom.l @@ -96,7 +104,7 @@ vid_decl_rom.bin: vid_decl_rom.dir dd if=dump.cpr of=vid_decl_rom.bin bs=1 conv=notrunc clean: - rm -f res.inc ${CSRC_ASM} *.o vid_decl_rom.srec vid_decl_rom.raw vid_decl_rom.dir vid_decl_rom.l + rm -f res.inc ${CSRC_ASM} *.o vid_decl_rom.srec vid_decl_rom.raw vid_decl_rom.dir vid_decl_rom.l VidRom*.s append_romdir: append_romdir.c ${HOSTCC} $< -o $@ diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h index 865dc7b..abbf3b6 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h @@ -8,15 +8,6 @@ #include #include -#ifndef HRES -#define HRES 1152 -#warning "Using default HRES" -#endif -#ifndef VRES -#define VRES 870 -#warning "Using default VRES" -#endif - #define GOBOFB_BASE 0x00900000 #define GOBOFB_ACCEL 0x00901000 #define GOBOFB_ACCEL_LE 0x00901800 @@ -97,6 +88,8 @@ struct NuBusFPGADriverGlobals { //unsigned char shadowClut[768]; unsigned short curMode; /* mode include depth in <= 7.1 ROM-based mode */ unsigned short curDepth; /* depth separate from mode in >= 7.5 driver-based mode */ + unsigned short hres; /* HW max */ + unsigned short vres; /* HW max */ char gray; char irqen; char slot; diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c index 8f42924..e355966 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c @@ -237,7 +237,7 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) const UInt32 a32 = dce->dCtlDevBase; UInt32 a32_l0, a32_l1; UInt32 a32_4p0, a32_4p1; - const uint32_t wb = HRES >> idx; + const uint32_t wb = dStore->hres >> idx; unsigned short j, i; if (vPInfo->csPage != 0) @@ -249,7 +249,7 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) /* grey the screen */ a32_l0 = a32; a32_l1 = a32 + wb; - for (j = 0 ; j < VRES ; j+= 2) { + for (j = 0 ; j < dStore->vres ; j+= 2) { a32_4p0 = a32_l0; a32_4p1 = a32_l1; for (i = 0 ; i < wb ; i += 4) { @@ -264,18 +264,18 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) } else { /* testing */ a32_l0 = a32; - a32_l1 = a32 + HRES*4; - for (j = 0 ; j < VRES ; j+= 2) { + a32_l1 = a32 + dStore->hres*4; + for (j = 0 ; j < dStore->vres ; j+= 2) { a32_4p0 = a32_l0; a32_4p1 = a32_l1; - for (i = 0 ; i < HRES ; i ++ ) { + for (i = 0 ; i < dStore->hres ; i ++ ) { *((UInt32*)a32_4p0) = (i&0xFF);//(i&0xFF) | (i&0xFF)<<8 | (i&0xff)<<24; *((UInt32*)a32_4p1) = (i&0xFF)<<16;//(i&0xFF) | (i&0xFF)<<8 | (i&0xff)<<24; a32_4p0 += 4; a32_4p1 += 4; } - a32_l0 += 2*HRES*4; - a32_l1 += 2*HRES*4; + a32_l0 += 2*dStore->hres*4; + a32_l1 += 2*dStore->hres*4; } } #else @@ -289,8 +289,8 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) switch (dStore->curMode) { default: case firstVidMode: - accel_le->reg_width = HRES; // pixels - accel_le->reg_height = VRES; + accel_le->reg_width = dStore->hres; // pixels + accel_le->reg_height = dStore->vres; break; case secondVidMode: accel_le->reg_width = 640; // pixels @@ -380,13 +380,13 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) /* write_reg(dce, GOBOFB_VIDEOCTRL, 0); */ write_reg(dce, GOBOFB_HRES_START, 0); write_reg(dce, GOBOFB_VRES_START, 0); - write_reg(dce, GOBOFB_HRES_END, __builtin_bswap32(HRES)); // fixme: endianess (along with HW) - write_reg(dce, GOBOFB_VRES_END, __builtin_bswap32(VRES)); // fixme: endianess (along with HW) + write_reg(dce, GOBOFB_HRES_END, __builtin_bswap32(dStore->hres)); // fixme: endianess (along with HW) + write_reg(dce, GOBOFB_VRES_END, __builtin_bswap32(dStore->vres)); // fixme: endianess (along with HW) /* write_reg(dce, GOBOFB_VIDEOCTRL, 1); */ } break; case secondVidMode: { - unsigned int ho = ((HRES - 640) / 2); - unsigned int vo = ((VRES - 480) / 2); + unsigned int ho = ((dStore->hres - 640) / 2); + unsigned int vo = ((dStore->vres - 480) / 2); /* write_reg(dce, GOBOFB_VIDEOCTRL, 0); */ write_reg(dce, GOBOFB_HRES_START, __builtin_bswap32(ho)); write_reg(dce, GOBOFB_VRES_START, __builtin_bswap32(vo)); diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_OpenClose.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_OpenClose.c index 7f3ffd3..d783978 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_OpenClose.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_OpenClose.c @@ -31,6 +31,10 @@ OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) (*dStoreHdl)->gray = 0; (*dStoreHdl)->irqen = 0; (*dStoreHdl)->slot = dce->dCtlSlot; + + /* Get the HW setting for native resolution */ + (*dStoreHdl)->hres = __builtin_bswap32((unsigned int)read_reg(dce, GOBOFB_HRES)); // fixme: endianness + (*dStoreHdl)->vres = __builtin_bswap32((unsigned int)read_reg(dce, GOBOFB_VRES)); // fixme: endianness SlotIntQElement *siqel = (SlotIntQElement *)NewPtrSysClear(sizeof(SlotIntQElement)); if (siqel == NULL) { diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c index 3b7579e..700d84a 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c @@ -232,15 +232,15 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) break; case secondVidMode: vdres->csDisplayModeID = kDisplayModeIDNoMoreResolutions; - vdres->csHorizontalPixels = HRES; - vdres->csVerticalLines = VRES; + vdres->csHorizontalPixels = dStore->hres; + vdres->csVerticalLines = dStore->vres; vdres->csRefreshRate = 60 << 16; /* Fixed 16+16 */ vdres->csMaxDepthMode = kDepthMode6; break; case kDisplayModeIDFindFirstResolution: vdres->csDisplayModeID = firstVidMode; - vdres->csHorizontalPixels = HRES; // ? - vdres->csVerticalLines = VRES; // ? + vdres->csHorizontalPixels = dStore->hres; // ? + vdres->csVerticalLines = dStore->vres; // ? vdres->csRefreshRate = 60 << 16; /* Fixed 16+16 */ vdres->csMaxDepthMode = kDepthMode6; break; @@ -248,8 +248,8 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) vdres->csDisplayModeID = dStore->curMode; switch (dStore->curMode) { case firstVidMode: - vdres->csHorizontalPixels = HRES; // ? - vdres->csVerticalLines = VRES; // ? + vdres->csHorizontalPixels = dStore->hres; // ? + vdres->csVerticalLines = dStore->vres; // ? break; case secondVidMode: vdres->csHorizontalPixels = 640; // ? @@ -298,8 +298,8 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) switch (mode) { default: case firstVidMode: - vpblock->vpBounds.right = HRES; - vpblock->vpBounds.bottom = VRES; + vpblock->vpBounds.right = dStore->hres; + vpblock->vpBounds.bottom = dStore->vres; break; case secondVidMode: vpblock->vpBounds.right = 640; diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGAPrimaryInit_Primary.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGAPrimaryInit_Primary.c index c65fa8a..255d31b 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGAPrimaryInit_Primary.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGAPrimaryInit_Primary.c @@ -3,7 +3,9 @@ #include #define PRIM_WRITEREG(reg, val) \ - *((volatile UInt32*)(a32+GOBOFB_BASE+reg)) = (UInt32)val; + *((volatile UInt32*)(a32+GOBOFB_BASE+reg)) = (UInt32)val +#define PRIM_READREG(reg) \ + (*((volatile UInt32*)(a32+GOBOFB_BASE+reg))) UInt32 Primary(SEBlock* seblock) { UInt32 a32 = 0xF0000000 | ((UInt32)seblock->seSlot << 24); @@ -12,7 +14,7 @@ UInt32 Primary(SEBlock* seblock) { SpBlock spblock; UInt8 pram[8]; OSErr err; - UInt16 i,j; + UInt16 i,j, hres, vres; char busMode; UniversalProcPtr qd32ptr, unimpptr; @@ -23,21 +25,24 @@ UInt32 Primary(SEBlock* seblock) { /* PRIM_WRITEREG(GOBOFB_DEBUG, busMode);// trace */ + hres = __builtin_bswap32((UInt32)PRIM_READREG(GOBOFB_HRES)); // fixme: endianness + vres = __builtin_bswap32((UInt32)PRIM_READREG(GOBOFB_VRES)); // fixme: endianness + /* grey the screen */ /* should switch to HW ? */ a32_l0 = a32; - a32_l1 = a32 + HRES; - for (j = 0 ; j < VRES ; j+= 2) { + a32_l1 = a32 + hres; + for (j = 0 ; j < vres ; j+= 2) { a32_4p0 = a32_l0; a32_4p1 = a32_l1; - for (i = 0 ; i < HRES ; i += 4) { + for (i = 0 ; i < hres ; i += 4) { *((UInt32*)a32_4p0) = 0xAAAAAAAA; *((UInt32*)a32_4p1) = 0x55555555; a32_4p0 += 4; a32_4p1 += 4; } - a32_l0 += 2*HRES; - a32_l1 += 2*HRES; + a32_l0 += 2*hres; + a32_l1 += 2*hres; } SwapMMUMode ( &busMode ); // restore diff --git a/nubus-to-ztex-gateware/DeclROM/gen_mode.c b/nubus-to-ztex-gateware/DeclROM/gen_mode.c new file mode 100644 index 0000000..648b75d --- /dev/null +++ b/nubus-to-ztex-gateware/DeclROM/gen_mode.c @@ -0,0 +1,335 @@ +#include +#include +#include +#include + +#if 0 + ALIGN 2 +_HiRes8Modes: + OSLstEntry mVidParams,_HRV8Parms /* offset to vid parameters */ + DatLstEntry mPageCnt,Pages8s /* number of video pages */ + DatLstEntry mDevType,clutType /* device type */ + .long EndOfList /* end of list */ +_HRV8Parms: + .long _EndHRV8Parms-_HRV8Parms /* physical block size */ + .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ + .word RB8s /* physRowBytes ; vpRowBytes */ + .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ + .word defVersion /* bmVersion ; vpVersion */ + .word 0 /* packType not used ; vpPackType */ + .long 0 /* packSize not used ; vpPackSize */ + .long defmHRes /* bmHRes */ + .long defmVRes /* bmVRes */ + .word ChunkyIndexed /* bmPixelType */ + .word 8 /* bmPixelSize */ + .word 1 /* bmCmpCount */ + .word 8 /* bmCmpSize */ + .long defmPlaneBytes /* bmPlaneBytes */ +_EndHRV8Parms: + + + + + ALIGN 2 +_sRsrc_GoboFB: + OSLstEntry sRsrcType,_GoboFBType /* video type descriptor */ + OSLstEntry sRsrcName,_GoboFBName /* offset to driver name string */ + OSLstEntry sRsrcDrvrDir,_GoboFBDrvrDir /* offset to driver directory */ + DatLstEntry sRsrcFlags,6 /* force 32 bits mode & open */ + DatLstEntry sRsrcHWDevId,1 /* hardware device ID */ + OSLstEntry MinorBaseOS,_MinorBase /* offset to frame buffer array */ + OSLstEntry MinorLength,_MinorLength /* offset to frame buffer length */ + /* OSLstEntry sGammaDir,_GammaDirS /* directory for 640x480 monitor */ +/* Parameters */ + OSLstEntry firstVidMode,_HiRes8Modes /* offset to 8 Bit Mode parms */ + OSLstEntry secondVidMode,_HiRes4Modes /* offset to 4 Bit Mode parms */ + OSLstEntry thirdVidMode,_HiRes2Modes /* offset to 2 Bit Mode parms */ + OSLstEntry fourthVidMode,_HiRes1Modes /* offset to 1 Bit Mode parms */ + OSLstEntry fifthVidMode,_HiRes24Modes /* offset to 24/32 Bit Mode parms */ + OSLstEntry sixthVidMode,_HiRes15Modes /* offset to 15/16 Bit Mode parms */ + .long EndOfList /* end of list */ + + + ALIGN 2 +_VModeName: + OSLstEntry sRsrc_GoboFB, _ScreenNameGoboFBHiRes + OSLstEntry sRsrc_GoboFB_13, _ScreenNameGoboFB13 + DatLstEntry endOfList, 0 + + ALIGN 2 +_ScreenNameGoboFBHiRes: + .long _ScreenNameGoboFBHiResEnd - _ScreenNameGoboFBHiRes + .word 0 + .string "GoblinFB Native\0" +_ScreenNameGoboFBHiResEnd: +#endif + +struct one_res { + const unsigned short hres; + const unsigned short vres; +}; + +#define NUM_RES 16 +#if 0 +static struct one_res res_db[NUM_RES] = { + { 1920, 1080 }, + { 1680, 1050 }, // should be unsuitable + { 1600, 900 }, + { 1440, 900 }, + + { 1280, 1024 }, + { 1280, 960 }, + { 1280, 800 }, + { 1152, 870 }, + + { 1152, 864 }, + { 1024, 768 }, + { 832, 624 }, + { 800, 600 }, + + { 768, 576 }, + { 640, 480 }, + { 512, 384 }, + { 0, 0 } +}; +#else +static struct one_res res_db[NUM_RES] = { + { 1920, 1080 }, + { 1600, 900 }, + { 640, 480 }, + { 0, 0} +}; +#endif + +int main(int argc, char **argv) { + unsigned short maxhres = 1920, maxvres = 1080; + const int depthdb[6] = { 8, 4, 2, 1, 32, 16 }; + int enabled[NUM_RES]; + int i, j; + unsigned char id; + + for (i = 0 ; i < NUM_RES ; i++) { + enabled[i] = 0; + } + + if (argc == 3) { + maxhres = atoi(argv[1]); + maxvres = atoi(argv[2]); + } + fprintf(stderr, "Resolution: %hu x %hu\n", maxhres, maxvres); + + id = 0x80; + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) && (id < 0x90); i++) { // 0x90 is the ram disk + char filename[512]; + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + FILE *fd; + + if ((hres * vres) % 128) // unsuitable + continue; + + snprintf(filename, 512, "VidRomRes_%hux%hu.s", hres, vres); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + if ((hres <= maxhres) && (vres <= maxvres)) { + enabled[i] = 1; + id ++; + + for (j = 0 ; j < 6 ; j++) { + char modename[128]; + const unsigned short depth = depthdb[j]; + const unsigned short rowBytes = (hres * depth) / 8; + snprintf(modename, 128, "R%hux%huD%d", hres, vres, depth); + + fprintf(fd, "\tALIGN 2\n"); + fprintf(fd, "_%sModes: /* id 0x%02x */\n", modename, id-1); + fprintf(fd, "\tOSLstEntry\tmVidParams,_%sParms\t/* offset to vid parameters */\n", modename); + fprintf(fd, "\tDatLstEntry\tmPageCnt,1\t/* number of video pages */\n"); + fprintf(fd, "\tDatLstEntry\tmDevType,clutType\t/* device type */\n"); + fprintf(fd, "\t.long\tEndOfList\t/* end of list */\n"); + fprintf(fd, "_%sParms:\n", modename); + fprintf(fd, "\t.long\t_End%sParms-_%sParms\t/* physical block size */\n", modename, modename); + fprintf(fd, "\t.long\t0\t/* QuickDraw base offset ; vpBaseOffset */\n"); // defmBaseOffset + fprintf(fd, "\t.word\t%hu\t/* physRowBytes ; vpRowBytes */\n", rowBytes); + fprintf(fd, "\t.word\t0,0,%hu,%hu\t/* vpBounds */\n", vres, hres); + fprintf(fd, "\t.word\tdefVersion\t/* bmVersion ; vpVersion */\n"); + fprintf(fd, "\t.word\t0\t/* packType not used ; vpPackType */\n"); + fprintf(fd, "\t.long\t0\t/* packSize not used ; vpPackSize */\n"); + fprintf(fd, "\t.long\tdefmHRes\t/* bmHRes */\n"); + fprintf(fd, "\t.long\tdefmVRes\t/* bmVRes */\n"); + fprintf(fd, "\t.word\tChunkyIndexed\t/* bmPixelType */\n"); + fprintf(fd, "\t.word\t%d\t/* bmPixelSize */\n", depth); + fprintf(fd, "\t.word\t%d\t/* bmCmpCount */\n", depth <= 8 ? 1 : 3); + fprintf(fd, "\t.word\t%d\t/* bmCmpSize */\n", depth <= 8 ? depth : (depth == 32 ? 8 : 5)); + fprintf(fd, "\t.long\t0\t/* bmPlaneBytes */\n"); // defmPlaneBytes + fprintf(fd, "_End%sParms:\n\n",modename); + } + } + fclose(fd); + } + + { + char filename[512]; + FILE *fd; + id = 0x80; + snprintf(filename, 512, "VidRomRes.s"); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + fprintf(fd, ".include \"VidRomRes_%hux%hu.s\"\n", hres, vres); + } + } + + fclose(fd); + } + + { + char filename[512]; + FILE *fd; + snprintf(filename, 512, "VidRomName.s"); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + fprintf(fd, "\tALIGN 2\n"); + fprintf(fd, "_VModeName:\n"); + + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + fprintf(fd, "\tOSLstEntry\tsRsrc_GoboFB_R%hux%hu,_ScreenNameGoboFB_R%hux%hu\n", hres, vres, hres, vres); + } + } + fprintf(fd, "\tDatLstEntry endOfList, 0\n"); + + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + int native = (hres == maxhres) && (vres == maxvres); + fprintf(fd, "\tALIGN 2\n"); + fprintf(fd, "_ScreenNameGoboFB_R%hux%hu:\n", hres, vres); + fprintf(fd, "\t.long\t_ScreenNameGoboFB_R%hux%huEnd - _ScreenNameGoboFB_R%hux%hu\n", hres, vres, hres, vres); + fprintf(fd, "\t.word\t0\n"); + fprintf(fd, "\t.string\t\"GoblinFB %hux%hu%s\\0\"\n", hres, vres, native ? " (N)": ""); + fprintf(fd, "_ScreenNameGoboFB_R%hux%huEnd:\n", hres, vres); + } + } + + fclose(fd); + } + + { + char filename[512]; + FILE *fd; + snprintf(filename, 512, "VidRomDir_%hux%hu.s", maxhres, maxvres); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + int native = (hres == maxhres) && (vres == maxvres); + fprintf(fd, "\tALIGN 2\n"); + fprintf(fd, "_sRsrc_GoboFB_R%hux%hu:\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tsRsrcType,_GoboFBType\t/* video type descriptor */\n"); + fprintf(fd, "\tOSLstEntry\tsRsrcName,_GoboFBName\t/* offset to driver name string */\n"); + fprintf(fd, "\tOSLstEntry\tsRsrcDrvrDir,_GoboFBDrvrDir /* offset to driver directory */\n"); + fprintf(fd, "\tDatLstEntry\tsRsrcFlags,%d\t/* force 32 bits mode & open (native) - or not (others)*/\n", native ? 6 : 0); + fprintf(fd, "\tDatLstEntry\tsRsrcHWDevId,1\t/* hardware device ID */\n"); + fprintf(fd, "\tOSLstEntry\tMinorBaseOS,_MinorBase\t/* offset to frame buffer array */\n"); + fprintf(fd, "\tOSLstEntry\tMinorLength,_MinorLength\t/* offset to frame buffer length */\n"); + fprintf(fd, "\t/* OSLstEntry\tsGammaDir,_GammaDirS\t/* directory for 640x480 monitor */\n"); + fprintf(fd, "/* Parameters */\n"); + fprintf(fd, "\tOSLstEntry\tfirstVidMode,_R%hux%huD8Modes\t/* offset to 8 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tsecondVidMode,_R%hux%huD4Modes\t/* offset to 4 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tthirdVidMode,_R%hux%huD2Modes\t/* offset to 2 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tfourthVidMode,_R%hux%huD1Modes\t/* offset to 1 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tfifthVidMode,_R%hux%huD32Modes\t/* offset to 24/32 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\tOSLstEntry\tsixthVidMode,_R%hux%huD16Modes\t/* offset to 15/16 Bit Mode parms */\n", hres, vres); + fprintf(fd, "\t.long EndOfList\t/* end of list */\n\n"); + } + } + fclose(fd); + } + + { + char filename[512]; + FILE *fd; + unsigned char id = 0x80; + snprintf(filename, 512, "VidRomDir.s"); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + + fprintf(fd, "\t.include \"VidRomDir_%hux%hu.s\"\n", maxhres, maxvres); + + fclose(fd); + } + + + { + char filename[512]; + FILE *fd; + unsigned char id = 0x80; + snprintf(filename, 512, "VidRomDef.s"); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + fprintf(fd, "sRsrc_GoboFB_R%hux%hu = 0x%02hhx\n", hres, vres, id++); + } + } + + fclose(fd); + } + + { + char filename[512]; + FILE *fd; + snprintf(filename, 512, "VidRomRsrcDir.s"); + fd = fopen(filename, "w"); + if (fd == NULL) { + fprintf(stderr, "Generating '%s' failed.\n", filename); + return -1; + } + fprintf(fd, "_sRsrcDir:\n"); + fprintf(fd, "\tOSLstEntry\tsRsrc_Board,_sRsrc_Board\t/* board sRsrc List */\n"); + for (i = 0 ; (res_db[i].hres != 0) && (res_db[i].vres != 0) ; i++) { + const unsigned short hres = res_db[i].hres; + const unsigned short vres = res_db[i].vres; + if (enabled[i]) { + fprintf(fd, "\tOSLstEntry\tsRsrc_GoboFB_R%hux%hu,_sRsrc_GoboFB_R%hux%hu/* video sRsrc List */\n", hres, vres, hres, vres); + } + } + fprintf(fd, "\tDatLstEntry endOfList, 0\n"); + + fclose(fd); + } + + + return 0; +} diff --git a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s index 5d1f093..a67d826 100644 --- a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s +++ b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s @@ -7,17 +7,10 @@ .include "DepVideo.inc" sRsrc_Board = 1 /* board sResource (>0 & <128) */ -sRsrc_GoboFB = 0x80 /* functional sResources */ -sRsrc_GoboFB_13 = 0x81 /* functional sResources */ + .include "VidRomDef.s" sRsrc_RAMDsk = 0x90 /* functional sResources */ -sRsrc_GoboFB_HiRes = 0x80 /* functional sResources */ -_sRsrcDir: - OSLstEntry sRsrc_Board,_sRsrc_Board /* board sRsrc List */ - OSLstEntry sRsrc_GoboFB,_sRsrc_GoboFB /* video sRsrc List */ - OSLstEntry sRsrc_GoboFB_13,_sRsrc_GoboFB_13 /* video sRsrc List */ -/* OSLstEntry sRsrc_RAMDsk,_sRsrc_RAMDsk /* video sRsrc List */ - .long EndOfList + .include "VidRomRsrcDir.s" _sRsrc_Board: OSLstEntry sRsrcType,_BoardType /* offset to board descriptor */ @@ -76,65 +69,9 @@ _PartNum: _Date: .string "&SysDate" /* date */ - ALIGN 2 - -_VModeName: - OSLstEntry sRsrc_GoboFB, _ScreenNameGoboFBHiRes - OSLstEntry sRsrc_GoboFB_13, _ScreenNameGoboFB13 - DatLstEntry endOfList, 0 - - ALIGN 2 -_ScreenNameGoboFBHiRes: - .long _ScreenNameGoboFBHiResEnd - _ScreenNameGoboFBHiRes - .word 0 - .string "GoblinFB Native\0" -_ScreenNameGoboFBHiResEnd: - - ALIGN 2 -_ScreenNameGoboFB13: - .long _ScreenNameGoboFB13End - _ScreenNameGoboFB13 - .word 0 - .string "GoblinFB 640x480WB\0" -_ScreenNameGoboFB13End: - - ALIGN 2 -_sRsrc_GoboFB: - OSLstEntry sRsrcType,_GoboFBType /* video type descriptor */ - OSLstEntry sRsrcName,_GoboFBName /* offset to driver name string */ - OSLstEntry sRsrcDrvrDir,_GoboFBDrvrDir /* offset to driver directory */ - DatLstEntry sRsrcFlags,6 /* force 32 bits mode & open */ - DatLstEntry sRsrcHWDevId,1 /* hardware device ID */ - OSLstEntry MinorBaseOS,_MinorBase /* offset to frame buffer array */ - OSLstEntry MinorLength,_MinorLength /* offset to frame buffer length */ - /* OSLstEntry sGammaDir,_GammaDirS /* directory for 640x480 monitor */ -/* Parameters */ - OSLstEntry firstVidMode,_HiRes8Modes /* offset to 8 Bit Mode parms */ - OSLstEntry secondVidMode,_HiRes4Modes /* offset to 4 Bit Mode parms */ - OSLstEntry thirdVidMode,_HiRes2Modes /* offset to 2 Bit Mode parms */ - OSLstEntry fourthVidMode,_HiRes1Modes /* offset to 1 Bit Mode parms */ - OSLstEntry fifthVidMode,_HiRes24Modes /* offset to 24/32 Bit Mode parms */ - OSLstEntry sixthVidMode,_HiRes15Modes /* offset to 15/16 Bit Mode parms */ - .long EndOfList /* end of list */ - - ALIGN 2 -_sRsrc_GoboFB_13: - OSLstEntry sRsrcType,_GoboFBType /* video type descriptor */ - OSLstEntry sRsrcName,_GoboFBName /* offset to driver name string */ - OSLstEntry sRsrcDrvrDir,_GoboFBDrvrDir /* offset to driver directory */ - DatLstEntry sRsrcFlags,6 /* force 32 bits mode & open */ - DatLstEntry sRsrcHWDevId,1 /* hardware device ID */ - OSLstEntry MinorBaseOS,_MinorBase /* offset to frame buffer array */ - OSLstEntry MinorLength,_MinorLength /* offset to frame buffer length */ - /* OSLstEntry sGammaDir,_GammaDirS /* directory for 640x480 monitor */ -/* Parameters */ - OSLstEntry firstVidMode,_M13_8Modes /* offset to 8 Bit Mode parms */ - OSLstEntry secondVidMode,_M13_4Modes /* offset to 4 Bit Mode parms */ - OSLstEntry thirdVidMode,_M13_2Modes /* offset to 2 Bit Mode parms */ - OSLstEntry fourthVidMode,_M13_1Modes /* offset to 1 Bit Mode parms */ - OSLstEntry fifthVidMode,_M13_24Modes /* offset to 24/32 Bit Mode parms */ - OSLstEntry sixthVidMode,_M13_15Modes /* offset to 15/16 Bit Mode parms */ - .long EndOfList /* end of list */ + .include "VidRomName.s" /* contains _VidName */ + .include "VidRomDir.s" ALIGN 2 _GoboFBType: @@ -163,9 +100,7 @@ _GoboFBDrvrMacOS68020: .text _GoboFBEnd020Drvr: - .include "vid_decl_rom_hires.s" - - .include "vid_decl_rom_13.s" + .include "VidRomRes.s" ALIGN 2 _sRsrc_RAMDsk: diff --git a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_13.s b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_13.s deleted file mode 100644 index 3540f88..0000000 --- a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_13.s +++ /dev/null @@ -1,133 +0,0 @@ - - ALIGN 2 -_M13_8Modes: - OSLstEntry mVidParams,_M13_V8Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages8s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_M13_V8Parms: - .long _End_M13_V8Parms-_M13_V8Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 640 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 8 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 8 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V8Parms: - ALIGN 2 -_M13_4Modes: - OSLstEntry mVidParams,_M13_V4Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages4s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_M13_V4Parms: - .long _End_M13_V4Parms-_M13_V4Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 320 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 4 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 4 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V4Parms: - ALIGN 2 -_M13_2Modes: - OSLstEntry mVidParams,_M13_V2Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages2s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_M13_V2Parms: - .long _End_M13_V2Parms-_M13_V2Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 160 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 2 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 2 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V2Parms: - ALIGN 2 -_M13_1Modes: - OSLstEntry mVidParams,_M13_V1Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages1s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_M13_V1Parms: - .long _End_M13_V1Parms-_M13_V1Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 80 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 1 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 1 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V1Parms: - ALIGN 2 -_M13_24Modes: - OSLstEntry mVidParams,_M13_V24Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages24s /* number of video pages */ - DatLstEntry mDevType,directType /* device type */ - .long EndOfList /* end of list */ -_M13_V24Parms: - .long _End_M13_V24Parms-_M13_V24Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 2560 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyDirect /* bmPixelType */ - .word 32 /* bmPixelSize */ - .word 3 /* bmCmpCount */ - .word 8 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V24Parms: - ALIGN 2 -_M13_15Modes: - OSLstEntry mVidParams,_M13_V15Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages15s /* number of video pages */ - DatLstEntry mDevType,directType /* device type */ - .long EndOfList /* end of list */ -_M13_V15Parms: - .long _End_M13_V15Parms-_M13_V15Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word 1280 /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,480,640 /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyDirect /* bmPixelType */ - .word 16 /* bmPixelSize */ - .word 3 /* bmCmpCount */ - .word 5 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_End_M13_V15Parms: diff --git a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_hires.s b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_hires.s deleted file mode 100644 index f47d7c8..0000000 --- a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom_hires.s +++ /dev/null @@ -1,133 +0,0 @@ - - ALIGN 2 -_HiRes8Modes: - OSLstEntry mVidParams,_HRV8Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages8s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_HRV8Parms: - .long _EndHRV8Parms-_HRV8Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB8s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 8 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 8 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV8Parms: - ALIGN 2 -_HiRes4Modes: - OSLstEntry mVidParams,_HRV4Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages4s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_HRV4Parms: - .long _EndHRV4Parms-_HRV4Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB4s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 4 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 4 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV4Parms: - ALIGN 2 -_HiRes2Modes: - OSLstEntry mVidParams,_HRV2Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages2s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_HRV2Parms: - .long _EndHRV2Parms-_HRV2Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB2s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 2 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 2 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV2Parms: - ALIGN 2 -_HiRes1Modes: - OSLstEntry mVidParams,_HRV1Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages1s /* number of video pages */ - DatLstEntry mDevType,clutType /* device type */ - .long EndOfList /* end of list */ -_HRV1Parms: - .long _EndHRV1Parms-_HRV1Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB1s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyIndexed /* bmPixelType */ - .word 1 /* bmPixelSize */ - .word 1 /* bmCmpCount */ - .word 1 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV1Parms: - ALIGN 2 -_HiRes24Modes: - OSLstEntry mVidParams,_HRV24Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages24s /* number of video pages */ - DatLstEntry mDevType,directType /* device type */ - .long EndOfList /* end of list */ -_HRV24Parms: - .long _EndHRV24Parms-_HRV24Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB24s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyDirect /* bmPixelType */ - .word 32 /* bmPixelSize */ - .word 3 /* bmCmpCount */ - .word 8 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV24Parms: - ALIGN 2 -_HiRes15Modes: - OSLstEntry mVidParams,_HRV15Parms /* offset to vid parameters */ - DatLstEntry mPageCnt,Pages15s /* number of video pages */ - DatLstEntry mDevType,directType /* device type */ - .long EndOfList /* end of list */ -_HRV15Parms: - .long _EndHRV15Parms-_HRV15Parms /* physical block size */ - .long defmBaseOffset /* QuickDraw base offset ; vpBaseOffset */ - .word RB15s /* physRowBytes ; vpRowBytes */ - .word defmBounds_Ts,defmBounds_Ls,defmBounds_Bs,defmBounds_Rs /* vpBounds */ - .word defVersion /* bmVersion ; vpVersion */ - .word 0 /* packType not used ; vpPackType */ - .long 0 /* packSize not used ; vpPackSize */ - .long defmHRes /* bmHRes */ - .long defmVRes /* bmVRes */ - .word ChunkyDirect /* bmPixelType */ - .word 16 /* bmPixelSize */ - .word 3 /* bmCmpCount */ - .word 5 /* bmCmpSize */ - .long defmPlaneBytes /* bmPlaneBytes */ -_EndHRV15Parms: