home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_20_1987_Transactor_Publishing.d64 / 1581.bud < prev    next >
Text File  |  2023-02-26  |  2KB  |  87 lines

  1. ; 1581 display t&s burst mode source code
  2. ;
  3. ; <c> m. garamszeghy 1987
  4. ;
  5. ;
  6. pntr   = $fa         ; zero page pointer
  7. size   = $fc         ; number of blocks to read
  8. mmu    = $ff00       ; mmu config reg
  9. data   = $1300       ; start of data buffer
  10. conf   = $0d00       ; start of disk type buffer
  11. clock  = $dd00       ; burst clock line
  12. c1dr   = $dc0c       ; burst data register
  13. c1icr  = $dc0d       ; burst interrupt register
  14. ;
  15. ;
  16.   *= $0b00        ; decimal 2816
  17.   .opt oo         ; assemble to memory
  18. ;
  19. jmptable =*
  20.       jmp testdsk  ; analyze disk
  21.       jmp readdata ; burst memory read
  22. ;
  23. setbnk =*   ; set to bank 15
  24.       lda #0
  25.       sta mmu
  26.       rts
  27. ;
  28. toggle =*   ; toggle data line
  29.       lda #8
  30. tog1  bit c1icr
  31.       beq tog1     ; wait for icr
  32.       lda clock
  33.       eor #$10     ; toggle clock
  34.       sta clock
  35.       lda c1dr     ; get a data byte
  36.       rts
  37. ;
  38. reset =*   ; init  burst mode
  39.       sei
  40.       bit c1icr
  41.       lda clock
  42.       eor #$10     ; toggle clock
  43.       sta clock
  44.       rts
  45. ;
  46. testdsk =* ; burst mode query disk format
  47.       sta pntr     ; save offset into format buffer
  48.       jsr setbnk   ; go to bank 15
  49.       lda #>conf   ; high byte of format buffer
  50.       sta pntr+1
  51.       jsr reset    ; start burst mode
  52.       ldy #0
  53. tes1  jsr toggle   ; get first status byte
  54.       sta (pntr),y ; and stash it
  55.       and #$0e     ; check for errors
  56.       bne exittest
  57.       iny
  58.       cpy #2    
  59.       bne tes1     ; get next status byte
  60. tes2  jsr toggle   ; get data byte
  61.       sta (pntr),y ; and save it
  62.       iny
  63.       cpy #7       ; check for all done
  64.       bne tes2
  65. exittest =*  ; exit disk test routine
  66.       cli          ; restore interrupts
  67.       rts
  68. ;
  69. readdata =*  ; burst mode memory read
  70.       sta size     ; number of pages to read
  71.       lda #<data
  72.       sta pntr     ; set pointer to data buffer
  73.       lda #>data
  74.       sta pntr
  75.       jsr setbnk   ; set bank to 15
  76.       jsr reset    ; start burst mode
  77.       ldy #0
  78. rea1  jsr toggle   ; get data byte 
  79.       sta (pntr),y ; and save it
  80.       iny
  81.       bne rea1     ; end of page?
  82.       dec size
  83.       beq exittest ; last page?
  84.       inc pntr+1
  85.       jmp rea1     ; go get next page
  86. ;
  87.