86 lines
2.6 KiB
ArmAsm
Executable File
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
|
|
|