jewel-of-kaldun/filing.s

86 lines
2.6 KiB
ArmAsm
Executable File

********************************
* Filer Module: Load and Save *
* game states. *
* Uses: PROLIB *
* PROLIB.MAC *
* IO *
* IO.MAC *
********************************
BUFFER = $BB00
GAMEDATA = $1000
********************************
* Loader: Loads a new game *
* or an old game. Selected by *
* the user. *
********************************
LOADER PRINT LOADSTR
MOVB #0;LOADSTAT
STA KEYSTROB
:AGAIN LDA KEYBOARD
BPL :AGAIN
STA KEYSTROB
CMP #"N"
BEQ :NEWGAME
CMP #"n"
BEQ :NEWGAME
CMP #"O"
BEQ :OLDGAME
CMP #"o"
BNE :AGAIN
:OLDGAME JSR CLINE
PRINT OLDSTR
MOVB #1;LOADSTAT
@OPEN #OLDNAME;#BUFFER;REFNUM
JMP :LOAD
:NEWGAME JSR CLINE
PRINT NEWSTR
@OPEN #NEWNAME;#BUFFER;REFNUM
:LOAD @READ REFNUM;#GAMEDATA;#$D3C
@CLOSE REFNUM
JSR CLINE
RTS
LOADSTR HEX 5783
ASC "Play New or Old game? (N/O)"00
OLDSTR HEX 5783
ASC "... Loading old game ..."00
NEWSTR HEX 5783
ASC "... Loading new game ..."00
OLDNAME STR "OLDGAME"
NEWNAME STR "NEWGAME"
REFNUM HEX 00
LOADSTAT HEX 00
********************************
* Saves a game currently in *
* play. *
********************************
SAVER PRINT SAVESTR
JSR GETYN
BCC :YUP
JMP :NOPE
:YUP PRINT SAVESTR2
@DESTROY #OLDNAME
CMP #0 ; no error?
BEQ :FINISH ; ok!
CMP #$46 ; file not found?
BEQ :FINISH ; ok!
JMP _MLICHK ; unknown error
:FINISH @CREATE #OLDNAME;#$C3;#$F6;#$1000;#$01
@OPEN #OLDNAME;#BUFFER;REFNUM
@WRITE REFNUM;#GAMEDATA;#$D3C
@FLUSH REFNUM
@CLOSE REFNUM
:NOPE JSR CLINE
RTS
SAVESTR HEX 5783
ASC "Do you wish to save the game?"00
SAVESTR2 HEX 825783
ASC "... Saving: Please Wait ..."00