Commodore Plus/4 1551USB
Suche
Index
FAQ
Kontakt
Zurück
!to"1551usb.prg",cbm

   t_lo    = $ba
   t_hi    = $bb
   blocks  = $9f
   rest    = $a0

   s_lo    = $a1  ; pointer lo
   s_hi    = $a2  ; pointer hi 

; drive 9
; TIA 6523  
   porta = $fec0
; data port
   portb = $fec1
; pb0: st0
; pb1: st1
   portc = $fec2
; pc6: ack
; pc7: dav


   ddra  = $fec3
   ddrb  = $fec4 
   ddrc  = $fec5
 
*=$6000
start:           
                   sei
                   lda #%01000000
                   sta ddrc
                   and #$00
                   sta portc   
                   sta ddra

                   lda #$ff               
                   sta $FF0C
                   sta $FF0D        ; hide cursor
                   ldx #$00
                   lda #$73   
-                  sta $0800,x   
                   sta $0900,x
                   sta $0a00,x
                   sta $0b00,x
                   inx
                   bne -   

                   lda #$a3
                   sta $ff15 
                   sta $ff19 

                   lda #$00
                   tax  
                   tay  
                   sta t_lo                     
                   lda #<mainscreen
                   sta s_lo
                   lda #>mainscreen
                   sta s_hi
                   lda #$0c
                   sta t_hi
-                  lda (s_lo),y
                   sta (t_lo),y
                   iny  
                   bne -  
                   ldy #$00
                   inc s_hi
                   inc t_hi
                   inx
                   cpx #$04
                   bne -

                   lda #$00
                   tax 
                   sta ddrb
                   lda portb
                   cmp #$03 
                   bne notfound
                                          
-                  lda interface+4,x        ; interface found 
                   sta $0c00+259,x                  
                   inx
                   cpx #$07
                   bne - 
                   beq idler
notfound:          lda interface,x          ; interface not found  
                   sta $0c00+259,x                  
                   inx  
                   cpx #$0b
                   bne notfound 
idler:             ldx #$00
idle:              lda portc
                   cmp #$80
                   bne idle
                   

load:              


                   lda porta                ; get pointer lo
                   sta s_lo
                   lda #$40
                   sta portc                ; set ack (pc6)
                   lda #$00
                   sta portc                ; and delete ack  
-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne - 

                   lda porta                ; get pointer hi
                   sta s_hi
                   lda #$40
                   sta portc                ; set ack (pc6)
                   asl
                   sta portc                ; and delete ack  
-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne - 

                   lda porta                ; get blocks
                   sta blocks
                   lda #$40
                   sta portc                ; set ack (pc6)
                   asl
                   sta portc                ; and delete ack  
-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne - 

                   lda porta                ; get load-addr lo
                   sta t_lo
                   lda #$40
                   sta portc                ; set ack (pc6)
                   asl
                   sta portc                ; and delete ack  
-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne - 

                   lda porta                ; get load-addr hi
                   sta t_hi
                   lda #$40
                   sta portc                ; set ack (pc6)
                   asl
                   sta portc                ; and delete ack  
-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne - 





; load prg ...go,go,go ... :) 


loadprg:           
                   lda porta                ; get byte
                   sta (t_lo),y             ; save

                   lda #$40
                   sta portc                ; set ack (pc6)
                   asl
                   sta portc                ; and delete ack  

-                  lda portc            
                   cmp #$80                 ; wait for dav (pc7) 
                   bne -                     

                   iny  
                   bne loadprg 
                   inx
                   cpx blocks
                   beq eot
                   inc t_hi                   
                   bne loadprg

eot:               jmp end
end:               cli
                   rts

mainscreen: 
!scr " CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC " 
!scr "               1551-usb                 " 
!scr " FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "    usb-interface:                      " 
!scr "                                        " 
!scr " CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr "                                        " 
!scr " CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC " 
!scr "                                        " 
!scr "                                        " 


interface: !scr "not found !"

 

Letzte Änderung: 2019-01-06 09:30:26
  Rubrik:  DIY : Do it yourself
Rubriken-Übersicht
 4 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!