Classic Computer Magazine Archive PROGRAM LISTING: 88-08a/XEGSMGR.M65


 
X; XEGSMGR.M65X; BY MATTHEW RATCLIFFX; (c)1988, ANTIC PUBLISHING(EI2>D:SYSEQU.M65<>D:IOMAC.LIBFIP"A
XEGS Manager By M. RatcliffAZ4dEKnFxTXPNTԂ
RAMTOPj<STRBUF;;CASBUF for text                       bufferPORTB;;Cart cntrl portCLRBAK;;Bkgnd colorLMARGNR;;Left marginBASICF;;BASIC ctrl flagBASIC_ONBASIC_OFFDOSID;;An "S" is hereSPARTAFLG
S;;if SpartaDos X;               is present..RMARGNS;;Right MarginTEMPMASKRAMPNT;;RAMPOINTERDMAXPAG;;Max page pointer                    for ROM->RAM copy"8FLAG;;Copy part1/part2                       flag,:CASINI;;Vector we will                        steal6COLDSTD@CSETJWARMSVtT
PAGE6^"X; If Self-test selected, checkh$X; first byte here, definition ofr#X; space character. Try to write| X; nonzero value there. If it#X; changes then we're in RAM O/S$X; mode. Will crash if attempt to"X; continue. If RAM-based, tellX; user & return to DOS.!X; If ROM, continue with test.GINTLK;;Ext. Cart FlagBOOT	!X; Good cass boot will give us X; control via CASINI vector.COPY
IRQEN
CRITICBGRACTLSDMCTL/
POKMSK
NMIEN&DMACTL0
PRN0 :
D
AINCORRECT PRN0 CALL!ANX!@SKPTX]X;b@TXT=
=l@SKPTX$>4@TXTv%>5@TXT PRINTXTX;	BEGIN= GRAF0;;GRAFCMD, set new                      RAMTOP, tooQ>;;Black bkgnd.PCLRBAK
 TITLEQGINTLKFINTBAS;;No ext. cart-OKX;?!RRONLY;;Yes-ROM/RAM                           option only!
INTBAS TOP#PRN0 A۱ Turn Π BASIC A#PRN0 A۲ Turn  BASIC A#PRN0 A۳ Run    A#PRN0 A۴ ROM O/S to RAM  A#PRN0 A۵ RAM O/S to ROM  A#PRN0 A۶ Missile Command A  BOT*	 CRLF4:Q>;;No editing                            prompt line>PLMARGN;;Fix marginHBPUT =PROMPT=R	KEYINW GETKEY\5;;Save keyfQ>pPLMARGNz	 CRLF7KEY1R>
1;;Cart on?HKEY2;;NOPEX;9QPORTB;;Yes, current                          config?M>;;Enable BASIC
PPORTBQ>;;New RAMTOPPRAMTOP GRAF0;;Normal screenQ>BASIC_ONPBASICF	 CRLFPRN0 AàΠA!CR5X;KEY2R>
2;;Cart. off?HKEY3;;No.X;$
BASOFF)QPORTB;;Yes! Do it!.L>8PPORTB;;It's off. NowBQ>;;set new RAMTOPLPRAMTOPV
 GRAF0`	 CRLFjQ>BASIC_OFFtPBASICF~PRN0 AàƠA!CR5;;Back to DOS.X;KEY3R>
3;;Self-test?
HKEY4;;NoX; BASOFF;;BASIC off firstQPORTB;;Enable OS RAML>
PPORTB
 GRAF0QPORTB;; Self-test on.M>:PPORTB;;Now remapped                          to $5000Q>;;Coldstart flagPCOLDST;;for 'RESET'
X; Reboot after test!PX;KEY4#R>
4;;ROM O/S -> RAM?(FGROMRAM-X;2KEY57R>
5;;RAM O/S -> ROM?<	HKEY6AX;F	QBOOTPM>Z	PBOOTd!WARMSViX;nKEY6s;!MISLCMD;;Enable Missile                        Commandx	 GOOF
!BEGINX;GROMRAM
QDOSIDR>SPARTAFLGHGOROMSRAMX;NORAMOSQ>PLMARGN	QBOOTM>;;Disk boot OK	PBOOT
 GRAF0$PRN0 A͠ϯӠA$PRN0 AӠ塪A:X;
GOROMSRAM	!ROMSRAM
X;$X;Copy ROM OS -> RAM then disableX;all interrupts, enable RAM"X;in place of ROM (OS),'X;copy RAM->RAM & enable.,
RRONLY1Q>6PLMARGN@	 CRLFJ
QDOSIDTR>SPARTAFLG^FNORAMOScX;h)PRN0 A̠ŠԠAr$PRN0 ACONVERT ROM OS  RAM ?A|0PRN0 A(Type 'Y' or 'N' and press RETURN) A GETKEYR>
YFROMSRAMX;R>
N	FQUITX;	 GOOF
!BEGINX;QUIT
 GRAF0!CR5X;	DRVTXAD1:*.FNTA=
FILENAMEAD1:FILENAME.EXTA=
=
=
X; ROM OS to RAM setupROMSRAM$>;; Move RAM O/S%RAMGRLN;; MGR to Page6
RMOVLPQRAMGR9PPAGE69&201:HRMOVLP?X;D PAGE6;; Make RAM O/SN)PRN0 A ͠ϯӠAX)PRN0 A 㡠Ab	REDIRg)PRN0 A Al$PRN0 A (1-8, 0=Exit, no load)Av GETKEYR>
;; CR also exits
FNOFNTX;R>
0
HDIRITX;	NOFNT:	DIRITR>
9;; Valid drive #?DDIRIT2X;	 GOOF
!REDIRX;
DIRIT2R>
1EDIRIT3X;	 GOOF!REDIR;; Try it again.X;
DIRIT3
PDRVTX
CLOSE OPEN ===DRVTX C*IDIRIT4/X;4PRN0 AOpen error.A>
CLOSE H
!REDIRMX;R
DIRIT4W
 GETFNAME\CfGDIRIT5kX;pPRINT =STRBUF=z!DIRIT4X;
DIRIT5
CLOSE PRN0 AFont file to load?A!PRN0 A( for new dir)A GETKEYQSTRBUFR>
HDIRIT6X;
!REDIRX;
DIRIT6 EDITFNAMEOPEN ===FILENAMEIDIRIT7X;PRINT =FILENAME=PRN0 ACan't open file!A	
CLOSE 	
!REDIR	X;	
DIRIT7	BGET =CSET=$	
CLOSE .	DIRIT7A3	!PRN0 ARAM O/S Font loaded.A8	.PRN0 A[1] Exit [2] Load different font?AB	 GETKEYL	R>
1V	HDIRIT8[	X;`	CR5e	Q>j		PTEMPt	
XTRALFy		 CRLF~		"TEMP	HXTRALF	X;	:	X;	
DIRIT8	R>
2	FDIRIT9	X;		 GOOF	!DIRIT7A	X;	
DIRIT9	
!REDIR	X;	X; Edit strbuf to filename	X; with defaults	
EDITFNAME	QSTRBUF;; D: or Dn:?	R>
:	>FCOPYASIS;; Yes, no edits                         on front
QSTRBUF

R>
:

FCOPYASIS
X;
Q>
D;; Set default(
PFILENAME;; drive spec2

QDRVTX<
PFILENAMEF
Q>
:P
PFILENAMEZ
$>
d
%>n
	COPLPs
=QSTRBUF8;; Move rest                             of fnamex
PFILENAME8
R>


FEXTST
X;
3
0

HCOPLP
X;

FEXTST
X;
COPYASIS
$>
%>

COPLP1
QSTRBUF8
PFILENAME8
R>


FEXTST
X;
R>
FEXTST	X;30"HCOPLP1'X;,	EXTST1$>6
EXTST1;QFILENAME9@R>
.;; Extender here?JFGOTEXT;; Yes, done editOX;TR>
^FADDEXT;; Add extensioncX;hR>rFADDEXTwX;|29(>;; Done all                              possible?HEXTST1X;
ADDEXT%>ADDEXT1QDRVTX8PFILENAME923)>HADDEXT1X;
GOTEXT:X;X; Execute a GR.0 to restoreX; E: S: and K: handlersX; after ROM->RAM function.	GRAF0$>`;;CL.# 6 - ScreenQ>CCLOSE&PICCOM90 CIO:$>`DQ>COPN;;OPEN S:NPICCOM9XQ>
S;; S: temporarilybPSTRBUF;; on CASBUF pg 4lQ>
:vPSTRBUF5Q>;;Point to S:                           page 4PICBADR9Q>;;GRAPHICS 0PICAUX29;;For S: handlerPICBADR9;;Rest of S: adr>Q>;;Flip bit 4 &                         allow READ/WRITEPICAUX19!CIO;;Open & returnX;GOOFQ>;;Left marginPLMARGNQ>';;Right marginPRMARGN	 CRLF
PRN0 AĠ٠A
	GOOF1
$PRN0 APRESS  TO RESTARTA
 GETKEY 
:%
X;*
GETKEY/
INPUT =STRBUF=4
QSTRBUF>
:C
X;H
GETFNAMEM
INPUT =STRBUF=R
:W
X;\
PROMPTa
A堣οAf
PRINTXTk
&ICBADR;;Print to #0p
&TXPNTz
@'ICBADR;;X-lo byte,                            Y-hi byte.

'TXPNT
%>
'ICBLEN
'ICBLEN
LEN
Q@TXPNT7;;Length?
R>;;ETX-End of text
FOUTPUT
X;
#ICBLEN
	HMORE
X;
#ICBLEN
MORE
3
HLEN;;256 chars max.
X;
OUTPUTQ>;;PUT record$>;;Ch #0
PICCOM!CIOX;$X; Print a blank line.CRLF3
PRINT 8:=X;B	TITLEGQ>LPLMARGNV	 CRLF` TOPj#PRN0 AӠAt#PRN0 AA~#PRN0 AA#PRN0 A堠A#PRN0 A̯ŠA BOT!CRLF;;CR and [RETURN]X;TOP#PRN0 AA:X;BOT#PRN0 AA:X;MISLCMD%MISLLEN$>&COLDSTMISLPUT
QMISLCOM9PPAGE692
1HMISLPUTX;
!PAGE6#X;(MISLCOM2=====<=====	FL=t====P	=====Z==)===d====*=n=====x=====*==*============ =R==========	=l===l=	=`MISLLEN
MISLCOM	RAMGR>D:RAMOSDAT.M65RAMGRLN
RAMGREI
	BEGIN

Back to previous page