;This source-code is converted using PPC680x0, (c)1999 Coyote Flux
;Coded in 100% machine-language...!!! Amiga Rulez! PC Suxx!

; In_Go Reassembler freemem.68kexe: 26.11.1999 16:45:38
MaxIntSgnd EQU $7FFFFFFF
Optimize68020 EQU 0

	incdir	ppcinclude:
	include	powerpc/powerpc.i

	xref	_PowerPCBase
	xref	_SysBase
;	xref	_DOSBase
	xref	_LinkerDB

	executable

 SECTION "Segment0",CODE
	prolog	1024
	
RUN680X0        MACRO
		pushgpr r11-r12/r14-r19/r27-r31
		subi    local,local,PP_SIZE
		stw     r3,PP_REGS(local)
		stw     r4,PP_REGS+1*4(local)
		stw     r5,PP_REGS+2*4(local)
		stw     r6,PP_REGS+3*4(local)
		stw     r7,PP_REGS+4*4(local)
		stw     r8,PP_REGS+5*4(local)
		stw     r9,PP_REGS+6*4(local)
		stw     r10,PP_REGS+7*4(local)
		stw     r20,PP_REGS+8*4(local)
		stw     r21,PP_REGS+9*4(local)
		stw     r22,PP_REGS+10*4(local)
		stw     r23,PP_REGS+11*4(local)
		stw     r24,PP_REGS+12*4(local)
		stw     r25,PP_REGS+13*4(local)
		stw     r26,PP_CODE(local)
		stw     r26,PP_REGS+14*4(local)
		stw     r31,PP_OFFSET(local)
		li      r3,0
		stw     r3,PP_FLAGS(local)
		stw     r3,PP_STACKPTR(local)
		stw     r3,PP_STACKSIZE(local)
		mr      r4,local
		lw      r3,_PowerPCBase
		lwz     r0,-300+2(r3)
		mtlr    r0
		blrl
		lwz     r3,PP_REGS(local)
		lwz     r4,PP_REGS+1*4(local)
		lwz     r5,PP_REGS+2*4(local)
		lwz     r6,PP_REGS+3*4(local)
		lwz     r7,PP_REGS+4*4(local)
		lwz     r8,PP_REGS+5*4(local)
		lwz     r9,PP_REGS+6*4(local)
		lwz     r10,PP_REGS+7*4(local)
		lwz     r20,PP_REGS+8*4(local)
		lwz     r21,PP_REGS+9*4(local)
		lwz     r22,PP_REGS+10*4(local)
		lwz     r23,PP_REGS+11*4(local)
		lwz     r24,PP_REGS+12*4(local)
		lwz     r25,PP_REGS+13*4(local)
		lwz     r26,PP_REGS+14*4(local)
		addi    local,local,PP_SIZE
		popgpr  r11-r12/r14-r19/r27-r31
		ENDM
	mflr	r0
	mtctr	r0
	pushgpr	r14-r31
	pushcr

SegmentBeginn0:
  	stwu	r20,-4(r13)
	stwu	r3,-4(r13)
  	la	r31,returnMsg
	andi.	r30,r30,0
	stw	r30,0(r31)
  	subfco.	r21,r21,r21
  lw	r26,_SysBase
FindTask SET -$126
   addis	r31,r0,FindTask>>16
	ori	r31,r31,FindTask&$ffff
	RUN680X0
JL_0_14:
  	mr	r24,r3
pr_CLI SET $AC
  	lwz	r30,pr_CLI(r24)
	cmpi	0,0,r30,0
   beq	fromWorkbench
  	lwz	r3,0(r13)
	lwzu	r20,4(r13)
 b	end_startup
 
pr_MsgPort SET $5C
fromWorkbench:
  	addi	r20,r24,pr_MsgPort
  lw	r26,_SysBase
WaitPort SET -$180
   addis	r31,r0,WaitPort>>16
	ori	r31,r31,WaitPort&$ffff
	RUN680X0
pr_MsgPort SET $5C
  	addi	r20,r24,pr_MsgPort
  lw	r26,_SysBase
GetMsg SET -$174
   addis	r31,r0,GetMsg>>16
	ori	r31,r31,GetMsg&$ffff
	RUN680X0
  	la	r31,returnMsg
	stw	r3,0(r31)
  ori	r0,r0,0
  	lwz	r3,0(r13)
	lwzu	r20,4(r13)
end_startup:
   la	r31,_main
	la	r29,P_AAAAAAACL
	stwu	r29,-4(r13)
	mtlr	r31
	bclr	$14,0
P_AAAAAAACL
  	stwu	r3,-4(r13)
  	la	r31,returnMsg
	lwz	r30,0(r31)
	cmpi	0,0,r30,0
   beq	exitToDOS
  lw	r26,_SysBase
Forbid SET -$84
   addis	r31,r0,Forbid>>16
	ori	r31,r31,Forbid&$ffff
	RUN680X0
  la	r29,returnMsg
	lwz	r21,0(r29)
  lw	r26,_SysBase
ReplyMsg SET -$17A
   addis	r31,r0,ReplyMsg>>16
	ori	r31,r31,ReplyMsg&$ffff
	RUN680X0
exitToDOS:
  lwz	r3,0(r13)
	addi	r13,r13,4
 mfctr	r0
	mtlr	r0
	popcr
	popgpr	r14-r31
	epilog
 
returnMsg:
  ds.l 1
_main:
  la	r21,intname
  andi.	r3,r0,0
  lw	r26,_SysBase
OpenLibrary SET -$228
   addis	r31,r0,OpenLibrary>>16
	ori	r31,r31,OpenLibrary&$ffff
	RUN680X0
  	cmpi	0,0,r3,0
   beq	goawayfast
  	la	r31,_IntuitionBase
	stw	r3,0(r31)
  la	r21,grafname
  andi.	r3,r0,0
  lw	r26,_SysBase
OpenLibrary SET -$228
   addis	r31,r0,OpenLibrary>>16
	ori	r31,r31,OpenLibrary&$ffff
	RUN680X0
  	cmpi	0,0,r3,0
   beq	goawaycloseint
  	la	r31,_GfxBase
	stw	r3,0(r31)
  la	r21,dosname
  andi.	r3,r0,0
  lw	r26,_SysBase
OpenLibrary SET -$228
   addis	r31,r0,OpenLibrary>>16
	ori	r31,r31,OpenLibrary&$ffff
	RUN680X0
  	cmpi	0,0,r3,0
   beq	goawayclosegraf
  	la	r31,_DOSBase
	stw	r3,0(r31)
  la	r20,windowdef
  la	r29,_IntuitionBase
	lwz	r26,0(r29)
OpenWindow SET -$CC
   addis	r31,r0,OpenWindow>>16
	ori	r31,r31,OpenWindow&$ffff
	RUN680X0
  	cmpi	0,0,r3,0
   beq	goawaycloseall
  	la	r31,windowptr
	stw	r3,0(r31)
  addis	r29,r0,$FFFFFFFF>>16
	ori	r29,r29,$FFFFFFFF&$ffff
	la	r31,oldfreemem
	stw	r29,0(r31)
mainloop:
  addi	r4,r0,$01
  lw	r26,_SysBase
AvailMem SET -$D8
   addis	r31,r0,AvailMem>>16
	ori	r31,r31,AvailMem&$ffff
	RUN680X0
  	la	r29,oldfreemem
	lwz	r29,0(r29)
	subfco	r31,r29,r3
	cmp	0,0,r3,r29
   beq	messagetest
  	la	r31,oldfreemem
	stw	r3,0(r31)
  la	r20,thestring
   la	r31,hexconvert
	la	r29,P_AAAAAAAGG
	stwu	r29,-4(r13)
	mtlr	r31
	bclr	$14,0
P_AAAAAAAGG
  la	r20,thestring
  addi	r3,r0,$06
convspaces:
  	addi	r29,r0,"0"
	lbz	r30,0(r20)
	extsb	r29,r29
	extsb	r30,r30
	subfco	r31,r29,r30
	cmp	0,0,r30,r29
   bne	noconvspaces
  addi	r29,r0,$20
	stb	r29,0(r20)
	addi	r20,r20,1
   extsh	r29,r3
	cmpi	2,0,r29,0
	beq	cr2,P_AAAAAAAGN
	subi	r29,r29,1
	rlwimi	r3,r29,0,16,31
	b	convspaces
P_AAAAAAAGN
	subi	r29,r29,1
	rlwimi	r3,r29,0,16,31
noconvspaces:
  addi	r3,r0,$04
  addi	r4,r0,$14
  la	r29,windowptr
	lwz	r21,0(r29)
  lwz	r21,$32(r21)
  la	r29,_GfxBase
	lwz	r26,0(r29)
Move SET -$F0
   addis	r31,r0,Move>>16
	ori	r31,r31,Move&$ffff
	RUN680X0
  la	r29,windowptr
	lwz	r21,0(r29)
  lwz	r21,$32(r21)
  la	r20,thestring
  addi	r3,r0,$13
  la	r29,_GfxBase
	lwz	r26,0(r29)
Text SET -$3C
   addis	r31,r0,Text>>16
	ori	r31,r31,Text&$ffff
	RUN680X0
messagetest:
  la	r29,windowptr
	lwz	r20,0(r29)
  lwz	r20,$56(r20)
  lw	r26,_SysBase
GetMsg SET -$174
   addis	r31,r0,GetMsg>>16
	ori	r31,r31,GetMsg&$ffff
	RUN680X0
  	cmpi	0,0,r3,0
   beq	nomessage
  	mr	r21,r3
  lw	r26,_SysBase
ReplyMsg SET -$17A
   addis	r31,r0,ReplyMsg>>16
	ori	r31,r31,ReplyMsg&$ffff
	RUN680X0
 b	closewindow
 
nomessage:
  addi	r4,r0,$19
  la	r29,_DOSBase
	lwz	r26,0(r29)
Delay SET -$C6
   addis	r31,r0,Delay>>16
	ori	r31,r31,Delay&$ffff
	RUN680X0
 b	mainloop
 
closewindow:
  la	r29,windowptr
	lwz	r20,0(r29)
  la	r29,_IntuitionBase
	lwz	r26,0(r29)
CloseWindow SET -$48
   addis	r31,r0,CloseWindow>>16
	ori	r31,r31,CloseWindow&$ffff
	RUN680X0
goawaycloseall:
  la	r29,_DOSBase
	lwz	r21,0(r29)
  lw	r26,_SysBase
CloseLibrary SET -$19E
   addis	r31,r0,CloseLibrary>>16
	ori	r31,r31,CloseLibrary&$ffff
	RUN680X0
goawayclosegraf:
  la	r29,_GfxBase
	lwz	r21,0(r29)
  lw	r26,_SysBase
CloseLibrary SET -$19E
   addis	r31,r0,CloseLibrary>>16
	ori	r31,r31,CloseLibrary&$ffff
	RUN680X0
goawaycloseint:
  la	r29,_IntuitionBase
	lwz	r21,0(r29)
  lw	r26,_SysBase
CloseLibrary SET -$19E
   addis	r31,r0,CloseLibrary>>16
	ori	r31,r31,CloseLibrary&$ffff
	RUN680X0
goawayfast:
  andi.	r3,r0,0
 lwz	r29,0(r13)
	addi	r13,r13,4
	mtlr	r29
	bclr	$14,0
 
hexconvert:
  addi	r4,r0,$07
hexclp:
  	
	rlwinm.	r3,r3,4,0,31
  	mr	r5,r3
  	addi	r29,r0,$F
	rlwinm	r30,r3,0,24,31
	and.	r30,r30,r29
	rlwimi	r3,r30,0,24,31
  	addi	r29,r0,$9
	extsb	r30,r3
	subfco	r31,r29,r30
	cmp	0,0,r30,r29
   ble	hexdig
  	addi	r29,r0,7
	extsb	r30,r3
	addco.	r30,r30,r29
	rlwimi	r3,r30,0,24,31
hexdig:
  	addi	r29,r0,"0"
	extsb	r30,r3
	extsb	r29,r29
	addco.	r30,r30,r29
	rlwimi	r3,r30,0,24,31
  	stb	r3,0(r20)
	addi	r20,r20,1
  	mr	r3,r5
   extsh	r29,r4
	cmpi	2,0,r29,0
	beq	cr2,P_AAAAAAALI
	subi	r29,r29,1
	rlwimi	r4,r29,0,16,31
	b	hexclp
P_AAAAAAALI
	subi	r29,r29,1
	rlwimi	r4,r29,0,16,31
 lwz	r29,0(r13)
	addi	r13,r13,4
	mtlr	r29
	bclr	$14,0
 
windowdef:
  dc.b $00,$32 ;.2
  dc.b $00,$32,$00,$C8 ;.2..
  dc.b $00,$19,$FF,$FF ;....
  ds.w 1
  dc.b $02,$00,$00,$00 ;....
  dc.b $10,$0E,$00,$00 ;....
  ds.w 3
  dc.l windowtitle
  ds.l 4
  dc.b $00 ;.
  dc.b $01 ;.
intname:
  dc.b "intuition.library",0
grafname:
  dc.b "graphics.library",0
dosname:
  dc.b "dos.library",0
windowtitle:
  dc.b " © HiSoft 1992 ",0
thestring:
  dc.b "00000000 bytes free"
_IntuitionBase:
  ds.l 1
_GfxBase:
  ds.l 1
_DOSBase:
  ds.l 1
windowptr:
  ds.l 1
oldfreemem:
  ds.w 3
	
fpio001	dc.d	0
fpio002	dc.d	0
fpio003	dc.d	0
fpio004	dc.d	0
fpio005	dc.d	0
fpio006	dc.d	0
fpio007	dc.d	0
fpio008	dc.d	0
 End
