rework build system

This commit is contained in:
Romain Dolbeau 2022-10-06 23:28:07 +02:00
parent 17a9aebd78
commit 4468ffd68c
20 changed files with 155 additions and 217 deletions

View File

@ -51,6 +51,3 @@ ChunkyIndexed = 0
ChunkyDirect = 16
defVersion = 0 /* Version = 0 */
ROMSize = 0x1000 /* 4K byte ROM */

View File

@ -1,5 +1,7 @@
AS=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-as
CC=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-gcc
LD=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-ld
STRIP=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-strip
OBJCOPY=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-objcopy
HOSTCC=gcc
HOSTCFLAGS=-O2
@ -29,81 +31,31 @@ gen_mode: gen_mode.c
${GEN_ASM}: gen_mode
./gen_mode ${HRES} ${VRES}
all: vid_decl_rom.bin vid_decl_rom.srec
all: vid_decl_rom.bin
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}
vid_decl_rom.o: vid_decl_rom.s NuBusFPGAPrimaryInit.s NuBusFPGASecondaryInit.s NuBusFPGADrvr.s ${APPLEINCS} DepVideo.inc ${GEN_ASM}
rm -f res.inc
echo -e "HRES=${HRES}\nVRES=${VRES}\n" | tee res.inc
${AS} ${ARCHFLAGS} -I${NS816DECLROMDIR} $< -o $@ -a > vid_decl_rom.l
NuBusFPGADrvr_OpenClose.s: NuBusFPGADrvr_OpenClose.c NuBusFPGADrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.OpenClose_\1/g' $@
NuBusFPGADrvr_Ctrl.s: NuBusFPGADrvr_Ctrl.c NuBusFPGADrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.Ctrl_\1/g' $@
NuBusFPGADrvr_Status.s: NuBusFPGADrvr_Status.c NuBusFPGADrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.Status_\1/g' $@
NuBusFPGARAMDskDrvr_OpenClose.s: NuBusFPGARAMDskDrvr_OpenClose.c NuBusFPGARAMDskDrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDOpenClose_\1/g' $@
NuBusFPGARAMDskDrvr_Prime.s: NuBusFPGARAMDskDrvr_Prime.c NuBusFPGARAMDskDrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDPrime_\1/g' $@
NuBusFPGARAMDskDrvr_Ctrl.s: NuBusFPGARAMDskDrvr_Ctrl.c NuBusFPGARAMDskDrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDCtrl_\1/g' $@
NuBusFPGARAMDskDrvr_Status.s: NuBusFPGARAMDskDrvr_Status.c NuBusFPGARAMDskDrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDStatus_\1/g' $@
myrle.s: myrle.c
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DSKIP_MAIN
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.myrle_\1/g' $@
myrle.o: myrle.c
${CC} ${ARCHFLAGS} ${CFLAGS} $< -c -o $@ -DSKIP_MAIN
dump_cpr.s: dump_cpr.c
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DSKIP_MAIN
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.dump_cpr_\1/g' $@
%.o: %.c NuBusFPGADrvr.h
${CC} ${CFLAGS} $< -c -o $@ -DHRES=${HRES} -DVRES=${VRES}
NuBusFPGAPrimaryInit_Primary.s: NuBusFPGAPrimaryInit_Primary.c NuBusFPGADrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.PIPrimary_\1/g' $@
vid_decl_rom.elf: linker.ld vid_decl_rom.o ${CSRC:.c=.o} # linker script must be first
${LD} -o $@ -T $^
NuBusFPGASecondaryInit_Secondary.s: NuBusFPGASecondaryInit_Secondary.c NuBusFPGADrvr.h
${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES}
sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@
sed -i -e 's/\.\(L[0-9][0-9]*\)/.PISecondary_\1/g' $@
vid_decl_rom.srec: vid_decl_rom.o
${OBJCOPY} $^ $@ --input-target=elf32-m68k --output-target=srec
vid_decl_rom.raw: vid_decl_rom.o
vid_decl_rom.raw: vid_decl_rom.elf
${OBJCOPY} $^ $@ --input-target=elf32-m68k --output-target=binary
vid_decl_rom.dir: vid_decl_rom.raw append_romdir
cp $< $@
./append_romdir $@
vid_decl_rom.bin: vid_decl_rom.dir
vid_decl_rom.bin: vid_decl_rom.raw
${NUBUS_CHECKSUM} --input_file $< --output_file $@ --output_size 32768
dd if=dump.cpr of=vid_decl_rom.bin bs=1 conv=notrunc
@ -112,4 +64,3 @@ clean:
append_romdir: append_romdir.c
${HOSTCC} $< -o $@

View File

@ -126,23 +126,25 @@ static inline unsigned int read_reg(AuxDCEPtr dce, unsigned int reg) {
/* ASM */
extern SlotIntServiceProcPtr interruptRoutine;
/* ctrl */
void linearGamma(NuBusFPGADriverGlobalsPtr dStore);
OSErr changeIRQ(AuxDCEPtr dce, char en, OSErr err);
OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce);
OSErr reconfHW(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page);
OSErr updatePRAM(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page);
void linearGamma(NuBusFPGADriverGlobalsPtr dStore) __attribute__ ((section (".text.fbdriver")));
OSErr changeIRQ(AuxDCEPtr dce, char en, OSErr err) __attribute__ ((section (".text.fbdriver")));
OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver")));
OSErr reconfHW(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page) __attribute__ ((section (".text.fbdriver")));
OSErr updatePRAM(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page) __attribute__ ((section (".text.fbdriver")));
/* status */
OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce);
OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver")));
/* open close */
OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce);
OSErr cNuBusFPGAClose(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce);
OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver")));
OSErr cNuBusFPGAClose(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver")));
/* primary init */
UInt32 Primary(SEBlock* block);
UInt32 Primary(SEBlock* block) __attribute__ ((section (".text.primary")));
/* secondary init */
UInt32 Secondary(SEBlock* seblock) __attribute__ ((section (".text.secondary")));
#define Check32QDTrap 0xAB03
#if 1
#if 0
static inline UInt32 revb(UInt32 d) {
return ((d&0xFFul)<<24) | ((d&0xFF00ul)<<8) | ((d&0xFF0000ul)>>8) | ((d&0xFF000000ul)>>24);
}
@ -151,3 +153,4 @@ static inline UInt32 revb(UInt32 d) {
#endif
#endif

View File

@ -21,12 +21,3 @@ _NuBusFPGATitle_StringEnd:
/* A0 pointer to driver parameter block */
/* A1 pointer to driver device control entry */
ALIGN 2
.include "NuBusFPGADrvr_OpenClose.s"
.text
.include "NuBusFPGADrvr_Ctrl.s"
.text
.include "NuBusFPGADrvr_Status.s"
.text
ALIGN 2

View File

@ -358,7 +358,7 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
done:
if (!(pb->ioTrap & (1<<noQueueBit)))
IODone(dce, ret);
IODone((DCtlPtr)dce, ret);
return ret;
}

View File

@ -5,7 +5,7 @@
typedef void(*vblproto)(short);
#pragma parameter __D0 fbIrq(__A1)
short fbIrq(const long sqParameter){
__attribute__ ((section (".text.fbdriver"))) short fbIrq(const long sqParameter){
/* AuxDCEPtr dce = (AuxDCEPtr)sqParameter; */
/* NuBusFPGADriverGlobalsHdl dStoreHdl = (NuBusFPGADriverGlobalsHdl)dce->dCtlStorage; */
/* NuBusFPGADriverGlobalsPtr dStore = *dStoreHdl; */
@ -21,8 +21,8 @@ short fbIrq(const long sqParameter){
OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
{
OSErr ret = noErr;
/* write_reg(dce, GOBOFB_DEBUG, 0xBEEF0000); */
/* write_reg(dce, GOBOFB_DEBUG, (unsigned long)dce->dCtlDevBase); */
write_reg(dce, GOBOFB_DEBUG, 0xBEEF0000);
write_reg(dce, GOBOFB_DEBUG, (unsigned long)dce->dCtlDevBase);
if (dce->dCtlStorage == nil)
{

View File

@ -401,6 +401,6 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
#endif
done:
if (!(pb->ioTrap & (1<<noQueueBit)))
IODone(dce, ret);
IODone((DCtlPtr)dce, ret);
return ret;
}

View File

@ -6,8 +6,7 @@
BeginPrimary:
MOVE.L %A0, -(%A7)
JSR Primary
BSR Primary
MOVE.L (%A7)+, %a0
rts
.include "NuBusFPGAPrimaryInit_Primary.s"
.text

View File

@ -24,7 +24,8 @@ UInt32 Primary(SEBlock* seblock) {
PRIM_WRITEREG(GOBOFB_VBL_MASK, 0);// disable interrupts
/* PRIM_WRITEREG(GOBOFB_DEBUG, busMode);// trace */
PRIM_WRITEREG(GOBOFB_DEBUG, 0x87654321);// trace
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

View File

@ -41,7 +41,16 @@ struct RAMDrvContext {
#define DMA_STATUS_CHECK_BITS (0x01F)
#endif
/* ctrl */
OSErr cNuBusFPGARAMDskCtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.dskdriver")));
/* open, close */
OSErr cNuBusFPGARAMDskOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.dskdriver")));
OSErr cNuBusFPGARAMDskClose(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.dskdriver")));
/* prime */
OSErr cNuBusFPGARAMDskPrime(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.dskdriver")));
/* status */
OSErr cNuBusFPGARAMDskStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.dskdriver")));
uint32_t rledec(uint32_t* out, const uint32_t* in, const uint32_t len);
uint32_t rledec(uint32_t* out, const uint32_t* in, const uint32_t len) __attribute__ ((section (".text.dskdriver")));;
#endif

View File

@ -21,16 +21,3 @@ _NuBusFPGARAMDskTitle_StringEnd:
/* A0 pointer to driver parameter block */
/* A1 pointer to driver device control entry */
ALIGN 2
.include "NuBusFPGARAMDskDrvr_OpenClose.s"
.text
.include "NuBusFPGARAMDskDrvr_Prime.s"
.text
.include "NuBusFPGARAMDskDrvr_Ctrl.s"
.text
.include "NuBusFPGARAMDskDrvr_Status.s"
.text
.include "myrle.s"
.text
ALIGN 2

View File

@ -28,6 +28,6 @@ OSErr cNuBusFPGARAMDskCtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
done:
if (!(pb->ioTrap & (1<<noQueueBit)))
IODone(dce, ret);
IODone((DCtlPtr)dce, ret);
return ret;
}

View File

@ -9,7 +9,7 @@
/* drVNum to high-order bits of num, drvrRefNum in low-order */
/* not sure how to do "parameter" without output ? */
#pragma parameter __D0 AddDrive(__D0, __A0)
static inline int dupAddDrive(unsigned long num, DrvQElPtr qEl) {
__attribute__ ((section (".text.dskdriver"))) static inline int dupAddDrive(unsigned long num, DrvQElPtr qEl) {
asm volatile(".word 0xA04E" : : "d" (num), "a" (qEl));
return num; // should cost nothing, num is already in D0
}

View File

@ -2,7 +2,7 @@
/* #include <DriverServices.h> */
static inline void waitSome(unsigned long bound) {
__attribute__ ((section (".text.dskdriver"))) static inline void waitSome(unsigned long bound) {
unsigned long i;
for (i = 0 ; i < bound ; i++) {
asm volatile("nop");
@ -199,7 +199,7 @@ OSErr cNuBusFPGARAMDskPrime(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
done:
if (!(pb->ioTrap & (1<<noQueueBit)))
IODone(dce, ret);
IODone((DCtlPtr)dce, ret);
return ret;
}

View File

@ -25,6 +25,6 @@ OSErr cNuBusFPGARAMDskStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce)
done:
if (!(pb->ioTrap & (1<<noQueueBit)))
IODone(dce, ret);
IODone((DCtlPtr)dce, ret);
return ret;
}

View File

@ -6,8 +6,10 @@
BeginSecondary:
MOVE.L %A0, -(%A7)
JSR Secondary
movea.l #0xfc90001c, %a0
move.l #0xcccccccc, (%a0)
BSR Secondary
movea.l #0xfc90001c, %a0
move.l #0xdddddddd, (%a0)
MOVE.L (%A7)+, %a0
rts
.include "NuBusFPGASecondaryInit_Secondary.s"
.text

View File

@ -1,83 +0,0 @@
// 00 00 10 0a 00 00 00 00 01 01 5a 93 2b c7 00 0f
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
struct dir {
uint32_t oslt;
uint32_t length;
uint32_t crc;
uint8_t one;
uint8_t appleformat;
uint8_t tp0;
uint8_t tp1;
uint8_t tp2;
uint8_t tp3;
uint8_t zero;
uint8_t bytelane;
};
int main(int argc, char **argv) {
struct dir data;
struct stat buf;
int fd;
if (argc < 2) {
fprintf(stderr, "no I/O file\n");
exit(-1);
}
data.oslt = 0;
data.length = 0;
data.crc = 0;
data.one = 1;
data.appleformat = 1;
data.tp0 = 0x5a;
data.tp1 = 0x93;
data.tp2 = 0x2b;
data.tp3 = 0xc7;
data.zero = 0;
data.bytelane = 0x0F;
if (stat(argv[1], &buf)) {
fprintf(stderr, "stat: %d -> %s\n", errno, strerror(errno));
exit(-2);
}
data.length = sizeof(data) + buf.st_size;
printf("size is %u\n", data.length);
//.long (\entry_type<<24) + ((\label-.) & 0xffffff)
data.oslt = 0x00 << 24 | (-buf.st_size) & 0xFFFFFF;
printf("entry is 0x%08x\n", data.oslt);
data.length = __builtin_bswap32(data.length);
data.oslt = __builtin_bswap32(data.oslt);
if ((fd = open(argv[1], O_WRONLY | O_APPEND)) == -1) {
fprintf(stderr, "open: %d -> %s\n", errno, strerror(errno));
exit(-3);
}
write(fd, &data, sizeof(data));
close(fd);
return 0;
}

View File

@ -0,0 +1,44 @@
OUTPUT_FORMAT("elf32-m68k");
ENTRY(DeclROMDir);
SECTIONS {
.text : {
/* first the resource dir & related */
*(.text.begin)
*(.text .sdata .sdata.* .data .data.* .rodata .rodata.*)
/* then various sections for the various bits of codes */
PROVIDE(_sPInitRec = .);
PROVIDE(entry_sPInitRec = (0x22000000 | ((_sPInitRec - _sRsrc_Board - 12) & 0xFFFFFF))); /* fixme; offset 12 hardwired */
*(.text.primary_init)
*(.text.primary)
PROVIDE(_EndsPInitRec = .);
PROVIDE(size_sPInitRec = _EndsPInitRec - _sPInitRec);
PROVIDE(_sSInitRec = .);
PROVIDE(entry_sSInitRec = (0x24000000 | ((_sSInitRec - _sRsrc_Board - 20) & 0xFFFFFF))); /* fixme; offset 20 hardwired */
*(.text.secondary_init)
*(.text.secondary)
PROVIDE(_EndsSInitRec = .);
PROVIDE(size_sSInitRec = _EndsSInitRec - _sSInitRec);
PROVIDE(_GoboFBDrvrMacOS68020 = .);
PROVIDE(entry_GoboFBDrvrMacOS68020 = (0x02000000 | ((_GoboFBDrvrMacOS68020 - _GoboFBDrvrDir) & 0xFFFFFF)));
*(.text.fbdriver_init)
*(.text.fbdriver)
PROVIDE(_GoboFBEnd020Drvr = .);
PROVIDE(_RAMDskDrvrMacOS68020 = .);
PROVIDE(entry_RAMDskDrvrMacOS68020 = (0x02000000 | ((_RAMDskDrvrMacOS68020 - _RAMDskDrvrDir) & 0xFFFFFF)));
*(.text.dskdriver_init)
*(.text.dskdriver)
PROVIDE(_RAMDskEnd020Drvr = .);
/* and at the end the ROM block, missing only the CRC */
. = ALIGN(4);
*(.romblock)
PROVIDE(ROMSize = .);
PROVIDE(RsrcDirOffset = ((0-.)+20) & 0xFFFFFF);
}
/DISCARD/ : { *(*) }
}

View File

@ -2,6 +2,8 @@
//#include <stdio.h>
#include "NuBusFPGARAMDskDrvr.h"
#ifndef SKIP_MAIN
uint32_t rleenc(uint32_t* out, const uint32_t* in, const uint32_t len) {
uint32_t i = 0, j = 0, p = 0, ib, k;

View File

@ -9,16 +9,23 @@
sRsrc_Board = 1 /* board sResource (>0 & <128) */
.include "VidRomDef.s"
sRsrc_RAMDsk = 0x90 /* functional sResources */
.global DeclROMDir
.section .text.begin
.include "VidRomRsrcDir.s"
.global _sRsrc_Board
_sRsrc_Board:
OSLstEntry sRsrcType,_BoardType /* offset to board descriptor */
OSLstEntry sRsrcName,_BoardName /* offset to name of board */
DatLstEntry boardId,NuBusFPGAID /* board ID # (assigned by DTS) */
OSLstEntry primaryInit,_sPInitRec /* offset to PrimaryInit exec blk */
/* OSLstEntry primaryInit,_sPInitRec */ /* offset to PrimaryInit exec blk */
.long entry_sPInitRec
OSLstEntry vendorInfo,_VendorInfo /* offset to vendor info record */
OSLstEntry secondaryInit,_sSInitRec /* offset to SecondaryInit block */
/* OSLstEntry secondaryInit,_sSInitRec */ /* offset to SecondaryInit block */
.long entry_sSInitRec
OSLstEntry sRsrcVidNames, _VModeName /* video name directory */
.long EndOfList
@ -35,20 +42,24 @@ _BoardName:
/* _VidICON ; optional icon, not needed */
/* _sVidNameDir ; optional name(s), not needed */
_sPInitRec:
.long _EndsPInitRec-_sPInitRec /* physical block size */
.section .text.primary_init
/* _sPInitRec: */
/* .long _EndsPInitRec-_sPInitRec */ /* physical block size */
.long size_sPInitRec
.include "NuBusFPGAPrimaryInit.s" /* the header/code */
.text
ALIGN 2
_EndsPInitRec:
/* _EndsPInitRec: */
_sSInitRec:
.long _EndsSInitRec-_sSInitRec /* physical block size */
.section .text.secondary_init
/* _sSInitRec: */
/* .long _EndsSInitRec-_sSInitRec */ /* physical block size */
.long size_sSInitRec
.include "NuBusFPGASecondaryInit.s" /* the header/code */
.text
ALIGN 2
_EndsSInitRec:
/* _EndsSInitRec: */
.section .text.begin
ALIGN 2
_VendorInfo:
OSLstEntry vendorId,_VendorId /* offset to vendor ID */
@ -89,19 +100,24 @@ _MinorLength:
.long defMinorLength /* frame buffer length */
ALIGN 2
.section .text.begin
.global _GoboFBDrvrDir
_GoboFBDrvrDir:
OSLstEntry sMacOS68020,_GoboFBDrvrMacOS68020 /* driver directory for Mac OS */
/* OSLstEntry sMacOS68020,_GoboFBDrvrMacOS68020 */ /* driver directory for Mac OS */
.long entry_GoboFBDrvrMacOS68020
.long EndOfList
ALIGN 2
_GoboFBDrvrMacOS68020:
.section .text.fbdriver_init
/* _GoboFBDrvrMacOS68020: */ /* supplied by linker script */
.long _GoboFBEnd020Drvr-. /* physical block size */
.include "NuBusFPGADrvr.s" /* driver code */
.text
_GoboFBEnd020Drvr:
/* _GoboFBEnd020Drvr: */ /* supplied by linker script */
.section .text.begin
.include "VidRomRes.s"
.section .text.begin
ALIGN 2
_sRsrc_RAMDsk:
OSLstEntry sRsrcType,_RAMDskType /* video type descriptor */
@ -122,14 +138,33 @@ _RAMDskName:
.string "RAMDsk_NuBusFPGA" /* video driver name */
ALIGN 2
.section .text.begin
.global _RAMDskDrvrDir
_RAMDskDrvrDir:
OSLstEntry sMacOS68020,_RAMDskDrvrMacOS68020 /* driver directory for Mac OS */
/* OSLstEntry sMacOS68020,_RAMDskDrvrMacOS68020 */ /* driver directory for Mac OS */
.long entry_RAMDskDrvrMacOS68020
.long EndOfList
ALIGN 2
_RAMDskDrvrMacOS68020:
.section .text.dskdriver_init
/* _RAMDskDrvrMacOS68020: */ /* supplied by linker script */
.long _RAMDskEnd020Drvr-. /* physical block size */
.include "NuBusFPGARAMDskDrvr.s" /* driver code */
.text
_RAMDskEnd020Drvr:
/* _RAMDskEnd020Drvr: */ /* supplied by linker script */
/* Declaration ROM directory at end */
.section .romblock
ALIGN 2
DeclROMDir:
.long RsrcDirOffset /* supplied by linker script, replace OSLstEntry 0, _sRsrcDir */
DeclROMCRC:
.long ROMSize /* supplied by linker script */
.long 0 /* crc TBComputed after the fact */
.byte 1 /* Revision Level */
.byte appleFormat /* Apple Format */
.long testPattern /* magic TestPattern */
.byte 0 /* reserved */
.byte 0x0F /* byte lane marker */
DeclRomEnd:
.end