NEW
  AUTO 3,1
*--------------------------------------
LDR.START		jmp	LDR.START1

LDR.SIG			.DA $EEEE
				.DA	#MLI.MAXPATH+1
LDR.STARTUP		.DA #7
				.AS "STARTUP"
				.BS MLI.MAXPATH-7
*--------------------------------------
LDR.START1		ldx	#$FF
				txs
				sta IO.SETALTZP

				stx $100
				stx $101

				sta IO.CLRALTZP
				
				sta IO.CLR80DISP
				sta	IO.CLR80STORE

				bit IO.RROMBNK1

				jsr MON.INIT
				jsr MON.SETVID
				jsr MON.SETKBD
				jsr	MON.SETNORM
				jsr MON.HOME

				lda MLI.MACHID
				and	#$30
				cmp #$30				128k Only
				bne	.3

				jsr LDR.ShrinkRAM
				bcs .3

				lda #%11001111			pages 0,1,...,4,5,6,7 protected
				sta	MLI.MEMTABL

				ldx	#19

.1				stz	MLI.MEMTABL,x
				dex
				bne	.1

				lda #$FF
				sta	MLI.MEMTABL+20		HIMEM=$A000
				sta	MLI.MEMTABL+21
				sta	MLI.MEMTABL+22

				lda #%11000011			pages $B8,$B9,...,$BE,$BF protected
				sta	MLI.MEMTABL+23

				ldx #PAKME.MAIN-PAKME.Table
				ldy #LDR.MAIN.DST
				lda /LDR.MAIN.DST
				jsr X.Unpak.XatYA

				ldx #PAKME.GP-PAKME.Table
				ldy #LDR.GP.DST
				lda /LDR.GP.DST
				jsr	X.Unpak.XatYA

				lda bRAMFlag
				sta GP.CISPARE1

				bit IO.RRAMWRAMBNK2
				bit IO.RRAMWRAMBNK2

				sta IO.SETALTZP
				
				ldx #PAKME.AUX-PAKME.Table
				ldy #LDR.AUX.DST
				lda /LDR.AUX.DST
				jsr	X.Unpak.XatYA
				
				sta IO.CLRALTZP
				bit IO.RROMBNK2

				ldx	#$03

.2				lda LDR.CSWVECT,x
				sta	ZP.CSW,x
				dex
				bpl	.2

				jmp	AS.COLDBOOT
*--------------------------------------
.3				ldx	#LDR.UNABLE.L-1

.4				lda LDR.UNABLE,x
				sta	$628,x
				dex
				bpl	.4

				sta	MON.POWERUPBYTE
				sta	MON.POWERUP+1

				bra	*
*--------------------------------------
L20D3			rts
*--------------------------------------
LDR.CSW			cmp	#$DD
				bne	L20D3

				lda GP.OUTVECT0
				sta	ZP.CSW
				lda GP.OUTVECT0+1
				sta	ZP.CSW+1

				lda MLI.DEVNUM
				sta	LDR.ONLINE.P+1
				ldx	#$01
				asl
				bcc	L20EE

				inx

L20EE			stx	GP.VDEFDRV
				asl
				rol
				rol
				rol
				and	#$07
				sta	GP.VDEFSLT
				ldx	#$C1
				ldy	#$02
				lda MLI.SLTBYT
				lsr

L2102			lsr
				pha
				bcc	L2115

				lda #$00
				sta	GP.OUTVECT0,y
				sta	GP.INVECT0,y
				txa
				sta	GP.OUTVECT0+1,y
				sta	GP.INVECT0+1,y

L2115			iny
				iny
				inx
				pla
				bne	L2102

				lda /HIMEM-$400
				sta	AS.HIMEM+1
				sta	AS.STRINGSTART+1
				sta	GP.RSHIMEM

				lda MLI.PFIXPTR
				beq	L214E

				jsr	MLI
				.DA #MLI.GETPREFIX
				.DA	LDR.GETSETPFX.P
				bne	L218B

				ldx	MLI.PATHBUF
				lda #'/'

L2136			cmp	MLI.PATHBUF,x
				bne	L213E

				inc	LDR.PFX.LEN

L213E			dex
				bne	L2136

				lda LDR.PFX.LEN
				cmp	#$03
				bcs	L216F

				jsr	MLI
				.DA #MLI.SETPREFIX
				.DA	LDR.SETPFXSLASH.P

L214E			jsr	MLI
				.DA #MLI.ONLINE
				.DA	LDR.ONLINE.P
				bne	L218B

				lda MLI.PATHBUF+1
				and	#$0F
				beq	L218B

				inc
				sta MLI.PATHBUF
				lda #'/'
				sta	MLI.PATHBUF+1
				jsr	MLI
				.DA #MLI.SETPREFIX
				.DA	LDR.GETSETPFX.P
				bne	L218B

L216F			ldx #BSX.InitPath.X
				jsr BS.ToAUX

				ldy #LDR.STARTUP
				lda /LDR.STARTUP
				jsr LDR.GFInfoYA
				bcs	L218B

				ldx	LDR.STARTUP
				stx	LDR.STARTUP.LEN

L217D			lda LDR.STARTUP,x
				sta	IO.LINEBUF,x
				dex
				bne	L217D

				lda #$AD
				sta	IO.LINEBUF

L218B			lda LDR.PFX.LEN
				cmp	#$03
				bcs	L2198

				jsr	MLI
				.DA #MLI.SETPREFIX
				.DA	LDR.SETPFXSLASH.P

L2198			lda LDR.STARTUP.LEN
				bne	L21C1

				jsr	LDR.KSW

				ldx	#LDR.PRODOSBASIC.L-1

L21A2			lda LDR.PRODOSBASIC,x
				sta	$400+12,x
				dex
				bpl	L21A2

				ldx	#LDR.COPYRIGHT.L-1

L21AD			lda LDR.COPYRIGHT,x
				sta	$480+9,x
				dex
				bpl	L21AD

				lda #$8D
				jsr	MON.COUT1
				jsr	MON.COUT1
				jsr	MON.COUT1

L21C1			ldx	#$02

L21C3			lda LDR.JMP.GP.ENTRY,x
				sta	DOS.WARMSTART,x
				sta	DOS.COLDSTART,x
				sta	MON.USRJMP,x
				lda LDR.AMPJMP,x
				sta	MON.AMPJMP,x
				dex
				bpl	L21C3

				lda #MON.BREAKV
				sta	MON.BRKVECT
				lda /MON.BREAKV
				sta	MON.BRKVECT+1
				lda #GP.ENTRY
				sta	MON.POWERUP
				lda /GP.ENTRY
				sta	MON.POWERUP+1
				eor	#$A5
				sta	MON.POWERUPBYTE

				lda #$A5
				sta	AS.TRCFLG

*				lda BS.IVERSION
				lda #5
				sta	MLI.IVERSION

LDR.JMP.GP.ENTRY
				jmp	GP.ENTRY
LDR.AMPJMP		jmp	GP.DOSCMD
*--------------------------------------
LDR.KSW			lda GP.INVECT0
				sta	ZP.KSW
				lda GP.INVECT0+1
				sta	ZP.KSW+1
				ldx	LDR.STARTUP
				inx
				lda #$8D
				rts
*--------------------------------------
LDR.ShrinkRAM	stz bRAMFlag

				lda MLI.DEVPTRS3D2
				ldx MLI.DEVPTRS3D2+1

				cmp MLI.DEVPTRS			S0D1=NOVEV
				bne .1

				cpx MLI.DEVPTRS+1		S0D1=NODEV
				beq .8					S3D2=NODEV, nothing to do

.1				tay						$FF00 = ProDOS /RAM driver
				bne .8

				cpx #$FF
				bne .8

				ldx MLI.DEVCNT

.2				lda MLI.DEVLST,x		LOOKING FOR $BF
				cmp #$BF
				beq .3

				dex
				bpl .2

.8				clc						No $BF device found
				rts

.9				sec
.99				rts

.3				jsr LDR.GFInfoRAM
				bcs .99
				
				ldx #LDR.ZPCODE.L-1

.6				lda LDR.ZPCODE,x
				sta ZPCode,x
				dex
				bpl .6

				ldx #LDR.RAMSIG.L-1

.7				jsr ZPCode
				cmp LDR.RAMSIG,x
				bne .9					Bad signature !!!!

				dex
				bpl .7

				php
				sei
				
				sta IO.SETWRITEAUX
				
				stz AUX.RAMSIG
				stz AUX.RAMSIG+1		Set $E000-$FFFF as BLOCK USED
				
				sta IO.CLRWRITEAUX

				plp

				dec bRAMFlag			Tell BYE to reset that...
				
LDR.GFInfoRAM	ldy #LDR.RAM
				lda /LDR.RAM
*--------------------------------------
LDR.GFInfoYA	sty LDR.GFINFO.P+1
				sta LDR.GFINFO.P+2

				lda MLI.DEVNUM
				pha

				jsr	MLI
				.DA #MLI.GFINFO
				.DA	LDR.GFINFO.P
				
				plx
				stx MLI.DEVNUM
				
				rts
*--------------------------------------
LDR.ZPCODE		sta IO.SETREADAUX
				lda AUX.RAMSIG,x
				sta IO.CLRREADAUX
				rts
LDR.ZPCODE.L	.EQ *-LDR.ZPCODE
*--------------------------------------
LDR.RAMSIG		.HS FFFE				BITMAP for Blocks $70-$7F (LC $D000-FFFF)
				.HS F3					storage type = F, name length = 3
				.AS "RAM"
LDR.RAMSIG.L	.EQ *-LDR.RAMSIG
*--------------------------------------
LDR.RAM			.DA #4
				.AS "/RAM"
*--------------------------------------
LDR.CSWVECT		.DA	LDR.CSW
LDR.KSWVECT		.DA	LDR.KSW
*--------------------------------------
LDR.GFINFO.P	.DA #10
				.BS 2					Filename
				.BS 16
*--------------------------------------
LDR.SETPFXSLASH.P
				.DA #1
				.DA	.1

.1				.DA #1
				.AS "/"
*--------------------------------------
LDR.ONLINE.P	.DA #2
				.DA #$70				DEVNUM
				.DA MLI.PATHBUF+1
*--------------------------------------
LDR.GETSETPFX.P	.DA #1
				.DA	MLI.PATHBUF
*--------------------------------------
LDR.STARTUP.LEN	.DA #0
LDR.PFX.LEN		.DA	#0
*--------------------------------------
LDR.UNABLE		.AS -"***  UNABLE TO EXECUTE BASIC SYSTEM  ***"
LDR.UNABLE.L	.EQ *-LDR.UNABLE
LDR.PRODOSBASIC	.AS -"PRODOS BASIC FX"
LDR.PRODOSBASIC.L	.EQ *-LDR.PRODOSBASIC
LDR.COPYRIGHT	.AS -"COPYRIGHT APPLE 1983-92"
LDR.COPYRIGHT.L	.EQ *-LDR.COPYRIGHT

				.LIST ON
LDR.SIZE		.EQ *-LDR.START
				.LIST OFF
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.ldr
LOAD usr/src/basic.fx/basic.s
ASM
