home *** CD-ROM | disk | FTP | other *** search
- ;bput"writeboot.src"
- ;rput"writeboot.src"
- ;
- .lib hardjump.eq
- .lib hardiskz.eq
- ;
- * = $0840
- start jsr hdinit ;init ctl blocks
- jsr reset ;issue the reset
- lda #$37
- sta $01
- bcc noerror
- jmp reseterror
- noerror = *
- lda #$36
- sta $01
- lda #$80
- ldy #$28 ;get number of sectors to read
- ldx #$40 ;get sector number
- jsr writeit ;go convert and read
- bcc noerror1
- jmp writeerror ;go if bad
- noerror1 = *
- ldy #0 ;move ram from under kernal
- sei
- lda #$35
- sta $01
- moverom lda $e000,y
- sta $2000,y
- lda $e100,y
- sta $2100,y
- lda $e200,y
- sta $2200,y
- lda $e300,y
- sta $2300,y
- lda $e400,y
- sta $2400,y
- lda $e500,y
- sta $2500,y
- lda $e600,y
- sta $2600,y
- lda $e700,y
- sta $2700,y
- lda $e800,y
- sta $2800,y
- lda $e900,y
- sta $2900,y
- lda $ea00,y
- sta $2a00,y
- lda $eb00,y
- sta $2b00,y
- lda $ec00,y
- sta $2c00,y
- iny
- bne moverom
- lda #$37
- sta $01
- cli
- lda #$20 ;address input area
- ldy #$10
- ldx #$69
- jsr writeit
- bcs writeerror
- rts
- ;
- writeit sta bufadr+1 ;address input
- sty blkcnt ;# 512 byte blocks
- stx secnum+2
- lda #0
- sta hdnum ;clear the drive number
- sta secnum
- sta secnum+1
- jsr sec2cyldcb ;convert to disk addr
- lda head ;fill the dcb
- sta hdnum
- lda cyllsb ;get low cyl addr
- sta cylnum
- lda cylmsb ;get hi cyl and sector
- sta secadr ;put in dcb
- lda #<ignore
- ldy #>ignore
- sta $fffe
- sty $ffff
- sta $fffa
- sty $fffb
- jsr write ;read and return to caller
- rts
- ;
- ignore rti
- ;
- reseterror ldx #0
- .byt $2c ;
- writeerror ldx #14
- writeerrorl lda resetmsg,x
- beq done
- jsr $ffd2
- inx
- bne writeerrorl
- done rts
- brk
- ;
- resetmsg .byt 'reset failed',13,0
- writeerrmsg .byt 'write failed',13,0
- .end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-