;Released as public domain 28-Jan-1996 by the author Dave Dustin

	Section	UserList,Code
	Opt	C+
	Include	mysystem.gs
	Include	custom/macros.i
	Include	workbench/icon_lib.i
	Include	libraries/reqtools.i
	Include	libraries/reqtools_lib.i

VERSION	MACRO
	Dc.B	'Falcon CBCS UserList v1.32  (27 July 92)'
	ENDM
AUTHOR	MACRO
	Dc.B	'(c) 1992  David Dustin'
	ENDM

***************************************************************************
Start:
	Bsr	GetFileName

	Sub.L	A1,A1
	CALLEXEC	FindTask
	Move.L	D0,A4
	Tst.L	pr_CLI(A4)
	Beq	fromWorkbench

	Bsr	OpenDOS

WBStart:
	Lea	REQTOOLSLibrary(PC),A1
	Moveq	#0,D0
	CALLEXEC	OpenLibrary
	Move.L	D0,_ReqToolsBase

	Move.L	#Credits,D2
	Move.L	#CreditsLen,D3
	Bsr	WriteText

	Tst.L	FileName
	Bne.S	.NameOK

	Move.L	#NoName,D2
	Move.L	#NoNameLen,D3
	Bsr	WriteText
	Bra	ExitToDos

.NameOK
	Lea	FileName,A0
	Bsr	ReadFile
	Tst.L	D0
	Bne	FileError

	Move.L	#ScrPrt,D2
	Move.L	#ScrPrtLen,D3
	Bsr	WriteText

	Move.L	InputHandle(PC),D1
	Move.L	#ReadBuffer,D2
	Moveq	#3,D3
	CALLDOS	Read

	Cmp.L	#1,D0
	Beq	.Screen
	Bsr	ConvertUpper
	Cmp.B	#'P',D0
	Beq	.Printer
	Cmp.B	#'F',D0
	Bne	.Screen

	Move.L	#FileAsk,D2
	Move.L	#FileAskLen,D3
	Bsr	WriteText

	Lea	FileName,A0
	Moveq	#0,D1
	Moveq	#79,D0
	Bsr	Clear

	Move.L	InputHandle(PC),D1
	Move.L	#FileName,D2
	Moveq	#79,D3
	CALLDOS	Read

	Moveq	#79,D0
	Lea	FileName,A0
	Bsr	KillCR
	Tst.B	D0
	Bne	.Screen

	Move.B	#2,PrintFlag
	Move.L	#FileName,D1
	Bsr	OpenFile
	Tst.B	D0
	Bne.S	.NoDataFile

	Move.L	#Credits2,D2
	Move.L	#Credits2Len,D3
	Bsr	WriteText
	Bra.S	.Screen

.NoDataFile
	Move.B	#0,PrintFlag
	Lea	NoFileText,A1
	Bsr	TypeError
	Bra.S	.Screen

.Printer
	Move.B	#1,PrintFlag
	Move.L	#PrinterName,D1
	Bsr	OpenFile
	Tst.L	D0
	Bne.S	.NoPrt

	Move.L	#Credits,D2
	Move.L	#CreditsLen,D3
	Bsr	WriteText
	Bra.S	.Screen

.NoPrt
	Move.B	#0,PrintFlag
	Lea	NoPrtText,A1
	Bsr	TypeError

.Screen
	Cmp.B	#2,PrintFlag
	Beq.s	.NoWarn

	Move.L	#PrtInfo,D2
	Move.L	#PrtInfoLen,D3
	Bsr	WriteText

.NoWarn
	Move.L	MemStart(PC),A0
	Move.L	A0,CurrentPos
	Add.L	MemSize(PC),A0
	Move.L	A0,MemEnd

***************************************
MainLoop:
	Addq.L	#1,UserCounter

	Move.L	CurrentPos(PC),A0
	Tst.B	(A0)
	Beq	.NextUser

	Bsr	ClearPrtBuffer

;level
	Move.L	CurrentPos(PC),A0
	Lea	135(A0),A0
	Moveq	#0,D0
	Move.B	(A0),D0
	Moveq	#0,D1
	Move.B	WantedLevel(PC),D1
	Cmp.B	#-1,D1
	Beq.S	.NoLimit
	Cmp.B	D1,D0
	Bne	.NextUser

.NoLimit
	Lsl.L	#2,D0
	Lea	Levels(PC),A1
	Move.L	(A1,D0.w),A0
	Move.L	#Lvl,A1
	Moveq	#8,D0
	Bsr	CopyData
;user number
	Lea	UsrNmb(PC),A0
	Move.L	UserCounter(PC),D0
	Moveq	#3,D1
	Bsr	DoDec
;name
	Move.L	CurrentPos(PC),A0
	Lea	UsrNam(PC),A1
	Moveq	#36,D0
	Bsr	CopyData
;password
	Cmp.B	#1,Passoff
	Beq.s	.NoPass
	Move.L	CurrentPos(PC),A0
	Lea	36(A0),A0
	Lea	Pastxt(PC),A1
	Moveq	#24,D0
	Bsr	CopyData

.NoPass
;calls made
	Move.L	CurrentPos(PC),A0
	Lea	120(A0),A0
	Moveq	#0,D0
	Move.W	(A0),D0
	Lea	Caltxt(PC),A0
	Moveq	#4,D1
	Bsr	DoDec
;messages entered
	Move.L	CurrentPos(PC),A0
	Lea	122(A0),A0
	Moveq	#0,D0
	Move.W	(A0),D0
	Lea	Msgtxt(PC),A0
	Moveq	#4,D1
	Bsr	DoDec
;K uploaded
	Move.L	CurrentPos(PC),A0
	Lea	158(A0),A0
	Moveq	#0,D0
	Move.L	(A0),D0
	Lea	UpTxt(PC),A0
	Moveq	#7,D1
	Bsr	DoDec
	Move.B	#'K',(A1)+
;K downloaded
	Move.L	CurrentPos(PC),A0
	Lea	150(A0),A0
	Moveq	#0,D0
	Move.L	(A0),D0
	Lea	DlTxt(PC),A0
	Moveq	#7,D1
	Bsr	DoDec
	Move.B	#'K',(A1)+

	Cmp.B	#2,PrintFlag
	Bne.S	.PrintANSI

	Lea	PrintSpace(PC),A0
	Lea	FileSpace,A1
	Move.L	#PrintSpaceLen,D0
	Bsr	KillANSI	

	Lea	FileSpace,A0
	Move.L	A0,D2
	Moveq	#0,D3
.CalcLoop
	Cmp.B	#0,(A0)+
	Beq.S	.Found
	Addq	#1,D3
	Bra.S	.CalcLoop

.PrintANSI
	Move.L	#PrintSpace,D2
	Move.L	#PrintSpaceLen,D3

.Found
	Bsr	WriteText

.NextUser
	Cmp.B	#2,PrintFlag
	Beq.S	.NoKey
	Move.L	InputHandle(PC),D1
	Moveq	#25,D2
	CALLDOS	WaitForChar
	Cmp.B	#TRUE,D0
	Bne.S	.NoKey
	Bra.s	Exit

.NoKey
	Move.L	CurrentPos(PC),A0
	Lea	512(A0),A0
	Move.L	A0,CurrentPos
	Move.L	MemEnd(PC),D0
	Move.L	CurrentPos(PC),D1
	Sub.L	D1,D0
	Tst.L	D0
	Bne	MainLoop

***************************************
Exit:
	Cmp.B	#1,PrintFlag
	Bne.S	.NoPrint

	Move.L	#FormFeed,D2
	Moveq	#2,D3
	Bsr	WriteText

.NoPrint
	Cmp.B	#0,PrintFlag
	Beq.S	.Screen

	Bsr	CloseFile

.Screen
	Move.L	MemStart(PC),A1
	Move.L	MemSize(PC),D0
	CALLEXEC	FreeMem

ExitToDos:
	Tst.L	WBMessage
	Beq.S	.NoWB

	Move.L	WBWindowHandle(PC),D1
	CALLDOS	Close
	
	Move.L	_IconBase(PC),A1
	Beq.S	.NoIcon
	CALLEXEC	CloseLibrary

.NoIcon
	CALLEXEC	Forbid
	Move.L	WBMessage(PC),A1
	CALLEXEC	ReplyMsg

.NoWB
	Move.L	_ReqToolsBase(PC),A1
	Beq.S	.NoReq
	CALLEXEC	CloseLibrary
.NoReq
	Move.L	_DOSBase(PC),A1
	CALLEXEC	CloseLibrary
	Moveq	#0,D0
	Rts

***************************************************************************
fromWorkbench:
	Lea	pr_MsgPort(A4),A0
	CALLEXEC	WaitPort
	Lea	pr_MsgPort(A4),A0
	CALLEXEC	GetMsg
	Move.L	D0,WBMessage

	Lea	DOSLibrary(PC),A1
	Moveq	#0,D0
	CALLEXEC	OpenLibrary
	Move.L	D0,_DOSBase

	Lea	ICONLibrary(PC),A1
	Moveq	#0,D0
	CALLEXEC	OpenLibrary
	Move.L	D0,_IconBase
	Beq	ExitToDos

***************************************
	Move.L	#WBWindow,D1
	Move.L	#MODE_NEWFILE,D2
	CALLDOS	Open
	Move.L	D0,WBWindowHandle
	Beq	ExitToDos
	Move.L	D0,OutputHandle
	Move.L	D0,InputHandle

	Move.L	WBMessage(PC),A0
	Move.L	$24(A0),A0
	Beq	ExitToDos

	Move.L	(A0),D1
	CALLDOS	CurrentDir

	Move.L	WBMessage(PC),A0
	Move.L	$24(A0),A0
	Move.L	4(A0),A0

	Move.L	_IconBase(PC),A6
	CALLICON	GetDiskObject
	Move.L	D0,DiskObject
	Beq	ExitToDos

	Move.L	D0,A1
	Move.L	$36(A1),A1
	Move.L	A1,ToolTypesPointer

***************************************
	Lea	Database(PC),A1
	Move.L	ToolTypesPointer(PC),A0
	CALLICON	FindToolType
	Tst.L	D0
	Beq	NoToolTypes

	Move.L	D0,A0
	Lea	FileName,A1
	Moveq	#79,D0
	Bsr	CopyData

***************************************
	Lea	Password(PC),A1
	Move.L	ToolTypesPointer(PC),A0
	CALLICON	FindToolType
	Tst.L	D0
	Beq.S	.NoPassword

	Move.L	D0,A0
	Lea	Yes(PC),A1
	CALLICON	MatchToolValue
	Tst.B	D0
	Beq.S	.NoPassword
	Move.B	#0,Passoff

.NoPassword
***************************************
	Lea	Level(PC),A1
	Move.L	ToolTypesPointer(PC),A0
	CALLICON	FindToolType
	Tst.L	D0
	Beq.S	.NoLevel
	Move.L	D0,TempTool

	Lea	Levels(PC),A0
	Moveq	#0,D1
	Moveq	#5,D0

.LevelLoop
	Move.L	(A0)+,A1
	Movem.L	A0/D0-D1,-(SP)
	Move.L	TempTool(PC),A0
	CALLICON	MatchToolValue
	Tst.B	D0
	Bne.S	.LevelMatch
	Movem.L	(SP)+,A0/D0-D1
	Addq	#1,D1
	DBra	D0,.LevelLoop
	Bra.S	.NoLevel

.LevelMatch
	Movem.L	(SP)+,A0/D0-D1
	Move.B	D1,WantedLevel

.NoLevel
***************************************
	Bra	WBStart

NoToolTypes:
	Move.L	DiskObject(PC),A0
	CALLICON	FreeDiskObject
	Bra	ExitToDos

***************************************************************************
CopyData:
	Cmp.B	#0,(A0)
	Beq.S	.stop
	Cmp.B	#10,(A0)
	Beq.S	.stop
	Move.B	(A0)+,(A1)+
	DBra	D0,CopyData
.stop
	Rts

***************************************************************************
ClearPrtBuffer:
	Moveq	#0,D1
	Lea	FileSpace,A0
	Move.L	#PrintSpaceLen-1,D0
	Bsr	Clear

	Moveq	#' ',D1
	Lea	UsrNmb(PC),A0
	Moveq	#3,D0
	Bsr	Clear
	Lea	UsrNam(PC),A0
	Moveq	#35,D0
	Bsr	Clear
	Cmp.B	#1,Passoff
	Beq.s	.NoPass
	Lea	Pastxt(PC),A0
	Moveq	#23,D0
	Bsr	Clear

.NoPass
	Lea	Lvl(PC),A0
	Moveq	#7,D0
	Bsr	Clear
	Lea	Caltxt(PC),A0
	Moveq	#4,D0
	Bsr.S	Clear
	Lea	Msgtxt(PC),A0
	Moveq	#4,D0
	Bsr.S	Clear
	Lea	UpTxt(PC),A0
	Moveq	#7,D0
	Bsr.S	Clear
	Lea	DlTxt(PC),A0
	Moveq	#7,D0

Clear:
	Move.B	D1,(A0)+
	DBra	D0,Clear
	Rts

***************************************************************************
OpenDOS:
	Lea	DOSLibrary(PC),A1
	Moveq	#0,D0
	CALLEXEC	OpenLibrary
	Move.L	D0,_DOSBase

	CALLDOS	Output
	Move.L	D0,OutputHandle

	CALLDOS	Input
	Move.L	D0,InputHandle
	Rts

***************************************
ConvertUpper:
	Lea	ReadBuffer(PC),A0
	Moveq	#0,D0
	Move.B	(A0),D0
	Cmp.B	#97,D0
	Blt.S	.Upper
	Sub.w	#32,D0
.Upper
	Rts

***************************************
OpenFile:
	Move.L	#MODE_NEWFILE,D2
	CALLDOS	Open
	Move.L	D0,PrinterHandle
	Beq.S	Error

	Moveq	#0,D0
	Rts

Error:
	Moveq	#-1,D0
	Rts

***************************************
CloseFile:
	Move.L	PrinterHandle(PC),D1
	CALLDOS	Close
	Rts

***************************************
WriteText:
	Move.L	OutputHandle(PC),D1
	Cmp.B	#0,PrintFlag
	Beq.S	.screen
	Move.L	PrinterHandle(PC),D1

.screen
	CALLDOS	Write
	Rts

***************************************
KillCR:
	Cmp.B	#10,(A0)
	Beq.S	.found
	Cmp.B	#0,(A0)
	Beq.S	.error
	Addq	#1,A0
	DBra	D0,KillCR
	Bra	.error

.found
	Move.B	#0,(A0)
	Moveq	#0,D0
	Rts

.error
	Moveq	#-1,D0

***************************************
KillANSI:
	Moveq	#0,D1
	Move.B	(A0)+,D1
	Cmp.B	#0,D1
	Beq.S	.ANSIKilled
	Cmp.B	#'',D1
	Beq.S	.skip
	Move.B	D1,(A1)+
	DBra	D0,KillANSI
	Bra	.ANSIKilled

.skip
	Addq	#3,A0
	Subq	#3,D0
	Bra.S	KillANSI

.ANSIKilled
	Rts

***************************************
GetFileName:
	Cmp.B	#1,D0
	Beq	.NoUser
	Cmp.B	#0,D0
	Beq.S	.NoUser
	Cmp.B	#'?',(A0)
	Beq.S	.NoUser

	Movem.L	A0/D0,-(SP)
	Lea	FileName,A1

.loop
	Cmp.B	#' ',(A0)
	Beq.S	.endloop
	Cmp.B	#10,(A0)
	Beq.S	.endloop
	Cmp.B	#0,(A0)
	Beq.S	.endloop
	Move.B	(A0)+,(A1)+
	DBra	D0,.loop

.endloop
	Movem.L	(SP)+,A0/D0

.findloop
	Cmp.B	#'-',(A0)+
	Beq.S	.found
	Cmp.B	#10,(A0)
	Beq.S	.NoUser
	Cmp.B	#0,(A0)
	Beq.S	.NoUser
	Bra.S	.findloop

.found
	Moveq	#0,D1
	Move.B	(A0)+,D1
	Cmp.B	#10,D1
	Beq.S	.NoUser
	Cmp.B	#0,D1
	Beq.S	.NoUser

	Cmp.B	#'p',D1
	Beq.S	.NoPass
	Cmp.B	#'P',D1
	Beq.S	.NoPass
	Sub.B	#'0',D1
	Cmp.B	#5,D1
	Bgt.S	.NotValid
	Cmp.B	#0,D1
	Blt.S	.NotValid
	Move.B	D1,WantedLevel

.NotValid
	Bra.S	.found

.NoPass
	Move.B	#0,Passoff
	Bra.S	.found
.NoUser
	Rts


***************************************
ReadFile:
	Move.L	#0,MemSize
	Move.L	#0,MemStart

	Moveq	#1,D4
	Lea	FileNamePtr(PC),A1
	Move.L	A0,(A1)

	Move.L	FileNamePtr(PC),D1
	Moveq	#-2,D2
	CALLDOS	Lock
	Lea	WorkFileLock(PC),A0
	Move.L	D0,(A0)
	Beq	.Error

	Move.L	WorkFileLock(PC),D1
	Lea	FileInfo,A0
	Move.L	A0,D2
	CALLDOS	Examine

	Move.L	FileInfo+124,D0
	Lea	MemSize(PC),A0
	Move.L	D0,(A0)

	Move.L	WorkFileLock(PC),D1
	CALLDOS	UnLock

	Move.L	FileNamePtr(PC),D1
	Move.L	#MODE_OLDFILE,D2
	CALLDOS	Open
	Lea	LoadHandle(PC),A0
	Move.L	D0,(A0)
	Beq.S	.Error

	Moveq	#2,D4
	Move.L	MemSize(PC),D0
	Moveq	#0,D1
	CALLEXEC	AllocMem
	Tst.L	D0
	Beq.S	.AllocError
	Lea	MemStart(PC),A0
	Move.L	D0,(A0)

	Moveq	#3,D4
	Move.L	LoadHandle(PC),D1
	Move.L	MemStart(PC),D2
	Move.L	FileInfo+124,D3
	CALLDOS	Read
	Tst.L	D0
	Beq.S	.LoadError

	Move.L	FileInfo+124,D1
	Cmp.L	D0,D1
	Bne.S	.LoadError

	Move.L	LoadHandle(PC),D1
	CALLDOS	Close
	Moveq	#0,D4

.Error
	Move.L	D4,D0
	Rts

.LoadError
	Move.L	MemStart(PC),A1
	Move.L	MemSize(PC),D0
	CALLEXEC	FreeMem

.AllocError
	Move.L	LoadHandle(PC),D1
	CALLDOS	Close

	Move.L	D4,D0
	Rts

***************************************
FileError:
	Cmp.B	#3,D0
	Bne.S	.NotRead
	Lea	ReadError(PC),A1
	Bra.S	.TypeError

.NotRead
	Cmp.B	#2,D0
	Bne.S	.NotNoMem
	Lea	MemError(PC),A1
	Bra.S	.TypeError

.NotNoMem
	Lea	LoadError(PC),A1

.TypeError
	Bsr.S	TypeError
	Bra	ExitToDos

***************************************************************************
TypeError:
	Move.L	_ReqToolsBase(PC),A6
	Beq.S	.NoReq
	Lea	ContinueGad(PC),A2
	Move.L	#0,A3
	Move.L	#0,A4
	Move.L	#0,A0
	Jsr	_LVOrtEZRequestA(A6)
.NoReq
	Rts
	
***************************************************************************
DoDec:
	Move.L	A0,A1
	Move.L	D1,D5

	Lea	DecTable(PC),A0

	Move.L	D0,D4
	Moveq	#0,D3
	Moveq	#'0',D0

.loop
	Move.L	(A0)+,D1
	Beq.S	.exit
	Moveq	#'/',D2

.loop2
	Addq.L	#1,D2
	Sub.L	D1,D4
	Bcc.S	.loop2
	Add.L	D1,D4
	Cmp.L	D0,D2
	Beq.S	.loop
	Moveq	#0,D0
	Move.B	D2,(A1)+
	Addq	#1,D3
	Bra.S	.loop

.exit
	Moveq	#'0',D0
	Add.B	D0,D4
	Move.B	D4,(A1)+
	Rts

***************************************************************************
***************************************************************************
***************************************************************************
VerString:
	Dc.B	0,'$VER: '
	VERSION
	Dc.B	0

***************************************
WBWindow:
	Dc.B	'CON:0/0/640/256/'
	VERSION
	Dc.B	0

***************************************
Credits:
	Dc.B	10,'[0;32m'
	VERSION
	Dc.B	'[0m',10
	AUTHOR
	Dc.B	10,10,0
CreditsLen	Equ	*-Credits

***************************************
Credits2:
	VERSION
	Dc.B	10
	AUTHOR
	Dc.B	10,10,'        The following text is for use by the SysOp of this BBS ONLY!',10,10,10
Credits2Len	Equ	*-Credits2

***************************************
FormFeed:
	Dc.B	'',0

***************************************
ScrPrt:
	Dc.B	10,10,'Do you want the output to goto [P]rinter, [F]ile or [1m[S][0mcreen?  ',0
ScrPrtLen	Equ	*-ScrPrt

***************************************
FileAsk:
	Dc.B	10,'Name of file to save data as:  ',0
FileAskLen	Equ	*-FileAsk

***************************************
PrtInfo:
	Dc.B	10,'        [1;4mThe following text is for use by the SysOp of this BBS ONLY![0m',10,10,10,0
PrtInfoLen	Equ	*-PrtInfo

***************************************
NoName:
	DC.B	'[0mUsage:',10
	Dc.B	'        [1;33mUserList[0m <path/User.BBS> [-p][level]',10,10
	Dc.B	'        Levels: [32m0[0m = Twit                [32m1[0m = Disgrace',10
	Dc.B	'                [32m2[0m = Normal              [32m3[0m = Privil',10
	Dc.B	'                [32m4[0m = Assist              [32m5[0m = Sysop',10,10
	Dc.B	'        The new [32m-p[0m option, when selected, shows the users passwords.',10,10,0
NoNameLen	Equ	*-NoName

***************************************
LoadError:
	Dc.B	'There was a problem finding the file.',10
	Dc.B	'Please check what you entered.',0

***************************************
MemError:
	Dc.B	'There is not enough memory to load the file.',10
	Dc.B	'Free up some memory and try again.',0

***************************************
ReadError:
	Dc.B	'There was a problem loading the file.',10
	Dc.B	'Check to see if the file is intact.',0

***************************************
NoPrtText:
	Dc.B	'There was a problem opening the printer device.',10
	Dc.B	'Check your DEVS: dir and try again.',0

***************************************
NoFileText:
	Dc.B	'There was a problem opening the new data file.',10
	Dc.B	'Please check and try again.',0

***************************************
Passoff:
	Dc.B	1
DOSLibrary:
	DOSNAME
ICONLibrary:
	ICONNAME
REQTOOLSLibrary:
	REQTOOLSNAME
PrintFlag:
	Dc.B	0
WantedLevel:
	Dc.B	-1
ContinueGad:
	Dc.B	'Continue',0
No:
	Dc.B	'NO',0
Yes:
	Dc.B	'YES',0
PrinterName:
	Dc.B	'PRT:',0
Database:
	Dc.B	'USERBASE',0
Password:
	Dc.B	'PASSWORDS',0
Level:
	Dc.B	'LEVEL',0
Twit:
	Dc.B	'Twit',0
Disgrace:
	Dc.B	'Disgrace',0
Normal:
	Dc.B	'Normal',0
Privil:
	Dc.B	'Privil',0
Assist:
	Dc.B	'Assist',0
Sysop:
	Dc.B	'Sysop',0
PrintSpace:
	Dc.B	'[1mUserNumber: [0m'
UsrNmb:	Dc.B	'              '
	Dc.B	'[1mUserName:   [0m'
UsrNam:	Dc.B	'                                      ',10
	Dc.B	'[1mLevel:      [0m'
Lvl:	Dc.B	'              '
	Dc.B	'[1mPassword:   [0m'
Pastxt:	Dc.B	'[3m<not shown>[0m            ',10
	Dc.B	'[1mCalls:      [0m'
Caltxt:	Dc.B	'              '
	Dc.B	'[1mMessages:   [0m'
Msgtxt:	Dc.B	'        ',10
	Dc.B	'[1mUploaded:   [0m'
UpTxt:	Dc.B	'              '
	Dc.B	'[1mDownloaded: [0m'
DlTxt:	Dc.B	'          ',10,10
PrintSpaceLen	Equ	*-PrintSpace
	Dc.B	0
	Even

***************************************
Levels:
	Dc.L	Twit
	Dc.L	Disgrace
	Dc.L	Normal
	Dc.L	Privil
	Dc.L	Assist
	Dc.L	Sysop
CurrentPos:
	Dc.L	0
_DOSBase:
	Dc.L	0
_IconBase:
	Dc.L	0
DiskObject:
	Dc.L	0
OutputHandle:
	Dc.L	0
InputHandle:
	Dc.L	0
PrinterHandle:
	Dc.L	0
WorkFileLock:
	Dc.L	0
LoadHandle:
	Dc.L	0
FileNamePtr:
	Dc.L	0
MemEnd:
	Dc.L	0
MemSize:
	Dc.L	0
MemStart:
	Dc.L	0
ReadBuffer:
	Dc.L	0
_ReqToolsBase:
	Dc.L	0
TempTool:
	Dc.L	0
ToolTypesPointer:
	Dc.L	0
UserNumber:
	Dc.L	0
UserCounter:
	Dc.L	0
WBMessage:
	Dc.L	0
WBWindowHandle:
	Dc.L	0
WindowHandle:
	Dc.L	0
DecTable:
	Dc.L	$3B9ACA00,$05F5E100,$00989680,$000F4240,$000186A0
	Dc.L	$00002710,$000003E8,$00000064,$0000000A,$00000000

***************************************
	Section	UserListSpace,BSS
FileInfo:
	Ds.B	260
FileName:
	Ds.B	80
FileSpace:
	Ds.B	PrintSpaceLen
