;---------------------------------------
; ASTERIX TurboLoad V1.0.0
;
;  20/2/1991
;---------------------------------------
open     = $ffc0
clall    = $ffe7
close    = $ffc3
setnam   = $ffbd

         *= 820
         jmp tload
;---------------------------------------

off      = $0600-*

diskmain lda #3
         sta $31
loop8    jsr $f50a
loop1    bvc loop1
         clv
         lda $1c01
         sta 768,y
         iny
         bne loop1
         ldy #$ba
loop2    bvc loop2
         clv
         lda $1c01
         sta 256,y
         iny
         bne loop2
         jsr $f8e0
         lda $38
         cmp $47
         beq loop3
         lda #4
         jmp $f969
loop3    jsr $f5e9
         cmp $3a
         beq loop4
         lda #5
         jmp $f969
loop4    lda 768
         beq loop5
         ldx #0
loop6    lda 768,x
         jsr siout+off
         inx
         bne loop6
         lda 768
         cmp 12
         bne loop7
         lda 769
         sta 13
         lda 768
         sta 12
         bne loop8
loop7    sta 12
         lda 769
         sta 13
         lda #1
         jmp $f969

loop5    ldx #0
         inc 769
loop9    lda 768,x
         jsr siout+off
         inx
         cpx 769
         bne loop9
         lda #127
         jmp $f969

;---------------------------------------

siout    sta $85
loop10   bit $1800
         bpl loop10
         lda #16
         sta $1800
loop11   bit $1800
         bmi loop11
         lda #0
         asl $85
         rol a
         asl a
         asl $85
         rol a
         asl a
         sta $1800
         lda #0
         asl $85
         rol a
         asl a
         asl $85
         rol a
         asl a
         sta $1800
         lda #0
         asl $85
         rol a
         asl a
         asl $85
         rol a
         asl a
         sta $1800
         lda #0
         asl $85
         rol a
         asl a
         asl $85
         rol a
         asl a
         sta $1800
         nop
         nop
         nop
         lda #15
         sta $1800
         rts

;---------------------------------------

ctrl     jsr $c100
         lda 24
         ldx 25
         sta 12
         stx 13
         sta 768
         stx 769
loop13   lda #224
         sta 3
loop12   lda 3
         bmi loop12
         cmp #2
         bcc loop13
         cmp #127
         beq loop14
         jmp $e60a
loop14   jmp $c19e


;---------------------------------------
;-64's side of the code-
;---------------------------------------

getnyb   lda #11
         sta $dd00
getnyb1  lda $dd00
         bpl getnyb1
         lda #3
         sta $dd00

         inc $e000
         dec $e000
         dec $e000
         inc $e000
         dec $e000

         lda $dd00
         asl a
         php
         asl a
         rol $a4
         plp
         rol $a4
         lda $dd00
         asl a
         php
         asl a
         rol $a4
         plp
         rol $a4
         lda $dd00
         asl a
         php
         asl a
         rol $a4
         plp
         rol $a4
         lda $dd00
         asl a
         php
         asl a
         rol $a4
         plp
         rol $a4
         lda $a4
         eor #255
         rts

;---------------------------------------

getstart jsr getnyb
         jmp getnyb

;---------------------------------------
fname    .text "system"

tload    lda #6
         ldx #<fname
         ldy #>fname
         jsr setnam
         lda #1
         sta $b9
         lda #8
         sta $b8
         sta $ba
         jsr clall
         ldx $b9
         stx 2
         lda #96
         sta $b9
         jsr open
         lda $ba
         jsr $ed09
         lda $b9
         jsr $edc7
         jsr $ee13
         lda $ba
         jsr close
         lda $90
         lsr a
         lsr a
         bcc bran1
         jmp $f704

bran1    lda #<diskmain
         sta 3
         lda #>diskmain
         sta 4
         lda #0
         sta 5
         lda #6
         sta 6
tran4    lda $ba
         jsr $ed0c
         lda #$6f
         jsr $edb9
         lda #$4d
         jsr $eddd
         lda #$2d
         jsr $eddd
         lda #87
         jsr $eddd
         lda 5
         jsr $eddd
         lda 6
         jsr $eddd
         lda #32
         jsr $eddd
         ldy #0
tran1    lda (3),y
         jsr $eddd
         iny
         cpy #32
         bcc tran1
         jsr $edfe
         clc
         lda 3
         adc #32
         sta 3
         bcc tran2
         inc 4
tran2    clc
         lda 5
         adc #32
         sta 5
         bcc tran3
         inc 6
tran3    ldx 6
         cpx #7
         bcc tran4
         lda $ba
         jsr $ed0c
         lda #$6f
         jsr $edb9
         lda #$4d
         jsr $eddd
         lda #$2d
         jsr $eddd
         lda #$45
         jsr $eddd
         lda #<ctrl+off
         jsr $eddd
         lda #>ctrl+off
         jsr $eddd
         jsr $edfe


         lda #0             ;Let's Load!
         sta $d011
         lda #<$0830     ;Loading addr
         sta $ae
         lda #>$0830
         sta $af

         sei
         ldx #4
bran4    jsr getnyb
         beq load1
         jsr getnyb
         cpx #2
         beq load2
         jsr getstart

load2    ldy #0           ;Main loop
bran3    jsr getnyb
         sta ($ae),y
         inc $d020
         inc $ae
         bne bran2
         inc $af
bran2    inx
         bne bran3

         ldx #2
         bne bran4

load1    jsr getnyb
         cpx #2
         beq bran5
         pha
         jsr getstart
         pla
bran5    tax
         dex
         dex

         ldy #0
bran7    jsr getnyb
         sta ($ae),y
         inc $ae
         bne bran6
         inc $af
bran6    dex
         bne bran7

         lda $ba
         jsr $ed0c
         lda #$6f
         jsr $edb9
         lda #73         ;15,8,15,"@I"
         jsr $eddd
         jsr $edfe

         lda #27
         sta $d011
         lda #131        ;Restore IMAIN
         sta 770
         lda #164
         sta 771
         jmp $1000       ;Begin Maestro!


