;:ts=8
	far	code
	far	data
;#include		"memcheck.h"
;
;/*  TT8 specific includes  */
;#include        <TT8.h>                 /* Tattletale Model 8 Definitions */
;#include        <tat332.h>              /* 68332 Tattletale (7,8) Hardware Definitions */
;#include        <sim332.h>              /* 68332 System Integration Module Definitions */
;#include        <qsm332.h>              /* 68332 Queued Serial Module Definitions */
;#include        <tpu332.h>              /* 68332 Time Processing Unit Definitions */
;#include        <dio332.h>              /* 68332 Digital I/O Port Pin Definitions */
;#include        <tt8pic.h>              /* Model 8 PIC Parallel Slave Port Definitions */
;#include        <tt8lib.h>              /* definitions and prototypes for Model 8 library */
;
;/*  general C includes  */
;#include        <stdio.h>
;#include        <stdlib.h>
;
;/*  disk includes  */
;#include		<pcdisk.h>
;
;#include		"misc.h"
;#include		"ASSERT.h"
;
;
;struct errno_string  {
;	int errno;
;	char* string;
;};
;struct errno_string errno_strings[] =  {
	dseg
	ds	0
	xdef	_errno_strings
_errno_strings:
;	PEBADF, "Invalid file descriptor",
	ds.b	0
	dc.w	9
	dc.l	.1+0
;	PENOENT, "File or path not found",
	ds.b	0
	dc.w	2
	dc.l	.1+24
;	PEMFILE, "Too many files open",
	ds.b	0
	dc.w	24
	dc.l	.1+47
;	PEEXIST, "Exclusive access requested on already existing file",
	ds.b	0
	dc.w	17
	dc.l	.1+67
;	PEACCES, "Attempt to open read only or special file",
	ds.b	0
	dc.w	13
	dc.l	.1+119
;	PEINVAL, "Seek to negative file pointer attempted",
	ds.b	0
	dc.w	22
	dc.l	.1+161
;	PENOSPC, "Write failed, presumable because of no space",
	ds.b	0
	dc.w	28
	dc.l	.1+201
;	PESHARE, "Open failed due to sharing violation",
	ds.b	0
	dc.w	30
	dc.l	.1+246
;	PEDEVICE, "No valid disk present",
	ds.b	0
	dc.w	31
	dc.l	.1+283
;};
	cseg
.1
	dc.b	73,110,118,97,108,105,100,32,102,105,108,101,32,100,101
	dc.b	115,99,114,105,112,116,111,114,0,70,105,108,101,32,111
	dc.b	114,32,112,97,116,104,32,110,111,116,32,102,111,117,110
	dc.b	100,0,84,111,111,32,109,97,110,121,32,102,105,108,101
	dc.b	115,32,111,112,101,110,0,69,120,99,108,117,115,105,118
	dc.b	101,32,97,99,99,101,115,115,32,114,101,113,117,101,115
	dc.b	116,101,100,32,111,110,32,97,108,114,101,97,100,121,32
	dc.b	101,120,105,115,116,105,110,103,32,102,105,108,101,0,65
	dc.b	116,116,101,109,112,116,32,116,111,32,111,112,101,110,32
	dc.b	114,101,97,100,32,111,110,108,121,32,111,114,32,115,112
	dc.b	101,99,105,97,108,32,102,105,108,101,0,83,101,101,107
	dc.b	32,116,111,32,110,101,103,97,116,105,118,101,32,102,105
	dc.b	108,101,32,112,111,105,110,116,101,114,32,97,116,116,101
	dc.b	109,112,116,101,100,0,87,114,105,116,101,32,102,97,105
	dc.b	108,101,100,44,32,112,114,101,115,117,109,97,98,108,101
	dc.b	32,98,101,99,97,117,115,101,32,111,102,32,110,111,32
	dc.b	115,112,97,99,101,0,79,112,101,110,32,102,97,105,108
	dc.b	101,100,32,100,117,101,32,116,111,32,115,104,97,114,105
	dc.b	110,103,32,118,105,111,108,97,116,105,111,110,0,78,111
	dc.b	32,118,97,108,105,100,32,100,105,115,107,32,112,114,101
	dc.b	115,101,110,116,0
	ds	0
;char* get_errno_string (int err)  {
# 39 'misc.c' 645314180
| .3
	xdef	_get_errno_string
_get_errno_string:
	movem.l	d2/d3/d4,-(sp)
	move.w	16(sp),d3
;	int n;
;	static char sbuff[64];
	bss	.10001,64
;	const int n_strings = sizeof (errno_strings) / sizeof (struct errno_string);
;	
;	ASSERT (n_strings == 9);    
~ n d2 "i"
~ sbuff .10001 "[64c"
~ n_strings d4 "i"
~~ err d3 "i"
	move.l	#9,d4
^^^^^;	
;	if (err < 0)
^^;		err = get_errno ();
	tst.w	d3
	bge	.10002
^	jsr	_get_errno
	move.w	d0,d3
;    for (n = 0;  n < n_strings;  n++)  {
.10002
^	move.l	#0,d2
	bra	.10006
.10005
;    	if (err == errno_strings[n].errno)
^;    		return errno_strings[n].string;
	move.w	d2,d0
	ext.l	d0
	move.l	d0,d1
	lsl.l	#1,d0
	add.l	d1,d0 
	lsl.l	#1,d0
	lea	_errno_strings,a0
	move.w	(a0,d0.l),d0
	cmp.w	d3,d0
	bne	.10007
^	move.w	d2,d0
	ext.l	d0
	move.l	d0,d1
	lsl.l	#1,d0
	add.l	d1,d0 
	lsl.l	#1,d0
	lea	_errno_strings+2,a0
	move.l	(a0,d0.l),d0
.4
	movem.l	(sp)+,d2/d3/d4
	rts
;    }
.10007
^.10003
	add.w	#1,d2
.10006
	cmp.w	d4,d2
	blt	.10005
.10004
;    
;    sprintf (sbuff, "Errno %d has no known string", err);
^^	move.w	d3,-(sp)
	pea	.2+0
	pea	.10001
	jsr	_sprintf
;    return sbuff;
^	lea	.10001,a0
	move.l	a0,d0
	lea	10(sp),sp
	bra	.4
;}
^.3
.2
	dc.b	69,114,114,110,111,32,37,100,32,104,97,115,32,110,111
	dc.b	32,107,110,111,119,110,32,115,116,114,105,110,103,0
	ds	0
;    		
;
;
;
;
;long mem_find_max_malloc (void)  {
# 61
| .6
	xdef	_mem_find_max_malloc
_mem_find_max_malloc:
	link	a6,#.7
	movem.l	d2/d3/d4,-(sp)
;	size_t total_allocation, next_size;
;	char* pointers[32];
;	int n;
;	extern long _mbot, _mtop, _mcur;
;	
;//	printf ("mem_find_max_malloc: start\n");
;//	printf ("bottom is 0x%08lX, top is 0x%08lX, current is 0x%08lX\n", _mbot, _mtop, _mcur);
;	
;	ASSERT ((sizeof(pointers)/sizeof(char*)) == 32);
~ total_allocation d4 "L"
~ next_size d3 "L"
~ pointers -128 "[32#c"
~ n d2 "i"
^^^^^^^^^;	for (n = 0;  n < sizeof(pointers)/sizeof(char*);  n++)
^	move.l	#0,d2
	bra	.10011
.10010
;		pointers[n] = NULL;
^	move.w	d2,d0
	ext.l	d0
	asl.l	#2,d0
	lea	-128(a6),a0
	clr.l	(a0,d0.l)
.10008
	add.w	#1,d2
.10011
	cmp.w	#32,d2
	bcs	.10010
.10009
;		
;	n = 0;
^^	move.l	#0,d2
;	total_allocation = 0;
^	move.l	#0,d4
;	next_size = 1024L*1024L;
^	move.l	#1048576,d3
;	do  {
^.10014
;//		printf ("malloc of pointer %d\n", n);	
;		pointers[n] = (char*) malloc (next_size);
^^	move.l	d3,-(sp)
	jsr	_malloc
	move.w	d2,d1
	ext.l	d1
	asl.l	#2,d1
	lea	-128(a6),a0
	move.l	d0,(a0,d1.l)
;		if (pointers[n] != NULL)  {
^	move.w	d2,d0
	ext.l	d0
	asl.l	#2,d0
	lea	-128(a6),a0
	tst.l	(a0,d0.l)
	add.w	#4,sp
	beq	.10015
;			total_allocation += next_size;
^	add.l	d3,d4
;//			printf ("  Allocated %ld bytes to block %d (address 0x%lX)\n", next_size, n, (long)pointers[n]);
;//			printf ("    Total is now %ld\n", total_allocation);		
;			n++;
^^^	add.w	#1,d2
;		}  else  {
^	bra	.10016
.10015
;//			printf ("couldn't alloc size %ld\n", next_size);
;			;
^^;		}
^.10016
;		next_size /= 2;
^	lsr.l	#1,d3
;	}  while (next_size >= 256);
^.10012
	cmp.l	#256,d3
	bcc	.10014
.10013
;		
;	//  free in the reverse of the allocation order; this shouldn't
;	//  matter, but who knows?
;	n--;
^^^^	sub.w	#1,d2
;	while (n >= 0)  {
^.10017
	tst.w	d2
	blt	.10018
;		ASSERT (pointers[n] != NULL);
^;		free (pointers[n]);
^	move.w	d2,d0
	ext.l	d0
	asl.l	#2,d0
	lea	-128(a6),a0
	move.l	(a0,d0.l),-(sp)
	jsr	_free
;		pointers[n] = NULL;
^	move.w	d2,d0
	ext.l	d0
	asl.l	#2,d0
	lea	-128(a6),a0
	clr.l	(a0,d0.l)
;		n--;
^	sub.w	#1,d2
;	}
^	add.w	#4,sp
	bra	.10017
.10018
;	#ifdef DEBUG
;	for (n = 0;  n < (sizeof(pointers)/sizeof(char*)); n++)  {
;		ASSERT (pointers[n] == NULL);
;	}	
;	#endif	
;	
;/*	
;	for (n = 0;  n < sizeof(pointers)/sizeof(char*);  n++)  {
;		if (pointers[n] != NULL)  {
;//printf ("About to free 0x%lX\n", (long)pointers[n]);		
;			free (pointers[n]);
;			pointers[n] = NULL;
;		}	
;	}
;*/	
;//	printf ("mem_find_max_malloc: stop\n");
;//	printf ("bottom is 0x%08lX, top is 0x%08lX, current is 0x%08lX\n", _mbot, _mtop, _mcur);
;//	printf ("mem_find_max_malloc: Total allocation = %ld\n", total_allocation);
;	return (total_allocation);
^^^^^^^^^^^^^^^^^^^	move.l	d4,d0
.8
	movem.l	(sp)+,d2/d3/d4
	unlk	a6
	rts
;}
^.6
.7	equ	-128
;
# 120
|
~ 'errno_string'
~ 1 2 6
~ errno 0 "i"
~ string 2 "#c"
~ _errno_strings * "[9:" 1
~ _get_errno_string * "(#c"
~ _mem_find_max_malloc * "(l"
~ _get_errno * "(i"
~ 'system_user'
~ 2 4 46
~ task_handle 0 "i"
~ rtfs_errno 2 "i"
~ dfltdrv 4 "i"
~ lcwd 6 "[10#v"
~ PSYSTEM_USER "#:" 2
~ SYSTEM_USER ":" 2
~ 'finode'
~ 'ddrive'
~ 'fatswap'
~ 5 7 300
~ n_to_swap 0 "I"
~ n_blocks_used 2 "I"
~ n_blocks_total 4 "I"
~ pdirty 6 "[32C"
~ block_0_is_valid 38 "i"
~ data_map 40 "[256C"
~ data_array 296 "#C"
~ 4 37 484
~ opencount 0 "i"
~ volume_serialno 2 "L"
~ volume_label 6 "[14C"
~ drv_serial_number 20 "[62C"
~ partition_base 82 "L"
~ partition_size 86 "L"
~ partition_type 90 "C"
~ current_power_count 92 "L"
~ bytespcluster 96 "I"
~ byte_into_cl_mask 98 "L"
~ fasize 102 "I"
~ rootblock 104 "L"
~ firstclblock 108 "L"
~ driveno 112 "I"
~ maxfindex 114 "L"
~ fatblock 118 "L"
~ secproot 122 "I"
~ fat_is_dirty 124 "i"
~ fat_swap_structure 126 ":" 5
~ bootaddr 426 "L"
~ oemname 430 "[9c"
~ bytspsector 440 "I"
~ secpalloc 442 "C"
~ log2_secpalloc 444 "I"
~ secreserved 446 "I"
~ numfats 448 "C"
~ numroot 450 "I"
~ numsecs 452 "L"
~ mediadesc 456 "C"
~ secpfat 458 "L"
~ secptrk 462 "I"
~ numhead 464 "I"
~ numhide 466 "L"
~ free_contig_base 470 "L"
~ free_contig_pointer 474 "L"
~ known_free_clusters 478 "l"
~ infosec 482 "I"
~ 'segdesc'
~ 6 4 14
~ nsegs 0 "i"
~ segindex 2 "i"
~ ncksum 4 "C"
~ segblock 6 "[2L"
~ 3 18 72
~ fname 0 "[8C"
~ fext 8 "[3C"
~ fattribute 11 "C"
~ resarea 12 "[8C"
~ fclusterhi 20 "I"
~ ftime 22 "I"
~ fdate 24 "I"
~ fcluster 26 "I"
~ fsize 28 "L"
~ alloced_size 32 "L"
~ opencount 36 "i"
~ openflags 38 "i"
~ my_drive 40 "#:" 4
~ my_block 44 "L"
~ my_index 48 "i"
~ pnext 50 "#:" 3
~ pprev 54 "#:" 3
~ s 58 ":" 6
~ 'drobj'
~ 'dirblk'
~ 8 3 10
~ my_frstblock 0 "L"
~ my_block 4 "L"
~ my_index 8 "i"
~ 'blkbuff'
~ 9 7 532
~ pnext 0 "#:" 9
~ lru 4 "L"
~ pdrive 8 "#:" 4
~ blockno 12 "L"
~ use_count 16 "i"
~ pad_to_4_align 18 "i"
~ data 20 "[512C"
~ 7 5 24
~ pdrive 0 "#:" 4
~ finode 4 "#:" 3
~ blkinfo 8 ":" 8
~ isroot 18 "i"
~ pblkbuff 20 "#:" 9
~ 'datestr'
~ 10 2 4
~ date 0 "I"
~ time 2 "I"
~ 'pc_file'
~ 11 8 24
~ pobj 0 "#:" 7
~ flag 4 "I"
~ fptr 6 "L"
~ fptr_cluster 10 "L"
~ fptr_block 14 "L"
~ needs_flush 18 "i"
~ is_free 20 "i"
~ at_eof 22 "i"
~ 'block_alloc'
~ 12 1 512
~ core 0 "[512C"
~ 'ptable'
~ 'ptable_entry'
~ 14 8 16
~ boot 0 "C"
~ s_head 1 "C"
~ s_cyl 2 "I"
~ p_typ 4 "C"
~ e_head 5 "C"
~ e_cyl 6 "I"
~ r_sec 8 "L"
~ p_size 12 "L"
~ 13 2 66
~ ents 0 "[4:" 14
~ signature 64 "I"
~ PTABLE ":" 13
~ PTABLE_ENTRY ":" 14
~ 'format_dec_tree'
~ 15 3 8
~ sec_p_alloc 0 "I"
~ ents_p_root 2 "I"
~ n_blocks 4 "L"
~ FORMAT_DEC_TREE ":" 15
~ PC_FILE ":" 11
~ DROBJ ":" 7
~ BLKBUFF ":" 9
~ DIRBLK ":" 8
~ FINODE ":" 3
~ SEGDESC ":" 6
~ 'lfninode'
~ 16 8 32
~ lfnorder 0 "C"
~ lfname1 1 "[10C"
~ lfnattribute 11 "C"
~ lfnres 12 "C"
~ lfncksum 13 "C"
~ lfname2 14 "[12C"
~ lfncluster 26 "I"
~ lfname3 28 "[4C"
~ LFNINODE ":" 16
~ 'dosinode'
~ 17 9 32
~ fname 0 "[8C"
~ fext 8 "[3C"
~ fattribute 11 "C"
~ resarea 12 "[8C"
~ fclusterhi 20 "I"
~ ftime 22 "I"
~ fdate 24 "I"
~ fcluster 26 "I"
~ fsize 28 "L"
~ DOSINODE ":" 17
~ DDRIVE ":" 4
~ FATSWAP ":" 5
~ BLOCK_ALLOC ":" 12
~ CLUSTERTYPE "L"
~ 'ide_control'
~ 'ide_drive_desc'
~ ''
~ 'atapi_packet_desc'
~ 'transfer_length'
~ 22 2 2
~ msb 0 "C"
~ lsb 1 "C"
~ 21 8 14
~ op_code 0 "C"
~ lun 1 "C"
~ lba 2 "L"
~ reserved1 6 "C"
~ transfer_length 8 ":" 22
~ reserved2 10 "C"
~ reserved3 11 "C"
~ reserved4 12 "C"
~ 'atapi_mode_sense_packet_desc'
~ 23 11 14
~ op_code 0 "C"
~ lun 1 "C"
~ pc_code_page 2 "C"
~ reserved1 3 "C"
~ reserved2 4 "C"
~ reserved3 5 "C"
~ reserved4 6 "C"
~ transfer_length 8 ":" 22
~ reserved5 10 "C"
~ reserved6 11 "C"
~ reserved7 12 "C"
~ 'atapi_format_unit_packet_desc'
~ 24 5 12
~ op_code 0 "C"
~ defect_list_format 1 "C"
~ track_number 2 "C"
~ interleave 3 "[2C"
~ reserved 5 "[7C"
~ 'atapi_old_format_unit_packet_de'
~ 25 7 12
~ op_code 0 "C"
~ reserved1 1 "C"
~ medium 2 "C"
~ reserved2 3 "[3C"
~ control_byte 6 "C"
~ track_number 7 "C"
~ reserved3 8 "[4C"
~ 'atapi_start_stop_packet_desc'
~ 26 6 12
~ op_code 0 "C"
~ lun 1 "C"
~ reserved1 2 "C"
~ reserved2 3 "C"
~ eject 4 "C"
~ reserved 5 "[7C"
~ 20 5 14
~ generic 0 ":" 21
~ mode_sense 0 ":" 23
~ format 0 ":" 24
~ old_format 0 ":" 25
~ start_stop 0 ":" 26
~ 19 17 48
~ num_heads 0 "C"
~ sec_p_track 1 "C"
~ sec_p_cyl 2 "I"
~ num_cylinders 4 "I"
~ max_multiple 6 "C"
~ supports_lba 8 "i"
~ total_lba 10 "L"
~ enable_mapping 14 "i"
~ media_changed 16 "i"
~ volume_start 18 "L"
~ volume_end 22 "L"
~ protocol 26 "C"
~ atapi_packet 28 ":" 20
~ atapi_packet_size 42 "I"
~ media_descriptor 44 "C"
~ medium_type_code 45 "C"
~ allocation_unit 46 "C"
~ 18 29 138
~ opencount 0 "i"
~ register_file_address 2 "#I"
~ interrupt_number 6 "i"
~ controller_number 8 "i"
~ command_complete 10 "i"
~ error_code 12 "I"
~ timer 14 "I"
~ block_size 16 "C"
~ sectors_remaining 18 "I"
~ user_address 20 "#C"
~ drive 24 "[2:" 19
~ vo_write_precomp 120 "C"
~ vo_sector_count 121 "C"
~ vo_sector_number 122 "C"
~ vo_cyl_low 123 "C"
~ vo_cyl_high 124 "C"
~ vo_drive_head 125 "C"
~ vo_feature 126 "C"
~ vo_command 127 "C"
~ vo_dig_out 128 "C"
~ vi_error 129 "C"
~ vi_sector_count 130 "C"
~ vi_sector_number 131 "C"
~ vi_cyl_low 132 "C"
~ vi_cyl_high 133 "C"
~ vi_drive_head 134 "C"
~ vi_status 135 "C"
~ vi_alt_status 136 "C"
~ vi_drive_addr 137 "C"
~ PIDE_CONTROLLER "#:" 18
~ IDE_CONTROLLER ":" 18
~ IDE_DRIVE_DESC ":" 19
~ ATAPI_PACKET ":" 20
~ ATAPI_PACKET_DESC ":" 21
~ ATAPI_OLD_FORMAT_UNIT_PACKET_DE ":" 25
~ ATAPI_START_STOP_UNIT_PACKET_DE ":" 26
~ ATAPI_FORMAT_UNIT_PACKET_DESC ":" 24
~ ATAPI_MODE_SENSE_PACKET_DESC ":" 23
~ 'Himawari_format_descriptor'
~ 'Himawari_defect_list_header'
~ 28 4 4
~ reserved 0 "C"
~ control_byte 1 "C"
~ length_msb 2 "C"
~ length_lsb 3 "C"
~ 'Himawari_formattable_capacity_d'
~ 29 3 8
~ number_of_blocks 0 "[4C"
~ reserved 4 "C"
~ block_length 5 "[3C"
~ 27 2 12
~ dlheader 0 ":" 28
~ capacity_descriptor 4 ":" 29
~ HIMAWARI_FORMAT_DESCRIPTOR ":" 27
~ HIMAWARI_FORMATTABLE_CAPACITY_D ":" 29
~ HIMAWARI_DEFECT_LIST_HEADER ":" 28
~ 'himawari_flexible_disk_page'
~ 30 17 32
~ page_code 0 "C"
~ page_length 1 "C"
~ transfer_rate_msb 2 "C"
~ transfer_rate_lsb 3 "C"
~ number_of_heads 4 "C"
~ sectors_per_track 5 "C"
~ bytes_per_cylinder_msb 6 "C"
~ bytes_per_cylinder_lsb 7 "C"
~ number_of_cylinders_msb 8 "C"
~ number_of_cylinders_lsb 9 "C"
~ reserved1 10 "[10C"
~ motor_off_delay 20 "C"
~ swp_swpp 21 "C"
~ reserved2 22 "[6C"
~ medium_rotation_rate_msb 28 "C"
~ medium_rotation_rate_lsb 29 "C"
~ reserved3 30 "[2C"
~ HIMAWARI_FLEXIBLE_DISK_PAGE ":" 30
~ TRANSFER_LENGTH ":" 22
~ BLOCKT "L"
~ 'fmtparms'
~ 31 15 52
~ oemname 0 "[9c"
~ secpalloc 9 "C"
~ secreserved 10 "I"
~ numfats 12 "C"
~ secpfat 14 "L"
~ fmttype 18 "C"
~ numhide 20 "L"
~ numroot 24 "I"
~ mediadesc 26 "C"
~ secptrk 28 "I"
~ numhead 30 "I"
~ numcyl 32 "I"
~ physical_drive_no 34 "C"
~ binary_volume_label 36 "L"
~ text_volume_label 40 "[12c"
~ FMTPARMS ":" 31
~ 'freelistinfo'
~ 32 2 8
~ cluster 0 "L"
~ nclusters 4 "l"
~ FREELISTINFO ":" 32
~ 'fileseginfo'
~ 33 2 8
~ block 0 "l"
~ nblocks 4 "l"
~ FILESEGINFO ":" 33
~ 'stat'
~ 34 12 38
~ st_dev 0 "i"
~ st_ino 2 "i"
~ st_mode 4 "L"
~ st_nlink 8 "i"
~ st_rdev 10 "i"
~ st_size 12 "L"
~ st_atime 16 ":" 10
~ st_mtime 20 ":" 10
~ st_ctime 24 ":" 10
~ st_blksize 28 "l"
~ st_blocks 32 "l"
~ fattribute 36 "C"
~ STAT ":" 34
~ 'dstat'
~ 35 14 578
~ fname 0 "[9c"
~ fext 9 "[4c"
~ lfname 13 "[256C"
~ filename 269 "[15c"
~ fattribute 284 "C"
~ ftime 286 "I"
~ fdate 288 "I"
~ fsize 290 "L"
~ driveno 294 "i"
~ pname 296 "[9C"
~ pext 305 "[4C"
~ path 309 "[260c"
~ pobj 570 "#v"
~ pmom 574 "#v"
~ DSTAT ":" 35
~ DATESTR ":" 10
~ PCFD "i"
~ UNICODE "I"
~ IOADDRESS "#I"
~ PFCBYTE "#C"
~ PFCCHAR "#c"
~ PFVOID "#v"
~ PFCHAR "#c"
~ PFDWORD "#L"
~ PFLONG "#l"
~ PFWORD "#I"
~ PFINT "#i"
~ PFBYTE "#C"
~ BOOLEAN "i"
~ dword "L"
~ word "I"
~ byte "C"
~ ''
~ 36 2 8
~ quot 0 "l"
~ rem 4 "l"
~ ''
~ 37 2 4
~ quot 0 "i"
~ rem 2 "i"
~ _malloc * "(#v"
~ _free * "(v"
~ ldiv_t ":" 36
~ div_t ":" 37
~ '__stdio'
~ 38 8 22
~ _bp 0 "#C"
~ _bend 4 "#C"
~ _buff 8 "#C"
~ _flags 12 "I"
~ _unit 14 "c"
~ _bytbuf 15 "C"
~ _buflen 16 "L"
~ _tmpnum 20 "I"
~ _sprintf * "(i"
~ FILE ":" 38
~ fpos_t "l"
~ va_list "#c"
~ ''
~ 39 13 46
~ libVersion 0 "l"
~ ramBase 4 "#c"
~ ramSize 8 "l"
~ ramWaits 12 "i"
~ flashBase 14 "#c"
~ flashSize 18 "l"
~ flashWaits 22 "i"
~ heapBot 24 "#v"
~ heapTop 28 "#v"
~ heapCur 32 "#v"
~ statusReg 36 "I"
~ vectorBase 38 "#v"
~ stackPtr 42 "#v"
~ infoAction "c"
~ TT8info ":" 39
~ UeeErr "c"
~ ''
~ 40 2 8
~ secs 0 "L"
~ ticks 4 "l"
~ time_tt ":" 40
~ XmdmErr "c"
~ FlashErr "c"
~ ''
~ 41 4 24
~ eSR 0 "I"
~ ePC 2 "L"
~ vectofs 6 "I"
~ states 8 "[8I"
~ ''
~ 42 4 20
~ preamble 0 "[4I"
~ jump 8 "I"
~ target 10 "L"
~ postamble 14 "[3I"
~ ExcCFramePtr "#:" 42
~ ExcCFrame ":" 42
~ ExcStackFrame ":" 41
~ 'tm'
~ 43 10 20
~ tm_sec 0 "i"
~ tm_min 2 "i"
~ tm_hour 4 "i"
~ tm_mday 6 "i"
~ tm_mon 8 "i"
~ tm_year 10 "i"
~ tm_wday 12 "i"
~ tm_yday 14 "i"
~ tm_isdst 16 "i"
~ tm_hsec 18 "i"
~ time_t "L"
~ clock_t "L"
~ wchar_t "c"
~ ptrdiff_t "l"
~ size_t "L"
~ PSPErr "c"
~ _PRAM "[8I"
~ bool "c"
~ vfptr "#(v"
~ ptr "#c"
~ ulpv "#L"
~ ulong "L"
~ uspv "#I"
~ unsint "I"
~ ushort "I"
~ ucpv "#C"
~ uchar "C"
	xref	_get_errno
	xref	_malloc
	xref	_free
	xref	_sprintf
	xref	.begin
	dseg
	end
