2020-08-22 03:53:35 +00:00
|
|
|
#include <u.h>
|
|
|
|
#include <libc.h>
|
|
|
|
#include <bio.h>
|
|
|
|
#include <mach.h>
|
|
|
|
#include "memlist.h"
|
|
|
|
|
|
|
|
void
|
|
|
|
loadmemlist(char *filename)
|
|
|
|
{
|
|
|
|
int fd = open(filename, OREAD);
|
|
|
|
if ( !fd ) {
|
|
|
|
exits("couldn't open the file!");
|
|
|
|
}
|
|
|
|
|
|
|
|
Dir *filestats = dirfstat(fd);
|
|
|
|
if ( filestats == nil ) {
|
|
|
|
exits("couldn't fstat the file!");
|
|
|
|
}
|
|
|
|
vlong filesize = filestats->length;
|
|
|
|
print("\"%s\" has size %lld.\n", filename, filesize);
|
|
|
|
free(filestats);
|
|
|
|
|
|
|
|
if ( !machbyname("68020") ) {
|
|
|
|
exits("libmach doesn't support \"68020\" architecture.");
|
|
|
|
}
|
|
|
|
Map *bankmap = newmap(nil, 1);
|
|
|
|
if (bankmap == nil) {
|
|
|
|
exits("couldn't allocate a new map.");
|
|
|
|
}
|
|
|
|
setmap(bankmap, fd, 0, filesize, 0, "memlist");
|
|
|
|
|
|
|
|
uvlong offset = 0;
|
|
|
|
for ( uint assetno = 0; assetno < 10; assetno++ ) {
|
|
|
|
Asset readAsset = {0};
|
|
|
|
get1(bankmap, offset, (uchar*) &readAsset.state, 1); offset += 1;
|
|
|
|
get1(bankmap, offset, (uchar*) &readAsset.type, 1); offset += 1; offset += 4;
|
|
|
|
get1(bankmap, offset, (uchar*) &readAsset.rank, 1); offset += 1;
|
|
|
|
get1(bankmap, offset, (uchar*) &readAsset.bank, 1); offset += 1;
|
|
|
|
get4(bankmap, offset, (ulong*) &readAsset.bankoffset ); offset += 4; offset += 2;
|
|
|
|
get2(bankmap, offset, (ushort*) &readAsset.packedlength); offset += 2; offset += 2;
|
|
|
|
get2(bankmap, offset, (ushort*) &readAsset.length ); offset += 2;
|
|
|
|
USED(offset); /* this is stupid */
|
2020-08-23 01:17:22 +00:00
|
|
|
print("--[asset %d]--\n", assetno);
|
2020-08-22 03:53:35 +00:00
|
|
|
print("state: 0x%02X.\n", readAsset.state);
|
|
|
|
print("type: 0x%02X.\n", readAsset.type);
|
|
|
|
print("rank: 0x%02X.\n", readAsset.rank);
|
|
|
|
print("bank: 0x%02X.\n", readAsset.bank);
|
2020-08-23 01:17:22 +00:00
|
|
|
print("offset: %lld.\n", readAsset.bankoffset);
|
2020-08-22 03:53:35 +00:00
|
|
|
print("packed: %d.\n", readAsset.packedlength);
|
|
|
|
print("length: %d.\n", readAsset.length);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (fd) {
|
|
|
|
close(fd);
|
|
|
|
}
|
|
|
|
free(bankmap);
|
|
|
|
}
|