home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / _ / 6502xass / !6502-XAss / Docs / Sources / Trans next >
Text File  |  1995-12-23  |  4KB  |  134 lines

  1. ;**************************************
  2. ;*               Trans                *
  3. ;*                                    *
  4. ;*    start with SYS<base> on C-64    *
  5. ;*     to receive a program from      *
  6. ;*          6502/6510 XAss            *
  7. ;*                                    *
  8. ;*    ©1995 by Skoe of Expression     *
  9. ;**************************************
  10.  
  11.  
  12. !base = $cf00        ; run this program with "SYS xxxxx"
  13.  
  14. !bsout = $ffd2       ; print char
  15. !vic_init = $e5a0    ; reset vic
  16. !sound_vol = $d418   ; to avoid noise
  17.  
  18. ; Format of transfered data:
  19. ; --------------------------
  20. ;
  21. ; byte    meaning
  22. ;    0    always 0     \
  23. ;    1    always 255   /  mark for start
  24. ;    4    start address low
  25. ;    5    start address high
  26. ;    6    end address low
  27. ;    7    end address high
  28. ;    8    start address low \
  29. ;    9    start address high \  to be
  30. ;   10    end address low    /  sure...
  31. ;   11    end address high  /
  32. ;   12... datas
  33.  
  34. !DDRB = $dd03
  35. !PRB = $dd01
  36. !PRA = $dd00
  37.  
  38. !wait1ms=$eeb3
  39.  
  40.                 lda #0
  41.                 sta DDRB                  ; all pins input
  42.                 sta sound_vol             ; silence
  43.                 lda PRA
  44.                 and #252
  45.                 ora #3
  46.                 sta PRA                   ; video bank
  47.                 jsr vic_init
  48. .waitstart_a
  49.                 dec $d020
  50.                 jsr getbyte
  51.                 cmp #0
  52.                 bne waitstart_a
  53. .waitstart_b                            
  54.                 dec $d020
  55.                 jsr getbyte
  56.                 cmp #$ff
  57.                 bne waitstart_b
  58.  
  59.                 jsr getbyte
  60.                 sta startaddress+1
  61.                 jsr getbyte
  62.                 sta startaddress+2
  63.  
  64.                 jsr getbyte
  65.                 sta endlo+1
  66.                 jsr getbyte
  67.                 sta endhi+1
  68.  
  69.                 jsr getbyte
  70.                 cmp startaddress+1
  71.                 bne error
  72.                 jsr getbyte
  73.                 cmp startaddress+2
  74.                 bne error
  75.  
  76.                 jsr getbyte
  77.                 cmp endlo+1
  78.                 bne error
  79.                 jsr getbyte
  80.                 cmp endhi+1
  81.                 bne error
  82.                 
  83.                 ldx #0
  84. .mainloop
  85.                 jsr getbyte
  86.                 sta $d020
  87.                 stx $d020
  88. .startaddress
  89.                 sta $ffff
  90.                 inc startaddress+1
  91.                 bne nohiinc
  92.                 inc startaddress+2
  93. .nohiinc
  94.                 lda startaddress+2
  95. .endhi
  96.                 cmp #0
  97.                 bne nocmplo
  98.                 lda startaddress+1
  99. .endlo
  100.                 cmp #0
  101.                 beq endtransfer
  102. .nocmplo
  103.                 jmp mainloop
  104. .endtransfer
  105.                 lda #$37                  ; use your $01 value here
  106.                 sta z,1                  
  107.                 rts
  108.                                         
  109. ; ------------------------------
  110. .error
  111.                 ldx #0
  112. .err_1
  113.                 lda err_text,x
  114.                 beq err_end
  115.                 jsr bsout
  116.                 inx
  117.                 jmp err_1
  118. .err_end
  119.                 lda PRB                   ; empty port buffer
  120.                 jmp err_end
  121. .err_text
  122.  /tx "?transfer error_try again!_°"       ; '°' is #0, '_' is #13
  123. ; ------------------------------
  124. .getbyte
  125.                 jsr wait1ms               ; C64 must be slower than Archi
  126.                                           ; (one way handshaking)
  127.                                           ; you can try to use a DEX-loop
  128.                                           ; instead of "wait1ms"
  129.                                           ; this version is about 1 kB/sec.
  130.                                           ; fast
  131.                 lda PRB
  132.                 rts
  133.  
  134.