base:tape_transfer_shell
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:tape_transfer_shell [2015-04-17 04:34] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Tape Transfer Shell ====== | ||
+ | < | ||
+ | ; | ||
+ | ;Tape Transfer Shell / Nostalgia | ||
+ | ; | ||
+ | ;Worked on: | ||
+ | ; | ||
+ | *= $0801 | ||
+ | |||
+ | .byte $0b, | ||
+ | .byte $32, | ||
+ | .byte $00,$00 | ||
+ | |||
+ | cd = $02 | ||
+ | |||
+ | ; | ||
+ | |||
+ | lda $ba | ||
+ | sta cd ;save current | ||
+ | ;disk drive | ||
+ | lda #$0b ; | ||
+ | sta $d011 | ||
+ | lda #$c1 ;no nmi | ||
+ | ; sta $0318 | ||
+ | lda #$80 | ||
+ | ; sta $0291 ;no char shift | ||
+ | lda #$17 | ||
+ | sta $d018 ;this set | ||
+ | lda #$00 | ||
+ | sta $9d ;st clear | ||
+ | sta $d020 | ||
+ | sta $d021 | ||
+ | sta $c0 | ||
+ | lda #$05 | ||
+ | sta $0286 ;current color | ||
+ | lda #$2f ;i/o config | ||
+ | sta $00 | ||
+ | lda #$37 ; | ||
+ | sta $01 | ||
+ | lda #< | ||
+ | ldx #>msg1 | ||
+ | jsr print | ||
+ | |||
+ | lda #$1b | ||
+ | sta $d011 | ||
+ | lda #$ef ;wait for space | ||
+ | cmp $dc01 | ||
+ | bne *-3 | ||
+ | lda #$00 | ||
+ | sta $0289 ;no keys | ||
+ | |||
+ | jsr lod ;load header | ||
+ | jsr namer | ||
+ | jsr led | ||
+ | lda $00 | ||
+ | pha | ||
+ | lda #$07 | ||
+ | sta $00 | ||
+ | jsr sav ;save header | ||
+ | pla | ||
+ | sta $00 | ||
+ | inc file ;next file # | ||
+ | jsr lod ;load boot | ||
+ | jsr led | ||
+ | lda $01 | ||
+ | ora #$20 | ||
+ | sta $01 | ||
+ | jsr sav ;save boot | ||
+ | |||
+ | ldx #$00 | ||
+ | xl lda loader,x | ||
+ | sta $0630,x | ||
+ | lda loader+$d0, | ||
+ | sta $0700,x | ||
+ | lda #$00 | ||
+ | sta $da30,x | ||
+ | sta $db00,x | ||
+ | inx | ||
+ | bne xl | ||
+ | ldx #$27 | ||
+ | lda #$20 | ||
+ | cl sta $0608,x | ||
+ | dex | ||
+ | bpl cl | ||
+ | ldx #$0f | ||
+ | nl lda name,x | ||
+ | sta $0340,x | ||
+ | dex | ||
+ | bpl nl | ||
+ | inc file | ||
+ | lda file | ||
+ | ora #$30 | ||
+ | sta $034f | ||
+ | jmp $0630 ;begin real loader | ||
+ | lod | ||
+ | lda #$01 ;open tape file | ||
+ | tax | ||
+ | tay | ||
+ | jsr $ffba | ||
+ | lda #$00 | ||
+ | jsr $ffbd | ||
+ | lda #$00 | ||
+ | sta $c0 | ||
+ | sta $93 | ||
+ | jsr $f7d7 ;load header/file | ||
+ | jmp $f84f | ||
+ | |||
+ | led lda file ;name header/file | ||
+ | ora #$30 | ||
+ | sta name+$0f | ||
+ | sta $061f | ||
+ | lda #$00 ;load to $1800 | ||
+ | sta $c3 | ||
+ | lda #$18 | ||
+ | sta $c4 | ||
+ | |||
+ | lda $033f ;calculate end | ||
+ | sbc $033d ;address | ||
+ | tax | ||
+ | lda $0340 | ||
+ | sbc $033e | ||
+ | tay | ||
+ | clc | ||
+ | txa | ||
+ | adc $c3 | ||
+ | sta $ae | ||
+ | tya | ||
+ | adc $c4 | ||
+ | sta $af | ||
+ | lda $c3 | ||
+ | sta $c1 | ||
+ | lda $c4 | ||
+ | sta $c2 | ||
+ | lda $033d ;save load addy | ||
+ | sta ldal | ||
+ | lda $033e | ||
+ | sta ldah | ||
+ | |||
+ | ldx #$07 | ||
+ | p2 lda msg2, | ||
+ | and #$3f | ||
+ | sta $0608,x | ||
+ | dex | ||
+ | bpl p2 | ||
+ | lda #$1b | ||
+ | sta $d011 | ||
+ | lda #$18 | ||
+ | ldx #$00 ; | ||
+ | ldy #$00 | ||
+ | g1 dex | ||
+ | bne g1 | ||
+ | dey | ||
+ | bne g1 | ||
+ | sec | ||
+ | sbc #$01 | ||
+ | sta $02 | ||
+ | lda #$df | ||
+ | cmp $dc01 ;skip if C= held | ||
+ | beq ex | ||
+ | lda $02 | ||
+ | bpl g1 | ||
+ | ex jmp $f84f ;exit | ||
+ | |||
+ | sav ldx #$07 ; | ||
+ | p3 lda msg3,x | ||
+ | and #$3f | ||
+ | sta $0608,x | ||
+ | dex | ||
+ | bpl p3 | ||
+ | lda #$1b | ||
+ | sta $d011 | ||
+ | |||
+ | lda #$01 ;save header/file | ||
+ | ldx cd | ||
+ | ldy #$01 | ||
+ | jsr $ffba | ||
+ | lda #$10 | ||
+ | ldx #<name | ||
+ | ldy #>name | ||
+ | jsr $ffbd | ||
+ | jsr $ffc0 | ||
+ | ldx #$01 | ||
+ | jsr $ffc9 | ||
+ | lda ldal | ||
+ | jsr $ffa8 | ||
+ | lda ldah | ||
+ | jsr $ffa8 | ||
+ | ldy #$00 | ||
+ | savea lda ($c1),y | ||
+ | jsr $ffa8 | ||
+ | inc $d020 | ||
+ | dec $d020 | ||
+ | inc $c1 | ||
+ | bne s1 | ||
+ | inc $c2 | ||
+ | s1 lda $c2 | ||
+ | cmp $af | ||
+ | lda $c1 | ||
+ | sbc $ae | ||
+ | bcc savea | ||
+ | jsr $ffcc | ||
+ | lda #$01 | ||
+ | jmp $ffc3 | ||
+ | |||
+ | namer ldy #$00 ;name file | ||
+ | dname lda $0341, | ||
+ | sta name,y | ||
+ | sta $0610,y | ||
+ | iny | ||
+ | cpy #$10 | ||
+ | bne dname | ||
+ | rts | ||
+ | |||
+ | print sta $fb ;print message | ||
+ | stx $fc | ||
+ | ldy #$00 | ||
+ | ploop lda ($fb),y | ||
+ | beq dprint | ||
+ | jsr $ffd2 | ||
+ | inc $fb | ||
+ | bne ploop | ||
+ | inc $fc | ||
+ | bne ploop | ||
+ | dprint | ||
+ | |||
+ | ; | ||
+ | |||
+ | ldal .byte $00 | ||
+ | ldah .byte $00 | ||
+ | file .byte $01 | ||
+ | name .text " | ||
+ | msg1 | ||
+ | .byte $93 | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text "ll 1.0 / Nostalgia | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " Automatic | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text "in current drive. | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text "nd press PLAY. " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text "gin transfering. | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .text " | ||
+ | .byte $00 | ||
+ | |||
+ | msg2 .text " | ||
+ | msg3 .text " | ||
+ | |||
+ | loader | ||
+ | *= $0630 | ||
+ | .offs loader-* | ||
+ | |||
+ | ldx #$07 ; | ||
+ | ll lda lt,x ;text | ||
+ | and #$3f | ||
+ | sta $0608,x | ||
+ | dex | ||
+ | bpl ll | ||
+ | ldx #$0f ; | ||
+ | ln lda $0340,x | ||
+ | sta $0610,x | ||
+ | dex | ||
+ | bpl ln | ||
+ | |||
+ | |||
+ | |||
+ | ;put loader here | ||
+ | |||
+ | |||
+ | |||
+ | ok | ||
+ | lda #$00 ;save file | ||
+ | sta $d020 ; | ||
+ | ldx #$07 | ||
+ | dl lda vt,x ; | ||
+ | sta $0608,x | ||
+ | dex | ||
+ | bpl dl | ||
+ | ;open file for | ||
+ | lda #$01 ; | ||
+ | ldx cd | ||
+ | ldy #$01 | ||
+ | jsr $ffba ;setlfs | ||
+ | lda #$10 | ||
+ | ldx #$40 ; | ||
+ | ldy #$03 | ||
+ | jsr $ffbd ;setname | ||
+ | jsr $ffc0 ;open | ||
+ | ldx #$01 | ||
+ | jsr $ffc9 ;chkout | ||
+ | lda $ac ;start addy low | ||
+ | jsr $ffa8 ;send | ||
+ | lda $ad ;start addy high | ||
+ | jsr $ffa8 ;send | ||
+ | |||
+ | ldy #$00 ;save the file | ||
+ | saveb sei | ||
+ | inc $01 | ||
+ | lda ($ac),y | ||
+ | dec $01 | ||
+ | jsr $ffa8 | ||
+ | inc $d020 | ||
+ | dec $d020 | ||
+ | |||
+ | inc $ac ;nifty eof checker | ||
+ | bne b1 | ||
+ | inc $ad | ||
+ | b1 lda $ac | ||
+ | cmp $fb | ||
+ | lda $ad | ||
+ | sbc $fc | ||
+ | bcc saveb | ||
+ | |||
+ | lda #$01 | ||
+ | jsr $ffc3 ;close the file | ||
+ | |||
+ | ; rts ;return to loader | ||
+ | ; ;or other. | ||
+ | |||
+ | |||
+ | ; sei ;hard restart | ||
+ | ; lda #$2f ; | ||
+ | ; sta $00 | ||
+ | ; lda #$37 | ||
+ | ; sta $01 | ||
+ | ; jsr $ff81 | ||
+ | ; jsr $ff84 | ||
+ | ; jsr $ff8a | ||
+ | ; jsr $ffe7 | ||
+ | ; sei | ||
+ | ; lda #$08 ;ar restart | ||
+ | ; sta $de00 | ||
+ | ; jmp ($fffc) | ||
+ | |||
+ | ; | ||
+ | ;Transfer Messages | ||
+ | |||
+ | et .text "load error, try " | ||
+ | .text " | ||
+ | lt .text " | ||
+ | vt .text " | ||
+ | </ |
base/tape_transfer_shell.txt · Last modified: 2015-04-17 04:34 by 127.0.0.1