anotherplan/memlist.c

57 lines
1.7 KiB
C
Raw Normal View History

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 */
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);
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);
}