1,727 bytes added,
22:49, 12 March 2007 <pre>
;; This example shows the firmware functions used to load
;; a file with a AMSDOS header (a non-ASCII file)
;;
;; in this example, the file is called SCREEN.SCR
;; and is loaded to the default screen location &c000-&ffff
;; firmware function to open a file for reading
.cas_in_open equ &bc77
;; firmware function to read an entire file (must have a AMSDOS header)
;; the file must have been opened for reading
.cas_in_direct equ &bc83
;; firmware function to close a file opened for reading
.cas_in_close equ &bc7a
org &4000
call load_file
ret
.load_file
;; B = length of the filename in characters
ld b,end_filename-filename
;; HL = address of the start of the filename
ld hl,filename
;; DE = address of a 2k buffer
;;
;; in disc mode: this buffer is not used when CAS IN DIRECT
;; firmware function is used, so it is safe to put it anywhere
;; you want.
ld de,0
;; firmware function to open a file for reading
call cas_in_open
;; cas_in_open returns:
;; if file was opened successfully:
;; - carry is true
;; - HL contains address of the file's AMSDOS header
;; - DE contains the load address of the file (from the header)
;; - BC contains the length of the file (from the file header)
;; - A contains the file type (2 for binary files)
;; firmware function to load the entire file
;; this will work with files that have a AMSDOS header (ASCII
;; files do not have a header)
;; HL = load address
ld hl,&c000
;; read file
call cas_in_direct
;; firmware function to close a file opened for reading
call cas_in_close
ret
;; the filename to load
;; disc filenames are a maximum of 12 characters long
;; 8 characters for name, and 3 characters for extension
.filename
defb "SCREEN.SCR"
.end_filename
</pre>