IDE64 examples


This example describes how to call CD, MKDIR and RM commands

;--------------------------------------
; open 1,12,15,"x:name" : close 1
;--------------------------------------
                   *= $1000
setnam = $ffbd
setlfs = $ffba
close  = $ffc3
open   = $ffc0
                   ldx #12              ;HDD
                   ldy #15              ;command canal
                   lda #1
                   jsr setlfs
                   lda #endname-inputname
                   ldx #<inputname
                   ldy #>inputname
                   jsr setnam
                   jsr open
                   lda #1
                   jsr close
                   rts
;--------------------------------------
; inputname         .text "S:TESTFILE"
; endname           = *                    ;Delete
; inputname         .text "M:TESTDIR"
; endname           = *                    ;Mkdir
; inputname         .text "I:"
; endname           = *                    ;Hdinit1 (IDE64 DOS V0.64 or higher)
inputname         .text "C:/TMP"
endname           = *                    ;Cd

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

This example describes how to read and print a directory in standard form

        *= $1000

;KERNAL

setlfs  = $ffba
setnam  = $ffbd
open    = $ffc0
close   = $ffc3
chkin   = $ffc6
chkout  = $ffc9
clrchn  = $ffcc
chrin   = $ffcf
;chrout  = $ffd2
chrout  = $e716    ;chrout to screen
clall   = $ffe7

;------------------------------
; print DIR
;------------------------------
              lda #1
              ldx #<namebuff
              ldy #>namebuff
              jsr setnam
              lda #1
              ldx $ba
              ldy #0
              jsr setlfs
              jsr open
              ldx #$01
              jsr chkin
              jsr chrin   ;startaddress
              jsr chrin   ;$0401
main_loop     = *
              jsr chrin   ;next basic line
              jsr chrin   ;    - "" -
              jsr chrin   ;line number - number of blocks
              tax
              jsr chrin
              ldy $90
              bne dir_end
              jsr $bdcd   ;Print # to ASCII
              lda #$20
              jsr chrout  ;space
              jsr chrin
small_loop    = *
              ldy $90
              bne dir_end
              jsr chrout
              jsr chrin
              cmp #0
              bne small_loop
              lda #$0d
              jsr chrout
              bne main_loop
dir_end       = *
              lda #1
              jsr close
              jsr clall
              clc
              rts                 

namebuff      .text "$"

This example describes how to use fast READ/WRITE calls for copying files
("INPUT-FILE" in "BIN" directory, to "OUTPUT-FILE" in "TMP" directory)

                  *=$1000
setnam = $ffbd
setlfs = $ffba
chkin  = $ffc6
chkout = $ffc9    
clall  = $ffe7
close  = $ffc3
open   = $ffc0
read   = $def4
write  = $def1
;--------------------------------------
; Buffer from $2000 to $5fff
;
StartAdd          = $20
BlockSize         = $40
;--------------------------------------
                  lda #1
                  ldx #12		;HDD
                  ldy #0		;Secondary address for read
                  jsr setlfs
                  lda #outputname-inputname
                  ldx #<inputname
                  ldy #>inputname
                  jsr setnam
                  lda #$01
                  jsr open		;Open input file
                  lda #2
                  ldx #12		;HDD
                  ldy #1                ;Secondary address for write
                  jsr setlfs
                  lda #status-outputname
                  ldx #<outputname
                  ldy #>outputname
                  jsr setnam
                  lda #$02
                  jsr open		;Open output file
                  lda #$00
                  sta $fb
                  lda #StartAdd		;Buffer start address
                  sta $fc
loop_copy         = *
                  ldx #$01
                  jsr chkin
                  lda #$fb		;Pointer to zeropage with start address
                  ldx #$00
                  ldy #BlockSize	;Block size 
                  jsr read		;READ
                  lda $90
                  pha			;Status to stack
                  txa
                  pha			;Real length of buffer (low) to stack
                  ldx #$02
                  jsr chkout
                  pla
                  tax
                  lda #$fb 
                  jsr write		;WRITE
                  pla			
                  and #$40
                  beq loop_copy
                  lda #$02
                  jsr close		;Close output file
                  lda #$01
                  jsr close		;Close input file
                  jsr clall
                  rts
                  ;
inputname         .text "/BIN/INPUT-FILE"
outputname        .text "/TMP/OUTPUT-FILE"
status            .byte 0
;--------------------------------------

Back to main page