;:ts=8
	far	code
	far	data
;//  TT8 specific includes
;#include        <TT8.h>                 /* Tattletale Model 8 Definitions */
;#include        <tt8lib.h>              /* definitions and prototypes for Model 8 library */
;
;//  C standard includes
;#include		<stdio.h>
;#include		<stdlib.h>
;#include		<math.h>
;#include		<string.h>
;
;//  Data logger program includes
;#include		"ASSERT.h"
;#include		"MacTrimp.h"
;#include		<pcdisk.h>
;
;//  MacTrimpi_print_file (int fd)
;//
;//	Takes a file descriptor, which is assumed to point at the
;//  first char of the file, interprets the data in the file
;//  as a MacTrimpi format file, and prints it out to the standard
;//  output as ASCII
;//
;//	This subroutine uses a little over 1024 bytes of stack space
;//
;int MacTrimpi_print_file (int fd)  {
# 25 'mactrimp.c' 657026024
| .2
	xdef	_MacTrimpi_print_file
_MacTrimpi_print_file:
	link	a6,#.3
	movem.l	d2/d3/d4/d5/d6/d7/a3/a4,-(sp)
	move.w	8(a6),a4
;	struct MacTrimpi header;
;	byte buffer[512];	
;	byte* pdata;
;	long n, nread, ndata, long_value;
;	short wordsize;
;	double data_min, data_max, binary_max, value;
;	double period;
;	
;	ASSERT (sizeof(struct MacTrimpi) == 512);
~ 'MacTrimpi'
~ 1 25 512
~ magicstring 0 "[8c"
~ totalhdrs 8 "[3c"
~ abbrev 11 "[8c"
~ stationcode 19 "[3c"
~ title 22 "[82c"
~ month 104 "[3c"
~ day 107 "[3c"
~ year 110 "[5c"
~ hours 115 "[3c"
~ minutes 118 "[3c"
~ seconds 121 "[3c"
~ msec 124 "[4c"
~ sampling_period 128 "[15c"
~ samplebits 143 "[3c"
~ wordsize 146 "[2c"
~ typemark 148 "c"
~ swapping 149 "c"
~ signing 150 "c"
~ caltype 151 "c"
~ calmin 152 "[15c"
~ calmax 167 "[15c"
~ calunits 182 "[40c"
~ recordsize 222 "[6c"
~ sourcevers 228 "[9c"
~ fill 237 "[275c"
~ header -512 ":" 1
~ buffer -1024 "[512C"
~ n d5 "l"
~ nread d7 "l"
~ ndata a3 "l"
~ long_value d6 "l"
~ wordsize d4 "i"
~ data_max -1032 "d"
~ binary_max -1040 "d"
~ value -1048 "d"
~ period -1056 "d"
~~ fd a4 "i"
^^^^^^^^^;	ASSERT ((sizeof(buffer)%4) == 0);
^;	//  start by reading and printing the header
;	nread = po_read(fd, (byte*)(&header), sizeof(struct MacTrimpi));
^^	move.w	#512,-(sp)
	pea	-512(a6)
	move.w	a4,-(sp)
	jsr	_po_read
	ext.l	d0
	move.l	d0,d7
;	if (nread != sizeof (struct MacTrimpi))  {
^	cmp.l	#512,d7
	add.w	#8,sp
	beq	.10001
;		printf ("Could not read enough data to file header from file.\n");
^	pea	.1+0
	jsr	_printf
;		return -1;
^	move.l	#-1,d0
	add.w	#4,sp
.4
	movem.l	(sp)+,d2/d3/d4/d5/d6/d7/a3/a4
	unlk	a6
	rts
;	}	
^;	if (MacTrimpi_print_header (&header) != 0)
.10001
^;		return -1;
	pea	-512(a6)
	jsr	_MacTrimpi_print_header
	tst.w	d0
	add.w	#4,sp
	beq	.10002
^	move.l	#-1,d0
	bra	.4
;
;	wordsize = atoi (header.wordsize);
.10002
^^	pea	-366(a6)
	jsr	_atoi
	move.w	d0,d4
;	if ((wordsize != 2) && (wordsize != 4))  {
^	cmp.w	#2,d4
	add.w	#4,sp
	beq	.10003
	cmp.w	#4,d4
	beq	.10003
;		printf ("File format not recognized: bad word length.\n");
^	pea	.1+54
	jsr	_printf
;		return -1;
^	move.l	#-1,d0
	add.w	#4,sp
	bra	.4
;	}	
^;
;	//  the following code assumes that we are using signed data, and that
;	//  we do not need to swap any bytes
;	ASSERT (header.signing == 'S');
.10003
^^^^;	binary_max = pow (2, atoi (header.samplebits) - 1);
^	pea	-369(a6)
	jsr	_atoi
	add.w	#4,sp
	sub.w	#1,d0
	ext.l	d0
	jsr	.Pflt#
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	move.l	#$00000000,-(sp)
	move.l	#$40000000,-(sp)
	jsr	_pow
	move.l	d1,-1036(a6)
	move.l	d0,-1040(a6)
;	data_max = atof (header.calmax);
^	pea	-345(a6)
	jsr	_atof
	move.l	d1,-1028(a6)
	move.l	d0,-1032(a6)
;	period = atof (header.sampling_period);	
^	pea	-384(a6)
	jsr	_atof
	move.l	d1,-1052(a6)
	move.l	d0,-1056(a6)
;	
;	//  now read and print the data
;	while ((nread = po_read(fd,(byte*)buffer, sizeof(buffer))) > 0)  {
^^^	lea	24(sp),sp
.10004
	move.w	#512,-(sp)
	pea	-1024(a6)
	move.w	a4,-(sp)
	jsr	_po_read
	ext.l	d0
	move.l	d0,d7
	add.w	#8,sp
	ble	.10005
;		if ((nread%wordsize) != 0)
^;			printf ("File format error: Number of bytes read not multiple of word length!\n"); 
	move.l	d7,d0
	move.w	d4,a0
	move.l	a0,d1
	jsr	.mods#
	beq	.10006
^	pea	.1+100
	jsr	_printf
;
;		ndata = nread/wordsize;
	add.w	#4,sp
.10006
^^	move.l	d7,d0
	move.w	d4,a0
	move.l	a0,d1
	jsr	.divs#
	move.l	d0,a3
;		for (n = 0;  n < ndata;  n++)  {
^	move.l	#0,d5
	bra	.10010
.10009
;			if (wordsize == 2)
^;				long_value = *((short*)(&buffer[wordsize*n]));
	cmp.w	#2,d4
	bne	.10011
^	move.w	d4,a0
	move.l	a0,d0
	move.l	d5,d1
	jsr	.mulu#
	lea	-1024(a6),a0
	move.w	(a0,d0.l),d0
	ext.l	d0
	move.l	d0,d6
;			else
	bra	.10012
.10011
;				long_value = *((long*)(&buffer[wordsize*n]));
^^	move.w	d4,a0
	move.l	a0,d0
	move.l	d5,d1
	jsr	.mulu#
	lea	-1024(a6),a0
	move.l	(a0,d0.l),d6
.10012
;				
;			//  this conversion assumes that we are converting signed data
;			value = data_max*long_value/binary_max;
^^^	move.l	d6,d0
	jsr	.Pflt#
	move.l	-1028(a6),d3
	move.l	-1032(a6),d2
	jsr	.Pmul#
	move.l	-1036(a6),d3
	move.l	-1040(a6),d2
	jsr	.Pdiv#
	move.l	d1,-1044(a6)
	move.l	d0,-1048(a6)
;			printf ("%f  (%ld)\n", (float)(value), long_value);
^	move.l	d6,-(sp)
	move.l	-1044(a6),d1
	move.l	-1048(a6),d0
	jsr	.dtof#
	jsr	.ftod#
	move.l	d1,-(sp)
	move.l	d0,-(sp)
	pea	.1+170
	jsr	_printf
;		}
^	lea	16(sp),sp
.10007
	add.l	#1,d5
.10010
	cmp.l	a3,d5
	blt	.10009
.10008
;		if (SerByteAvail ())  {
^	jsr	_SerByteAvail
	tst.w	d0
	beq	.10013
;			printf ("\n\nPrint command interrupted.\n");	
^	pea	.1+181
	jsr	_printf
;			break;
^	add.w	#4,sp
	bra	.10005
;		}	
^;	}
.10013
^	bra	.10004
.10005
;	printf ("\n");
^	pea	.1+211
	jsr	_printf
;	return 0;
^	move.l	#0,d0
	add.w	#4,sp
	bra	.4
;}
^.2
.3	equ	-1056
.1
	dc.b	67,111,117,108,100,32,110,111,116,32,114,101,97,100,32
	dc.b	101,110,111,117,103,104,32,100,97,116,97,32,116,111,32
	dc.b	102,105,108,101,32,104,101,97,100,101,114,32,102,114,111
	dc.b	109,32,102,105,108,101,46,10,0,70,105,108,101,32,102
	dc.b	111,114,109,97,116,32,110,111,116,32,114,101,99,111,103
	dc.b	110,105,122,101,100,58,32,98,97,100,32,119,111,114,100
	dc.b	32,108,101,110,103,116,104,46,10,0,70,105,108,101,32
	dc.b	102,111,114,109,97,116,32,101,114,114,111,114,58,32,78
	dc.b	117,109,98,101,114,32,111,102,32,98,121,116,101,115,32
	dc.b	114,101,97,100,32,110,111,116,32,109,117,108,116,105,112
	dc.b	108,101,32,111,102,32,119,111,114,100,32,108,101,110,103
	dc.b	116,104,33,10,0,37,102,32,32,40,37,108,100,41,10
	dc.b	0,10,10,80,114,105,110,116,32,99,111,109,109,97,110
	dc.b	100,32,105,110,116,101,114,114,117,112,116,101,100,46,10
	dc.b	0,10,0
	ds	0
;
;
;
;
;
;int MacTrimpi_print_header (struct MacTrimpi* header)  {
# 87
| .6
	xdef	_MacTrimpi_print_header
_MacTrimpi_print_header:
	movem.l	d2/a3,-(sp)
	move.l	12(sp),a3
;	//  this array is declared in the logtime.c file
;	extern const char month[12][4];
;	int n_month;
;
;	if (strcmp (header->magicstring, "DATA") != 0)  {
~ n_month d2 "i"
~~ header a3 "#:" 1
^^^^^	move.l	a3,a0
	lea	.5,a1
.7	move.b	(a0)+,d0
	cmp.b	(a1)+,d0
	bne.s	.8
	tst.b	d0
	bne.s	.7
.8	sub.b	-(a1),d0
	ext.w	d0
	beq	.10014
;		printf ("This file is not in the standard MacTrimpi format.\n");
^	pea	.5+5
	jsr	_printf
;		return -1;
^	move.l	#-1,d0
	add.w	#4,sp
.9
	movem.l	(sp)+,d2/a3
	rts
;	}
^;
;	printf ("Header version number is %s\n", header->sourcevers);
.10014
^^	lea	228(a3),a0
	move.l	a0,-(sp)
	pea	.5+57
	jsr	_printf
;	printf ("Title: %s\n", header->title);
^	lea	22(a3),a0
	move.l	a0,-(sp)
	pea	.5+86
	jsr	_printf
;	printf ("Sampling period is %s seconds.\n", header->sampling_period);
^	lea	128(a3),a0
	move.l	a0,-(sp)
	pea	.5+97
	jsr	_printf
;	printf ("Number of bits/sample is %s\n", header->samplebits);
^	lea	143(a3),a0
	move.l	a0,-(sp)
	pea	.5+129
	jsr	_printf
;	printf ("Maximum input signal is %s\n", header->calmax);
^	lea	167(a3),a0
	move.l	a0,-(sp)
	pea	.5+158
	jsr	_printf
;	printf ("Minimum input signal is %s\n", header->calmin);
^	lea	152(a3),a0
	move.l	a0,-(sp)
	pea	.5+186
	jsr	_printf
;	printf ("Date and time first point was recorded was:\n  ");
^	pea	.5+214
	jsr	_printf
	lea	52(sp),sp
;	n_month = atoi (header->month);
^	lea	104(a3),a0
	move.l	a0,-(sp)
	jsr	_atoi
	move.w	d0,d2
;	if ((n_month <= 0) || (n_month > 12))
^;		printf ("Illegal month!");
	tst.w	d2
	add.w	#4,sp
	ble	.10
	cmp.w	#12,d2
	ble	.10015
.10
^	pea	.5+261
	jsr	_printf
;	else
	add.w	#4,sp
	bra	.10016
.10015
;		printf ("%s", month[n_month - 1]);
^^	move.w	d2,d0
	sub.w	#1,d0
	ext.l	d0
	asl.l	#2,d0
	lea	_month,a0
	add.l	a0,d0
	move.l	d0,-(sp)
	pea	.5+276
	jsr	_printf
	add.w	#8,sp
.10016
;	printf (" %s, %s @ %s:%s:%s.%s\n",
^;					header->day, header->year,
;					header->hours, header->minutes,
;						header->seconds, header->msec);
	lea	124(a3),a0
	move.l	a0,-(sp)
	lea	121(a3),a0
	move.l	a0,-(sp)
	lea	118(a3),a0
	move.l	a0,-(sp)
	lea	115(a3),a0
	move.l	a0,-(sp)
	lea	110(a3),a0
	move.l	a0,-(sp)
	lea	107(a3),a0
	move.l	a0,-(sp)
	pea	.5+279
	jsr	_printf
;	return 0;						
^^^^	move.l	#0,d0
	lea	28(sp),sp
	bra	.9
;}	
^.6
.5
	dc.b	68,65,84,65,0,84,104,105,115,32,102,105,108,101,32
	dc.b	105,115,32,110,111,116,32,105,110,32,116,104,101,32,115
	dc.b	116,97,110,100,97,114,100,32,77,97,99,84,114,105,109
	dc.b	112,105,32,102,111,114,109,97,116,46,10,0,72,101,97
	dc.b	100,101,114,32,118,101,114,115,105,111,110,32,110,117,109
	dc.b	98,101,114,32,105,115,32,37,115,10,0,84,105,116,108
	dc.b	101,58,32,37,115,10,0,83,97,109,112,108,105,110,103
	dc.b	32,112,101,114,105,111,100,32,105,115,32,37,115,32,115
	dc.b	101,99,111,110,100,115,46,10,0,78,117,109,98,101,114
	dc.b	32,111,102,32,98,105,116,115,47,115,97,109,112,108,101
	dc.b	32,105,115,32,37,115,10,0,77,97,120,105,109,117,109
	dc.b	32,105,110,112,117,116,32,115,105,103,110,97,108,32,105
	dc.b	115,32,37,115,10,0,77,105,110,105,109,117,109,32,105
	dc.b	110,112,117,116,32,115,105,103,110,97,108,32,105,115,32
	dc.b	37,115,10,0,68,97,116,101,32,97,110,100,32,116,105
	dc.b	109,101,32,102,105,114,115,116,32,112,111,105,110,116,32
	dc.b	119,97,115,32,114,101,99,111,114,100,101,100,32,119,97
	dc.b	115,58,10,32,32,0,73,108,108,101,103,97,108,32,109
	dc.b	111,110,116,104,33,0,37,115,0,32,37,115,44,32,37
	dc.b	115,32,64,32,37,115,58,37,115,58,37,115,46,37,115
	dc.b	10,0
	ds	0
;
# 114
|
~ _month * "[12[4c"
~ '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"
~ _po_read * "(i"
~ '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"
~ PSPErr "c"
~ _PRAM "[8I"
~ _MacTrimpi_print_header * "(i"
~ _MacTrimpi_print_file * "(i"
~ _pow * "(d"
~ ''
~ 36 2 8
~ quot 0 "l"
~ rem 4 "l"
~ ''
~ 37 2 4
~ quot 0 "i"
~ rem 2 "i"
~ _atoi * "(i"
~ _atof * "(d"
~ 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"
~ _printf * "(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
~ _SerByteAvail * "(i"
~ 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"
~ bool "c"
~ vfptr "#(v"
~ ptr "#c"
~ ulpv "#L"
~ ulong "L"
~ uspv "#I"
~ unsint "I"
~ ushort "I"
~ ucpv "#C"
~ uchar "C"
	xref	_po_read
	xref	_pow
	xref	_atoi
	xref	_atof
	xref	_printf
	xref	_SerByteAvail
	xref	.begin
	dseg
	xref	_month
	end
