mirror of
https://github.com/cc65/cc65.git
synced 2025-02-15 10:30:58 +00:00
Tape load and save functions for the Oric Atmos. By Stefan Haubenthal.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5660 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
47c87eb335
commit
293c279416
@ -62,6 +62,17 @@ Special locations:
|
|||||||
Programs containing Atmos specific code may use the <tt/atmos.h/ header file.
|
Programs containing Atmos specific code may use the <tt/atmos.h/ header file.
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>Atmos specific functions<p>
|
||||||
|
|
||||||
|
The functions listed below are special for the Atmos. See the <htmlurl
|
||||||
|
url="funcref.html" name="function reference"> for declaration and usage.
|
||||||
|
|
||||||
|
<itemize>
|
||||||
|
<item>atmos_load
|
||||||
|
<item>atmos_save
|
||||||
|
</itemize>
|
||||||
|
|
||||||
|
|
||||||
<sect1>Hardware access<p>
|
<sect1>Hardware access<p>
|
||||||
|
|
||||||
The following pseudo variables declared in the <tt/atmos.h/ header file do allow
|
The following pseudo variables declared in the <tt/atmos.h/ header file do allow
|
||||||
@ -197,7 +208,7 @@ supported by BASIC, the following syntax was chosen:
|
|||||||
|
|
||||||
<sect1>Interrupts<p>
|
<sect1>Interrupts<p>
|
||||||
|
|
||||||
The runtime for the Atmos uses routines marked as <tt/.CONDES/ type 2 for
|
The runtime for the Atmos uses routines marked as <tt/.INTERRUPTOR/ for
|
||||||
interrupt handlers. Such routines must be written as simple machine language
|
interrupt handlers. Such routines must be written as simple machine language
|
||||||
subroutines and will be called automatically by the interrupt handler code
|
subroutines and will be called automatically by the interrupt handler code
|
||||||
when they are linked into a program. See the discussion of the <tt/.CONDES/
|
when they are linked into a program. See the discussion of the <tt/.CONDES/
|
||||||
|
@ -112,7 +112,10 @@ function.
|
|||||||
|
|
||||||
<sect1><tt/atmos.h/<label id="atmos.h"><p>
|
<sect1><tt/atmos.h/<label id="atmos.h"><p>
|
||||||
|
|
||||||
(incomplete)
|
<itemize>
|
||||||
|
<item><ref id="atmos_load" name="atmos_load">
|
||||||
|
<item><ref id="atmos_save" name="atmos_save">
|
||||||
|
</itemize>
|
||||||
|
|
||||||
|
|
||||||
<sect1><tt/c128.h/<label id="c128.h"><p>
|
<sect1><tt/c128.h/<label id="c128.h"><p>
|
||||||
@ -138,6 +141,37 @@ function.
|
|||||||
</itemize>
|
</itemize>
|
||||||
|
|
||||||
|
|
||||||
|
<sect1><tt/cbm.h/<label id="cbm.h"><p>
|
||||||
|
|
||||||
|
<itemize>
|
||||||
|
<!-- <item><ref id="cbm_clall" name="cbm_clall"> -->
|
||||||
|
<!-- <item><ref id="cbm_close" name="cbm_close"> -->
|
||||||
|
<!-- <item><ref id="cbm_closedir" name="cbm_closedir"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_basin" name="cbm_k_basin"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_bsout" name="cbm_k_bsout"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_chkin" name="cbm_k_chkin"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_ckout" name="cbm_k_ckout"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_close" name="cbm_k_close"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_clrch" name="cbm_k_clrch"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_getin" name="cbm_k_getin"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_load" name="cbm_k_load"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_open" name="cbm_k_open"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_readst" name="cbm_k_readst"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_save" name="cbm_k_save"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_setlfs" name="cbm_k_setlfs"> -->
|
||||||
|
<!-- <item><ref id="cbm_k_setnam" name="cbm_k_setnam"> -->
|
||||||
|
<!-- <item><ref id="cbm_load" name="cbm_load"> -->
|
||||||
|
<!-- <item><ref id="cbm_open" name="cbm_open"> -->
|
||||||
|
<!-- <item><ref id="cbm_opendir" name="cbm_opendir"> -->
|
||||||
|
<!-- <item><ref id="cbm_read" name="cbm_read"> -->
|
||||||
|
<!-- <item><ref id="cbm_readdir" name="cbm_readdir"> -->
|
||||||
|
<!-- <item><ref id="cbm_save" name="cbm_save"> -->
|
||||||
|
<!-- <item><ref id="cbm_write" name="cbm_write"> -->
|
||||||
|
</itemize>
|
||||||
|
|
||||||
|
(incomplete)
|
||||||
|
|
||||||
|
|
||||||
<sect1><tt/cbm510.h/<label id="cbm510.h"><p>
|
<sect1><tt/cbm510.h/<label id="cbm510.h"><p>
|
||||||
|
|
||||||
<itemize>
|
<itemize>
|
||||||
@ -1156,6 +1190,40 @@ used in presence of a prototype.
|
|||||||
</quote>
|
</quote>
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>atmos_load<label id="atmos_load"><p>
|
||||||
|
|
||||||
|
<quote>
|
||||||
|
<descrip>
|
||||||
|
<tag/Function/Load Atmos tape.
|
||||||
|
<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
|
||||||
|
<tag/Declaration/<tt/void __fastcall__ atmos_load(const char* name);/
|
||||||
|
<tag/Description/<tt/atmos_load/ reads a memory block from tape.
|
||||||
|
<tag/Availability/cc65
|
||||||
|
<tag/See also/
|
||||||
|
<ref id="atmos_save" name="atmos_save">
|
||||||
|
<tag/Example/None.
|
||||||
|
</descrip>
|
||||||
|
</quote>
|
||||||
|
|
||||||
|
|
||||||
|
<sect1>atmos_save<label id="atmos_save"><p>
|
||||||
|
|
||||||
|
<quote>
|
||||||
|
<descrip>
|
||||||
|
<tag/Function/Save Atmos tape.
|
||||||
|
<tag/Header/<tt/<ref id="atmos.h" name="atmos.h">/
|
||||||
|
<tag/Declaration/<tt/void __fastcall__ atmos_save(const char* name, const void* start, const void* end);/
|
||||||
|
<tag/Description/<tt/atmos_save/ writes a memory block to tape.
|
||||||
|
<tag/Availability/cc65
|
||||||
|
<tag/See also/
|
||||||
|
<ref id="atmos_load" name="atmos_load">
|
||||||
|
<tag/Example/<verb>
|
||||||
|
atmos_save("hires", 0xa000, 0xc000);
|
||||||
|
</verb>
|
||||||
|
</descrip>
|
||||||
|
</quote>
|
||||||
|
|
||||||
|
|
||||||
<sect1>atoi<label id="atoi"><p>
|
<sect1>atoi<label id="atoi"><p>
|
||||||
|
|
||||||
<quote>
|
<quote>
|
||||||
|
@ -98,6 +98,12 @@
|
|||||||
#define CH_LIRA 95
|
#define CH_LIRA 95
|
||||||
#define CH_ESC 27
|
#define CH_ESC 27
|
||||||
|
|
||||||
|
void __fastcall__ atmos_load(const char* name);
|
||||||
|
/* Load Atmos tape. */
|
||||||
|
|
||||||
|
void __fastcall__ atmos_save(const char* name, const void* start, const void* end);
|
||||||
|
/* Save Atmos tape. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* End of atmos.h */
|
/* End of atmos.h */
|
||||||
|
@ -45,6 +45,8 @@ CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
|
|||||||
# Object files
|
# Object files
|
||||||
|
|
||||||
OBJS = _scrsize.o \
|
OBJS = _scrsize.o \
|
||||||
|
atmos_load.o \
|
||||||
|
atmos_save.o \
|
||||||
cclear.o \
|
cclear.o \
|
||||||
cgetc.o \
|
cgetc.o \
|
||||||
chline.o \
|
chline.o \
|
||||||
@ -63,6 +65,7 @@ OBJS = _scrsize.o \
|
|||||||
oserrlist.o \
|
oserrlist.o \
|
||||||
oserror.o \
|
oserror.o \
|
||||||
revers.o \
|
revers.o \
|
||||||
|
store_filename.o\
|
||||||
systime.o \
|
systime.o \
|
||||||
sysuname.o \
|
sysuname.o \
|
||||||
tgi_colors.o \
|
tgi_colors.o \
|
||||||
|
25
libsrc/atmos/atmos_load.s
Normal file
25
libsrc/atmos/atmos_load.s
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
; Stefan Haubenthal, 2012-05-06
|
||||||
|
; based on code by Twilighte
|
||||||
|
; void __fastcall__ atmos_load(const char* name);
|
||||||
|
|
||||||
|
.export _atmos_load
|
||||||
|
.import store_filename
|
||||||
|
|
||||||
|
|
||||||
|
.proc _atmos_load
|
||||||
|
|
||||||
|
sei
|
||||||
|
jsr store_filename
|
||||||
|
ldx #$00
|
||||||
|
stx $02ad
|
||||||
|
stx $02ae
|
||||||
|
stx $025a
|
||||||
|
stx $025b
|
||||||
|
jsr cload_bit
|
||||||
|
cli
|
||||||
|
rts
|
||||||
|
cload_bit:
|
||||||
|
pha
|
||||||
|
jmp $e874
|
||||||
|
|
||||||
|
.endproc
|
28
libsrc/atmos/atmos_save.s
Normal file
28
libsrc/atmos/atmos_save.s
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
; Stefan Haubenthal, 2012-05-06
|
||||||
|
; based on code by Twilighte
|
||||||
|
; void __fastcall__ atmos_save(const char* name, const void* start, const void* end);
|
||||||
|
|
||||||
|
.export _atmos_save
|
||||||
|
.import popax, store_filename
|
||||||
|
|
||||||
|
|
||||||
|
.proc _atmos_save
|
||||||
|
|
||||||
|
sei
|
||||||
|
sta $02ab ; file end lo
|
||||||
|
stx $02ac ; file end hi
|
||||||
|
jsr popax
|
||||||
|
sta $02a9 ; file start lo
|
||||||
|
stx $02aa ; file start hi
|
||||||
|
jsr popax
|
||||||
|
jsr store_filename
|
||||||
|
lda #00
|
||||||
|
sta $02ad
|
||||||
|
jsr csave_bit
|
||||||
|
cli
|
||||||
|
rts
|
||||||
|
csave_bit:
|
||||||
|
php
|
||||||
|
jmp $e92c
|
||||||
|
|
||||||
|
.endproc
|
12
libsrc/atmos/store_filename.s
Normal file
12
libsrc/atmos/store_filename.s
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.export store_filename
|
||||||
|
.importzp ptr1
|
||||||
|
|
||||||
|
store_filename:
|
||||||
|
sta ptr1
|
||||||
|
stx ptr1+1
|
||||||
|
ldy #$0f ;store filename
|
||||||
|
: lda (ptr1),y
|
||||||
|
sta $027f,y
|
||||||
|
dey
|
||||||
|
bpl :-
|
||||||
|
rts
|
Loading…
x
Reference in New Issue
Block a user