RXB Posted October 24, 2021 Share Posted October 24, 2021 (edited) 1 hour ago, SteveB said: How would you know if a string "1100" is hex or dec? Or does it need to be ">1100" for hex, unlike in CALL CHAR? XB 3 uses the > modifier like this: PRINT VAL(>"1100") ! this would print 4352 or X=VAL(>"1100") ! this would make X=4352 ************************************************************************ In RXB I have a much better solution as I try to make RXB as AI as possible. X=HEX#("1100") ! X would equal 4352 decimal, results hex string to numeric variable PRINT HEX#("1100") ! would print 4352 decimal, results hex string to numeric value Thus hex to decimal conversion, it gives what you want in return from what you input. X$=HEX$(4352) ! X$ would equal "1100" hexadecimal string, result numeric to hex string variable PRINT HEX$(4352) ! would print "1100" hexadecimal string, result numeric to hex string value Thus decimal to hex conversion, it gives what you want in return from what you input. Notice much less complicated then then the XB 3 version previously posted. This would open the door for additional BINARY conversions. Edited October 24, 2021 by RXB 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted October 25, 2021 Share Posted October 25, 2021 Making great progress on XB 3 GROMs. Spoiler *********************************************************** GROM >6000 *********************************************************** * EQUATES * PAD6 EQU >8306 RAMPTR EQU >830A Pointer for crunching BYTES EQU >830C BYTE COUNTER CURINC EQU >830E Increment for auto-num mode TOPSTK EQU >8310 Top of data stack pointer LINUM EQU >8312 Used to determine end of scan CURLIN EQU >8314 Current line for auto-num XFLAG EQU >8316 SCAN FLAG-BITS USED AS BELOW DSRFLG EQU >8317 INTERNAL=60, EXTERNAL=0 (1) STRSP EQU >8318 String space begining STREND EQU >831A String space ending VARW EQU >8320 Screen address ERRCOD EQU >8322 Return error code from ALC STVSPT EQU >8324 Value-stack base PGMPTR EQU >832C Program text pointer EXTRAM EQU >832E Line number table pointer STLN EQU >8330 Start of line number table ENLN EQU >8332 End of line number table DATA EQU >8334 Data pointer for READ SUBTAB EQU >833A Subprogram symbol table SYMTAB EQU >833E Symbol table pointer FREPTR EQU >8340 Free space pointer CHAT EQU >8342 Current charater/token BASE EQU >8343 OPTION BASE value PRGFLG EQU >8344 Program/imperative flag FLAG EQU >8345 General 8-bit flag BUFLEV EQU >8346 Crunch-buffer destruction level LSUBP EQU >8348 Last subprogram block on stack FAC1 EQU >834B FAC2 EQU >834C FAC3 EQU >834D FAC4 EQU >834E FAC5 EQU >834F FAC6 EQU >8350 FAC7 EQU >8351 FAC8 EQU >8352 FAC12 EQU >8356 ARG1 EQU >835D ARG2 EQU >835E ARG3 EQU >835F ARG4 EQU >8360 ARG5 EQU >8361 ARG6 EQU >8362 VSPTR EQU >836E Value stack pointer HIVDP EQU >8370 Highest VDP Avaliable RAMTOP EQU >8384 Highest address in ERAM RAMFRE EQU >8386 Free pointer in the ERAM RAMFLG EQU >8389 ERAM flag STKMIN EQU >83AF Base of data stack PRTNFN EQU >83CE *********************************************************** * VDP EQUATES * NLNADD EQU >02E2 New LiNe ADDress LODFLG EQU >0371 Auto-boot needed flag START EQU >0372 Line to start execution at SPGMPT EQU >0382 Saved PGMPTR for continue SBUFLV EQU >0384 Saved BUFLEV for contiue SAVEVP EQU >0388 ERRLN EQU >038A BUFSRT EQU >038C Edit recall start addr (VARW) BUFEND EQU >038E Edit recall end addr (VARA) SLSUBP EQU >0396 Saved LSUBP for continue SFLAG EQU >0398 Saved on-warning/break bits * Added 6/8/81 for NOPSCAN feature PSCFG EQU >03B7 * Flag 0: 99/4 console, 5/29/81 * 1: 99/4A console CONFLG EQU >03BB VROAZ EQU >03C0 Temporary VDP Roll Out Area CHRCUR EQU >03F0 Definition of CURSOR CRNBUF EQU >0820 CRuNch BUFfer address VRAMVS EQU >0958 Default base of value stack *********************************************************** * GROM HEADER *********************************************************** GROM >6000 AORG 0 DATA >AA21 * VALID GROM / VERSION 33 DATA >0100 * (FUTURE EXPANSION) DATA >9A80 * POWERUP DATA >60B2 * PROGRAMS DATA >0000 * DSR DATA >0000 * CALL DATA >0000 * INTERUPT DATA >0000 * BASIC CALL *********************************************************** G6010 BR AUTON G6012 BR TOPL15 G6014 BR INITPG G6016 BR SPRINT Initialize sprites G6018 BR G63BB G601A BR TOPL10 G601C BR G6872 G601E BR G622D G6020 BR $ G6022 BR KILSYM G6024 BR $ G6026 BR GETNB G6028 BR GETNB2 G602A BR GETCHR G602C BR GETLN G602E BR AUTO1 G6030 BS TOPL02 G6032 BR EDITLN G6034 BR GRSUB1 Read from ERAM (use GREAD/VDP) G6036 BR GWSUB Write a few bytes to ERAM/VDP) G6038 CLR @>8344 ERRSYN CALL G6FE6 G603D BYTE >03 G603E CALL G6FE6 G6041 BACK >0F G6043 DNEG @PAD6 G6045 BS G6FE6 G6047 B G8644 G604A ****************************************************** ****************************************************** G60A8 BYTE >09 G60A9 TEXT 'DSK1.LOAD' ****************************************************** G60B2 DATA >0000 G60B4 DATA >60CA ****************************************************** G60B6 BYTE >13 G60B7 TEXT 'EXPANDED BASIC #3.0' ****************************************************** TOPLEV CLR V@>0370 * SPRITES MOTION G60CD MOVE >004D,V@>0370,V@LODFLG * CLEAR LODFLG G60D4 DST NLNADD,V@BUFSRT G60D9 DST NLNADD,V@BUFEND G60DE ST >01,V@CONFLG G60E2 CLR @>6000 G60E6 DCLR @PRGFLG G60E8 DCLR @BUFLEV G60EA DCLR @DATA G60EC ST >88,@SUBSTK G60EF DST >3567,@>83C0 * Initialize random number gen G60F4 CALL GB7E6 G60F7 DCLR V@>039E G60FA CALL G8259 G60FD ALL >80 * CLEAR SCREEN G60FF CALL G6872 G6102 CALL INITPG G6105 ST >05,@KEYBRD * Key board mode 5 G6108 SCAN G6109 CLR @KEYBRD G610B CEQ >FF,@KEY G610E BS TOPL02 G6110 MOVE >000B,G60A8,V@CRNBUF * >0B,"DSK1.LOAD" G6117 DST CRNBUF,@PGMPTR G611B ST >C7,@CHAT G611E CALL G625F TOPL02 CALL G6FE6 G6124 BYTE >00 G6125 CALL INITPG G6128 BR TOPL15 TOPL10 CALL KILSYM TOPL15 AND >F7,@FLAG G6130 ST >05,@KEYBRD G6133 SCAN G6134 CLR @KEYBRD G6136 ST >88,@SUBSTK G6139 DST NLNADD,@VARW G613D CLR @RAMFLG G6140 CLR @PRGFLG G6142 CLOG >01,@FLAG G6145 BS G616C G6147 DADD @>CURINC,@CURLIN G614A GT G614B BS G6153 G614D AND >FE,@FLAG G6150 B G616C G6153 DCEQ @ENLN, @STLN G6156 BS G6160 G6158 DST @CURLIN,@FAC G615B XML >7E G615D BYTE >03 G615E BS G7E4E G6160 XML >83 G6162 DST @CURLIN,@ARG2 G6165 CALL G7E11 G6168 DINC @VARW G616A BR G616E G616C XML >83 G616E ST >9E,V@>02E1 G6172 CALL G6A8C G6175 CALL G7EDC G6178 CLR @ERRCOD G617A DST CRNBUF,@RAMPTR G617E XML >7F G6180 RTN G6181 CASE @ERRCOD+1 G6183 BR TIPL45 No error detected G6185 BR ERRSYN *SYNTAX ERROR G6187 BR ERRBLN *BAD LINE NUMBER G6189 BR ERRLTL *LINE TOO LONG G618B BR ERRNTL *NAME TOO LONG G618D BR ERRNQS *UNMATCHED QUOTES G618F BR ERRCIP *COMMAND ILLEGAL IN PROGRAM G6191 BR ERRIVN *UNRECOGNIZED CHARACTER TIPL45 XML >03 Line # present G6195 BS TOPL55 G6197 CLOG >01,@FLAG Not AUTONUM G619A BR G61A6 G619C CEQ >0D,@KEY Must be up or down G619F BS G61A6 G61A1 CEQ >01,@CHAT Start EDIT mode G61A4 BS G7E44 G61A6 CALL EDITLN G61A9 BS G6136 G61AB BR TOPL10 TOPL55 CEQ >01,@CHAT G61B0 BS G6136 G61B2 CH >EA,V@CRNBUF G61B6 BS G61DA G61B8 CH >08,V@CRNBUF G61BC BS G6288 G61BE DST >0821,@PGMPTR G61C2 XML >79 G61C4 CASE V@CRNBUF G61C7 BR TOPLEV G61C9 BR G62B9 G61CB BR G621A G61CD BR G6222 G61CF BR G63D2 G61D1 BR G6228 G61D3 BR G6421 G61D5 BR G6212 G61D7 B G87ED G61DA ST V@CRNBUF,@RAMPTR G61DE CLOG >01,@RAMPTR G61E1 BS G6288 G61E3 DST >0821,@PGMPTR G61E7 XML >79 G61E9 ADD >15,@RAMPTR G61EC SRL >01,@RAMPTR G61EF CASE @RAMPTR G61F1 BR G62F5 G61F3 BR G665E G61F5 BR G64D0 G61F7 BR G6288 G61F9 BR G65E2 G61FB BR G6575 G61FD BR G620A G61FF BR G6557 G6201 BR G65BA G6203 BR G6207 G6205 BR G6288 G6207 B G8A3C G620A DCEQ @ENLN,@STLN G620D BS G6094 G620F B G8847 G6212 DCEQ @ENLN,@STLN G6215 BS G6094 G6217 B G8516 G621A DCEQ @ENLN,@STLN G621D BS G6094 G621F B G8911 G6222 CALL G8259 G6225 B >0020 G6228 CALL G869C G622B BR TOPL15 G622D CZ @PRGFLG G622F BR G6234 G6231 CALL G6872 G6234 CEQ >C9,@CHAT G6237 BR G625A G6239 DCEQ @ENLN,@STLN G623C BS G6094 G623E XML >79 G6240 ST @CHAT,@FAC G6243 XML >79 G6245 ST @CHAT,@FAC1 G6248 XML >79 G624A CALL G68D4 G624D BR ERRSYN G624F XML >7E G6251 BYTE >03 G6252 BR G6076 G6254 DST @EXTRAM,V@START G6258 BR G6270 G625A CALL G68D4 G625D BS G6262 G625F CALL G869C G6262 DCEQ @ENLN,@STLN G6265 BS G6094 G6267 DST @ENLN,V@START G626B DADD >FFFD,V@START G6270 CLR @PRGFLG G6272 CALL G8259 G6275 DEC @PRGFLG G6277 DCLR V@SEXTRM G627A DCLR V@ERRLN G627D ST >88, @SUBSTK G6280 ST @RAMTOP, @RAMFLG G6285 CALL KILSYM G6288 ST >FF,V@>03B7 G628C DCLR @RAMPTR G628E DCLR @XFLAG G6290 DST >000A,@PAD6 G6294 CZ @PRGFLG G6296 BR G62AA G6298 DST CRNBUF,@PGMPTR G629C XML >79 G629E XML >83 G62A0 CALL G76A5 G62A3 DST V@SAVEVP,@VSTACK G62A7 B GB188 G62AA CALL G7680 G62AD AND >90,@FLAG G62B0 DCLR @LSUBP G62B2 DST V@SAVEVP,@VSTACK G62B6 B GB188 G62B9 CALL GETNB G62BC BR G6038 G62BE DCZ V@SEXTRM G62C1 BS G6084 G62C3 XML >83 G62C5 DST V@SEXTRM,@EXTRAM G62C9 DST V@SPGMPT,@PGMPTR G62CD DST V@SBUFLV,@BUFLEV G62D1 DST V@SLSUBP,@LSUBP G62D5 OR V@SFLAG,@FLAG G62D9 DCH V@SAVEVP,@VSTACK G62DD BR G62E3 G62DF XML >78 G62E1 BR G62D9 G62E3 ST >FF, @PRGFLG G62E6 ST @RAMTOP,@RAMFLG G62EB DCLR V@SEXTRM G62EE DST VRAMVS,V@SAVEVP G62F3 XML >81 G62F5 CZ V@>0821 G62F8 BR ERRSYN G62FA MOVE >0280,V@>0080,V@>0000 G6301 ST >60,@ARG G6304 FMT G6305 SCRO @ARG G6307 ROW >14 G6309 COL >00 G630B HCHA >02, >1F G630D HTEX 'VDP Memory 00000 Bytes free' G632A HCHA >04,>1F G632C HTEX 'High Memory 00000 Bytes free' G6349 HCHA >04,>1F G634B HTEX 'Low Memory not initialized' G6368 HCHA >04,>1F G636A HCHA >1C,>20 G636C HCHA >02,>1F G636E COL+ >03 G636F ROW >17 G6371 FEND G6372 XML >70 G6374 DCEQ >AA55,@>2006 G637A BR G6394 G637C MOVE >000F,V@>02AF,V@>02CF G6383 DST @>2004,@ARG2 G6388 DSUB @>2002,@ARG2 G638D DST >02D2,@VARW G6391 CALL G63BB G6394 DST @STREND,@ARG2 G6397 DSUB @VSTACK,@ARG2 G639A DADD >FFC1,@ARG2 G639E GT G639F BS G63A3 G63A1 DCLR @ARG2 G63A3 DST >0292,@VARW G63A7 CALL G63BB G63AA DST @RAMFRE,@ARG2 G63AE DADD >5FC1,@ARG2 G63B2 DST >02B2,@VARW G63B6 CALL G63BB G63B9 BR G6136 G63BB DCLR @ARG G63BD DDIV >000A,@ARG G63C1 ADD >90,@ARG3 G63C4 ST @ARG3,V*VARW G63C8 DDEC @VARW G63CA DST @ARG,@ARG2 G63CD DCZ @ARG G63CF BR G63BB G63D1 RTN G63D2 CLOG >80, @FLAG G63D5 BR G609E G63D7 CALL AUTON G63DA OR >01,@FLAG G63DD DST NLNADD,@VARW G63E1 BR G6153 *********************************************************** * AUTON - scans the NUM, LIST and RES commands for line * numbers. Leaves 1st line number in CURLIN and 2nd line * number in CURINC. AUTON is entry point from NUM to defual * to 100,10 AUTON is entry point for LIST. *********************************************************** AUTON DST >03E8,@CURLIN G63E7 DST >000A,@>CURINC G63EB ST >2C,@>8308 AUTO1 DDEC @VARW G63F0 CALL GETNB G63F3 BS G600E G63F5 CALL GETLN G63F8 CZ @BYTES G63FA BS >63FF G63FC DST @FAC,@CURLIN G63FF CALL GETNB2 G6402 DCH @>832A,@VARW G6405 BS G600E G6407 CEQ @>8308,@CHAT G640A BR G6038 G640C CALL GETNB G640F BS G600E G6411 CALL GETLN G6414 CZ @BYTES G6416 BS G641B G6418 DST @FAC,@>CURINC G641B CALL GETNB2 G641E BR G6038 G6420 RTN G6421 DCEQ @ENLN,@STLN G6424 BS G6094 G6426 CALL AUTON G6429 DST @ENLN,@FAC G642C DSUB @STLN,@FAC G642F DSRL >0002,@FAC G6433 DMUL @>CURINC,@FAC G6436 XML >03 G6438 BR ERRBLN G643A DADD @FAC2,@CURLIN G643D CARRY G643E BS ERRBLN G6440 CH >7F,@CURLIN G6443 BS ERRBLN G6445 DST @STLN,@ARG G6448 AND >7F,@>0000(@>5C) G644E DADD >0004,@ARG G6452 DCH @ENLN,@ARG G6455 BR G6448 G6457 DST @ENLN,@PGMPTR G645A ST @RAMTOP,@RAMFLG G645F CLR @ARG4 G6461 DINCT @PGMPTR G6463 DCLR @>83D6 G6466 DCHE @RAMTOP,@PGMPTR G646A BS G64B6 G646C XML >79 G646E CH >C6,@CHAT G6471 BR G6463 G6473 CH >C9,@CHAT G6476 BS G6466 G6478 CEQ >C9,@CHAT G647B BS G6487 G647D XML >79 G647F ST @CHAT,@ARG5 G6482 DADD @ARG4,@PGMPTR G6485 BR G6466 G6487 DST @>0000(@>2C),@FAC G648D DST @CURLIN,@FAC G6490 DST @STLN,@ARG G6493 DCEQ @>0000(@>5C),@FAC G6499 BS G64AE G649B DSUB @>CURINC,@FAC G649E DADD >0004,@ARG G64A2 DCH @ENLN,@ARG G64A5 BR G6493 G64A7 DST >7FFF,@FAC G64AB CALL >0036 G64AE DST @FAC,@>0000(@>2C) G64B4 BR G6461 G64B6 DST @STLN,@FAC G64B9 DST @CURLIN,@>0000(@>4A) G64BF DSUB @>CURINC,@CURLIN G64C2 DADD >0004,@FAC G64C6 DCH @ENLN,@FAC G64C9 BR G64B9 G64CB CLR @RAMFLG G64CE BR G6136 G64D0 DCEQ @ENLN,@STLN G64D3 BS G6094 G64D5 CZ @CHAT G64D7 BS ERRSYN G64D9 CEQ >C2,@CHAT G64DC BS >64F8 G64DE CALL G967A G64E1 DST @FAC,@ARG G64E4 XML >7E G64E6 BYTE >00 G64E7 BYTE >C2 G64E8 CZ @>8342 G64EA BS G6502 G64EC CALL G967A G64EF DST @FAC,@BYTES G64F2 CZ @CHAT G64F4 BS G6508 G64F6 BR ERRSYN G64F8 DST @>FFFD(@>32),@ARG G64FE XML >79 G6500 BR G64EC G6502 DST @>0000(@>30),@BYTES G6508 DCH @BYTES,@ARG G650B BS G608C G650D DST @ARG,@FAC G6510 DST @STLN,@ARG G6513 AND >7F,@>0000(@>5C) G6519 DADD >0004,@ARG G651D DCH @ENLN,@ARG G6520 BR G6513 G6522 XML >7E G6524 BYTE >03 G6525 DCHE @>0000(@>2E),@BYTES G652B BR TOPL10 G652D XML >87 G652F DST @EXTRAM,@PAD6 G6532 DINC @PAD6 G6534 DDECT @EXTRAM G6536 DST @EXTRAM,@FAC G6539 DDEC @FAC G653B DSUB @STLN,@EXTRAM G653E BS G6545 G6540 DST @EXTRAM,@ARG G6543 XML >88 G6545 DADD >0004,@STLN G6549 BS G6125 G654B DCH @RAMTOP,@STLN G654F BS >6125 G6551 DCZ @EXTRAM G6553 BR G6522 G6555 BR TOPL10 G6557 CZ V@>0821 G655A BR ERRSYN G655C MOVE >00D8,V@>0500,V@>0700 G6563 ST >6C,@FAC2 G6566 DST >0700,@FAC G656A DINV V*FAC G656D DINCT @FAC G656F DEC @FAC2 G6571 BR G656A G6573 BR G6136 G6575 DCEQ >C701,V@>0821 G657A ST V@>0823,@FAC1 G657E CH >B7,@FAC1 G6581 BS G609A G6583 CH >7F,@FAC1 G6586 BR G609A G6588 AND >7F,@FAC1 G658B CH >2F,@FAC1 G658E BR G6593 G6590 ADD >F0,@FAC1 G6593 CLR @FAC G6595 DSLL >0004,@FAC G6599 DCEQ >B5C7,V@>0824 G659E CH >0F,V@>0826 G65A2 BS G6080 G65A4 CLR @FAC2 G65A6 ST V@>0826,@FAC3 G65AA MOVE >0010,V@>0826,G@>6D66(@>4A) G65B2 CZ V@>0827(@>4C) G65B6 BR ERRSYN G65B8 BR G6136 G65BA CEQ >AD,@CHAT G65BD BR G65CD G65BF ST >02,V@CONFLG G65C3 CZ V@>0822 G65C6 BR ERRSYN G65C8 CALL G6872 G65CB BR G6136 G65CD CEQ >9B,@CHAT G65D0 BR G65D8 G65D2 ST >01,V@CONFLG G65D6 BR >65C3 G65D8 CEQ >EA,@CHAT G65DB BR ERRSYN G65DD CLR V@CONFLG G65E0 BR >65C3 G65E2 CZ V@>0821 G65E5 BR ERRSYN G65E7 DST @SYMTAB,@FAC G65EA CLR @>8304 G65EC XML >83 G65EE DST >B39A,V@>02CA G65F3 XML >83 G65F5 DCZ @FAC G65F7 BS G6136 G65F9 ST V*FAC,@>8302 G65FD ST @>8302,@>8303 G6600 AND >07,@>8303 G6603 ST V@>0001(@>00),@>8305 G6608 AND >0F,@>8305 G660B CLOG >38,@>8302 G660E BR G6657 G6610 XML >83 G6612 CLOG >40,@>8302 G6615 BS G6621 G6617 DST >A4A5,V@>02C4 G661C DST >A69A,V@>02C6 G6621 DST V@>0004(@>00),@PAD6 G6626 MOVE @>8304,V*PAD6,V@>02C9 G662C CZ @>8303 G662E BS G6648 G6630 ADD @>8303,@>8305 G6633 ST >89,V@>02C9(@>04) G6638 ST >8C,V@>02C8(@>04) G663D DDEC @>8304 G663F DEC @>8303 G6641 BR G6638 G6643 ADD >FC,V@>02C9(@>04) G6648 ADD >60,V@>02C8(@>04) G664D DDEC @>8304 G664F BR G6648 G6651 SCAN G6652 BR G6657 G6654 SCAN G6655 BR G6654 G6657 DST V@>0002(@>00),@FAC G665C BR G65F5 G665E CZ V@>0821 G6661 BR ERRSYN G6663 DST @SUBTAB,@FAC G6666 XML >83 G6668 ST >9A,V@>02C7 G666C XML >83 G666E DCZ @FAC G6670 BS G6136 G6672 DST V*FAC,@>8302 G6676 SRL >04,@>8302 G6679 CEQ >04,@>8302 G667C BR G66A8 G667E DAND >000F,@>8302 G6682 XML >83 G6684 DST >A3A1,V@>02C4 G6689 DST >ACAC,V@>02C6 G668E DST V@>0004(@>00),@>8304 G6693 MOVE @>8302,V*>8304,V@>02C9 G6699 ADD >60,V@>02C8(@>02) G669E DDEC @>8302 G66A0 BR G6699 G66A2 SCAN G66A3 BR G66A8 G66A5 SCAN G66A6 BR G66A5 G66A8 DST V@>0002(@>00),@FAC G66AD BR G666E *********************************************************** * EDIT a line into a program * * Must be called with the following set up: * FAC = line number of line to be edited into program * CHAT = length of line * CRNBUF = crunched line *********************************************************** EDITLN CLOG >80,@FLAG G66B2 BR G609E G66B4 CALL G8259 G66B7 CALL KILSYM G66BA CLR @>8302 G66BC ST @CHAT,@>8303 G66BF CEQ >01,@CHAT G66C2 BR G6702 G66C4 CLOG >01,@FLAG G66C7 BS G66D0 G66C9 AND >FE,@FLAG RTNSET CEQ @FAC,@FAC G66CF RTNC G66D0 DCEQ @ENLN,@STLN G66D3 BS RTNSET G66D5 XML >7E G66D7 BYTE >03 G66D8 BR RTNSET G66DA XML >87 G66DC DST @EXTRAM,@PAD6 G66DF DINC @PAD6 G66E1 DDECT @EXTRAM G66E3 DST @EXTRAM,@FAC G66E6 DDEC @FAC G66E8 DSUB @STLN,@EXTRAM G66EB BS G66F2 G66ED DST @EXTRAM,@ARG G66F0 XML >88 G66F2 DADD >0004,@STLN G66F6 DCZ @STLN G66F8 BS G6125 G66FA DCH @RAMTOP,@STLN G66FE BS G6125 G6700 BR KILSYM G6702 DST @ENLN,@EXTRAM G6705 DCEQ @ENLN,@STLN G6708 BS G674C G670A DINC @EXTRAM G670C DADD >FFFC,@EXTRAM G6710 DST @>0000(@EXTRAM),@FAC6 G6716 AND >7F,@FAC6 G6719 DCEQ @FAC6,@FAC G671C BS G679F G671E H G671F BR G6728 G6721 DCEQ @STLN,@EXTRAM G6724 BR G670C G6726 BR G674E G6728 DST @STLN,@ARG G672B DSUB @>8302,@ARG G672E DCHE >A044,@ARG G6732 BR G605A G6734 DST >0004,@ARG G6738 DADD @EXTRAM,@ARG G673B DSUB @STLN,@ARG G673E DST @STLN,@XFLAG G6741 DADD >FFFC,@STLN G6745 DST @FAC,@STLN G6748 XML >89 G674A BR G6761 G674C DINC @STLN G674E DST @STLN,@ARG G6751 DSUB @>8302,@ARG G6754 DCHE >A044,@ARG G6758 BR G605A G675A DADD >FFFC,@STLN G675E DST @STLN,@EXTRAM G6761 DST @ENLN,@FAC2 G6764 DINC @FAC2 G6766 DSUB @>8302,@FAC2 G6769 MOVE >0004,@FAC,@>0000(@EXTRAM) G6771 DST @ENLN,@ARG G6774 DSUB @STLN,@ARG G6777 DINC @ARG G6779 DST @STLN,@XFLAG G677C DINC @>8302 G677E DSUB @>8302,@STLN G6781 DSUB @>8302,@ENLN G6784 DST @STLN,@FAC G6787 XML >89 G6789 DDEC @>8302 G678B ST @>8303,@>FFFF(@FAC2) G6791 DST @FAC2,@FAC6 G6794 DST @>8302,@FAC4 G6797 DST CRNBUF,@FAC2 G679B XML >8A G679D BR KILSYM G679F DST @>0002(@EXTRAM),@ARG G67A5 ST @>FFFF(@ARG),@ARG1 G67AB CLR @ARG G67AD DSUB @>8302,@ARG G67B0 DADD @STLN,@ARG G67B3 DCHE >A040,@ARG G67B7 BR G605A G67B9 XML >87 G67BB DDECT @EXTRAM G67BD BR G6761 *********************************************************** * SUBROUTINE TO GET A NON-BLANK CHARACTER FROM LINE *********************************************************** GETNB CALL GETCHR Get a character G67C2 BS RTNSET If end-of-line GETNB2 CEQ >20,@CHAT G67C7 BS GETNB G67C9 RTN G67CA DADD >0004,@VARW DCH @>832A,@VARW G67D1 BS RTNSET G67D3 ST V*VARW,@CHAT G67D7 CEQ >7F,@CHAT G67DA BS G67CA G67DC ADD >A0,@CHAT G67DF DINC @VARW G67E1 RTN *********************************************************** * GETLN - Gets an line number after a command and puts it * into the FAC. If the character in CHAT when it is called * is not in the legal numeric range (0-9) then GETLN * GETLN returns with no other action. * Called by: AUTON, RUN, EDITLN *********************************************************** GETLN DCLR @FAC G67E4 CLR @BYTES GETLN2 ADD >D0,@CHAT G67E9 CH >09,@CHAT G67EC BS G6806 G67EE DMUL >000A,@FAC G67F2 XML >03 G67F4 BR G6812 G67F6 ST @CHAT,@FAC1 G67F9 DADD @FAC2@FAC G67FC GT G67FD BR G6812 G67FF INC @BYTES G6801 CALL GETCHR G6804 BR GETLN2 G6806 CZ @BYTES G6808 BS G680E G680A XML >03 G680C BS G6812 G680E ADD >30,@CHAT G6811 RTN G6812 X >83 G6814 CLR @PRGFLG G6816 BR ERRBLN * Initialize program space INITPG CLR @RAMFLG Reset RAMFLG G681B DST >FFE7,@RAMTOP G6820 DST @RAMTOP,@STLN G6824 DST @RAMTOP,@ENLN KILSYM DST @STLN,@RAMFRE G682C DCEQ @RAMTOP,@RAMFRE G6831 BS G6836 G6833 DDEC @RAMFRE G6836 DST @HIVDP,@FREPTR G6839 DST @HIVDP,@STRSP G683C DST @HIVDP,@STREND G683F DCLR @SYMTAB G6841 DCLR @SUBTAB G6843 DCLR V@SEXTRM G6846 CLR @BASE G6848 CLR @>6000 G684C DST >095A,@VSPTR G6850 DST VRAMVS,@STVSPT G6854 DST VRAMVS,V@SAVEVP G6859 RTN ********************************************* * CURSOR & EDGE DEFINITION G685A BYTE >00,>7C,>7C,>7C,>7C,>7C,>7C,>7C G6862 BYTE >00,>00,>00,>00,>00,>00,>00,>00 ****************************************************** * VDP Registers G686A BYTE >00,>E0,>00,>20,>00,>06,>00,>17 ****************************************************** G6872 MOVE >0008,G686A,#VR00 * VDP Registers G6878 ST >10,V@>080F G687C MOVE >0010,V@>080F,V@>0810 G6883 CEQ >01,V@CONFLG G6887 BR G689A G6889 MOVE >0010,@FAC,V@VROAZ G688F CALL GBCD3 G6892 MOVE >0010,V@VROAZ,@FAC G6898 BR SPRINT G689A MOVE >0010,G685A,V@CHRCUR G68A1 DST >0400,@FAC G68A5 CALL G@>0018 G68A8 CZ V@CONFLG G68AB BS SPRINT G68AD DST >0600,@FAC G68B1 CALL G@>004A * ****** Initialization of sprites. Enable 28 sprites. ****** * SPRINT CLR @>837A G68B6 DCLR V@>0780 G68B9 MOVE >006E,V@>0781,V@>0782 G68C0 ST >D0,V@>0370 G68C4 DST >C000,V@>0300 G68C9 DCLR V@>0302 G68CC MOVE >006C,V@>0300,V@>0304 G68D3 RTN G68D4 CGT >83,@CHAT G68D7 BR RTNSET G68D9 CZ @CHAT G68DB RTNC *********************************************************** * SUBROUTINE TO READ 2 BYTES OF DATA FROM VDP OR ERAM * (use GREAD) *********************************************************** GRSUB1 FETCH @FAC4 G68DE DST *FAC4,@FAC2 G68E2 DST @>0000(@FAC2),@FAC6 G68E8 RTN *********************************************************** * SUBROUTINE TO WRITE A FEW BYTES OF DATA TO VDP OR ERAM * (use GWRITE) *********************************************************** GWSUB FETCH @FAC2 G68EB DST *FAC2,@FAC2 G68EF CLR @FAC6 G68F1 FETCH @FAC7 G68F3 CLR @FAC4 G68F5 FETCH @FAC5 G68F7 XML >86 G68F9 RTN ******************************************************* G68FA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6902 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G690A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6912 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G691A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6922 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G692A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6932 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G693A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6942 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G694A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6952 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G695A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6962 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G696A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6972 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G697A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6982 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G698A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6992 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G699A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69A2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69AA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69B2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69BA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69C2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69CA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69D2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69DA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69E2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69EA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69F2 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G69FA BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A02 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A0A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A12 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A1A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A22 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A2A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A32 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A3A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A42 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A4A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A52 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A5A BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A62 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G6A6A BYTE >00,>00,>00,>00,>00,>00 ******************************************************* ******************************************************* G6D66 BYTE >0E G6D67 TEXT ' ' G6D76 BYTE >0A G6D77 TEXT 'ACCEPT AT ' G6D86 BYTE >06 G6D87 TEXT 'BREAK ' G6D96 BYTE >05 G6D97 TEXT 'CALL ' G6DA6 BYTE >0B G6DA7 TEXT 'DISPLAY AT( ' G6DB6 BYTE >09 G6DB7 TEXT 'ERASE ALL ' G6DC6 BYTE >06 G6DC7 TEXT 'FOR I= ' G6DD6 BYTE >05 G6DD7 TEXT 'GOTO ' G6DE6 BYTE >0B G6DE7 TEXT 'CALL HCHAR( ' G6DF7 BYTE >04 G6DF8 TEXT 'INT( ' G6E06 BYTE >0B G6E07 TEXT 'CALL JOYST( ' G6E16 BYTE >09 G6E17 TEXT 'CALL KEY( ' G6E26 BYTE >08 G6E27 TEXT 'LINPUT # ' G6E36 BYTE >0D G6E37 TEXT 'CALL MOTION(# ' G6E46 BYTE >06 G6E47 TEXT 'NEXT I ' G6E56 G6E57 TEXT >0PEN # ' G6E66 BYTE >06 G6E67 TEXT 'PRINT ' G6E76 BYTE >0D G6E77 TEXT 'CALL QUIT OFF ' G6E86 BYTE >06 G6E87 TEXT 'RETURN ' G6E96 BYTE >0B G6E97 TEXT 'CALL SOUND( ' G6EA6 BYTE >0D G6EA7 TEXT 'CALL SPRITE(# ' G6EB6 BYTE >06 G6EB7 TEXT 'USING ' G6EC6 BYTE >0B G6EC7 TEXT 'CALL VCHAR( ' G6ED6 BYTE >0A G6ED7 TEXT 'CALL WAIT( ' G6EE6 BYTE >0A G6EE7 TEXT 'CALL LINK( ' G6EF6 BYTE >0E G6EF7 TEXT 'RUN"DSK5.LOAD' ' G6F06 BYTE >06 G6F07 TEXT 'SUBEND ' G6F16 BYTE >08 G6F17 TEXT 'CHR$(27) ' G6F26 BYTE >04 G6F27 TEXT ' :: ' G6F36 BYTE >08 G6F37 TEXT 'CALL BYE ' G6F46 BYTE >0A G6F47 TEXT 'RES 100,10 ' G6F56 BYTE >09 G6F57 TEXT 'MERGE DSK ' G6F66 BYTE >0B G6F67 TEXT 'OUTPUT "DSK ' G6F76 BYTE >0B G6F77 TEXT 'DELETE "DSK ' G6F86 BYTE >07 G6F87 TEXT 'OLD DSK ' G6F96 BYTE >09 G6F97 TEXT 'CALL CLRS ' G6FA6 BYTE >08 G6FA7 TEXT 'RUN "DSK ' G6FB6 BYTE >0D G6FB7 TEXT '5.VOKAB/E/XR" ' G6FC6 BYTE >0F G6FC7 TEXT 'RUN"DSK5.LISTP"' G6FD6 BYTE >09 G6FD7 TEXT 'RESTORE # ' ************************************************ G6FE6 DCZ V@>039E G6FE9 BS G700B G6FEB MOVE >001E,@FAC,V@VROAZ G6FF1 DST V@>039E,@FAC12 G6FF5 ST >01,V@>0004(@FAC12) G6FFA DADD >000D,@FAC12 G6FFE CALL G@>0010 G7001 BYTE >08 G7002 MOVE >001E,V@VROAZ,@FAC G700B DCLR @ERRCOD G700D DSUB @>CURINC,@CURLIN G7010 DCEQ CRNBUF,@SYMTAB G7014 BR G701A G7016 DST @>0822,@SYMTAB G701A CLR @>8376 G701C FETCH @>8377 G701E DSLL >0002,@>8376 G7022 MOVE >0004,G72F9(@>8376),@>8354 G7029 ST >8A,@>8373 G702C CZ @>8357 G702E BR G703E G7030 CALL G70E8 G7033 DCEQ >73D5,@>8354 G7037 BR G70DA G7039 CALL G8259 G703C BR G70DA G703E CZ @PRGFLG G7040 BS G7047 G7042 DCZ V@ERRLN G7045 BR G704E G7047 CALL G7189 G704A BS G70DA G704C BR G7030 G704E CALL G72BC G7051 DST @FAC,@FAC12 G7054 ST >69,@FAC2 G7057 DCEQ >7620,@>8354 G705B BR G7065 G705D ST V@>0002(@>8304),@FAC3 G7062 OR >80,@FAC1 G7065 DST @>831E,@FAC4 G7068 DST @EXTRAM,@FAC6 G706B DST @VSPTR,@ARG G706E DADD >0018,@ARG G7072 DCH @ARG,@STREND G7075 BS G708C G7077 CALL G70E8 G707A DST >7488,@>8354 G707E CLR @PRGFLG G7080 CALL G70E8 G7083 MOVE >0008,G73C4,V@>02D0 G708A BR G70DD G708C XML >77 G708E DST ERRLN,@EXTRAM G7092 DST >0000(@EXTRAM),@PGMPTR G7098 DCLR V@ERRLN G709B XML >81 G709D DCLR @ERRCOD G709F CLR @>8376 G70A1 FETCH @>8377 G70A3 DSLL >0002,@>8376 G70A7 MOVE >0004,G72F9(@>8376),@>8354 G70AE CZ @PRGFLG G70B0 BS G70B7 G70B2 CLOG >02,@FLAG G70B5 BR G70D1 G70B7 XML >83 G70B9 MOVE >0009,G73CC,V@NLNADD G70C0 XML >83 G70C2 DST >02E4,@VARW G70C6 CALL G7189 G70C9 BS G70CE G70CB CALL G70F5 G70CE ST >03,@>837F G70D1 CLOG >04,@FLAG G70D4 BS G600E G70D6 CZ @PRGFLG G70D8 BS G600E G70DA CALL G72BC G70DD DST V@SAVEVP,@VSPTR G70E1 BR TOPL15 G70E3 CEQ >01,@>8357 G70E6 BS G70F5 G70E8 CALL G6872 G70EB XML >83 G70ED ST >8A,V@NLNADD G70F1 DST NLNADD,@VARW G70F5 MOVE >0001,G@>0000(@>8354),@ARG1 G70FC CLR @ARG G70FE MOVE *ARG,G@>0001(@>8354),V*VARW G7105 DADD @ARG,@VARW G7108 DCEQ >7620,@>8354 G710C BR G7125 G710E DINC @VARW G7110 CLR @ARG2 G7112 ST V@>0004(@>8304),@ARG3 G7117 CALL G7E11 G711A ST V@>0005(@>8304),@ARG3 G711F SRL >05,@ARG3 G7122 CALL G7E11 G7125 DCEQ >73D5,@>8354 G7129 BS G7151 G712B CALL G@>0036 G712E CZ @PRGFLG G7130 BS G7151 G7132 DCH >02F6,@VARW G7136 BR G713E G7138 XML >83 G713A DST >02E3,@VARW G713E DST >C9CE,V@>0001(@VARW) G7144 DADD >0004,@VARW G7148 ST @CHAT,@>8376 G714B CALL GB4FC G714E ST @>8376,@CHAT G7151 XML >83 G7153 RTN ***************************************************** G7154 DST @STLN,@ARG2 G7157 DINCT @ARG2 G7159 DST @ARG2,@ARG4 G715C DCLR @ARG6 G715E DCHE @ENLN,@ARG4 G7161 BS G717F G7163 DST @>0000(@ARG4),@>8358 G7169 DCGT @ARG,@>8358 G716C BS G7179 G716E DCH @ARG6,@>8358 G7171 BR G7179 G7173 DST @ARG4,@ARG2 G7176 DST @>8358,@ARG6 G7179 DADD >0004,@ARG4 G717D BR G715E G717F DST @>FFFE(@ARG2),@ARG2 G7185 AND >7F,@ARG2 G7188 RTN ****************************************************** G7189 DST @VSPTR,@FAC8 G718C DCH @STVSPT,@FAC8 G718F BR G600E G7191 CEQ >68,V@>0002(@FAC8) G7196 BS G71B0 G7198 CEQ >6A,V@>0002(@FAC8) G719D BS G7256 G719F CEQ >70,V@>0002(@FAC8) G71A4 BS G71AC G71A6 DADD >FFF8,@FAC8 G71AA BR G718C G71AC DADD >FFF8,@VSPTR G71B0 ST @PRGFLG,@FAC12 G71B3 CLR @PRGFLG G71B5 CALL G70E3 G71B8 ST @FAC12,@PRGFLG G71BB DST @PGMPTR,@ARG G71BE CALL G7154 G71C1 DST >C9CE,V@>02E4 G71C6 DST >02E7,@VARW G71CA CALL G7E11 G71CD XML >83 G71CF DST V*FAC8,@ARG G71D3 DADD >FFF8,@FAC8 G71D7 DCH @STVSPT,@FAC8 G71DA BR G723B G71DC CEQ >68,V@>0002(@FAC8) G71E1 BR G7221 G71E3 DCEQ @ARG,V*FAC8 G71E7 BR G720C G71E9 MOVE >0014,G73A5,V@>02E4 G71F0 XML >83 G71F2 DADD >FFF8,@FAC8 G71F6 CEQ >68,V@>0002(@FAC8) G71FB BR G7205 G71FD DCEQ @ARG,V*FAC8 G7201 BR G71CF G7203 BR G71F2 G7205 CGT >65,V@>0002(@FAC8) G720A BR G71F2 G720C MOVE >000B,G73B9,V@>02E4 G7213 CALL G7154 G7216 DST >02F0,@VARW G721A CALL G7E11 G721D XML >83 G721F BR G71CF G7221 CHE >66,V@>0002(@FAC8) G7226 BR G71D3 G7228 DCH >095A,@FAC8 G722C BR G723B G722E CEQ >6A,V@>0002(@FAC8) G7233 BS G7251 G7235 DADD >FFF8,@FAC8 G7239 BR G7228 G723B CZ @PRGFLG G723D BS RTNSET G723F MOVE >000B,G73B9,V@>02E4 G7246 DST >02F0,@VARW G724A CALL GB4FC G724D XML >83 G724F BR RTNSET G7251 CZ @PRGFLG. G7253 BR G725D G7255 RTN *************************************************** G7256 CALL G70E3 G7259 CZ @PRGFLG G725B BS RTNSET G725D DST >C9CE,V@>02E4 G7262 DST >02E8,@FAC12 G7266 DST V*FAC8,@>835A G726A CLR @>8354 G726C ST V@>0001(@>835A),@>8355 G7271 DST V@>0004(@>835A),@>835A G7276 MOVE *>8354,V*>835A,V*FAC12 G727C ADD >60,V*FAC12 G7280 DINC @FAC12 G7282 DDEC @>8354 G7284 BR G727C G7286 XML >83 G7288 MOVE >000B,G73B9,V@>02E4 G728F DST @FAC8,@>8354 G7292 DST V@>0006(@FAC8),@FAC8 G7297 DCZ @FAC8 G7299 BS G72A1 G729B DST >02F1,@FAC12 G729F BR G7266 G72A1 DST V@>FFFA(@>8354),@ARG2 G72A7 DST @>FFFE(@ARG2),@ARG2 G72AD DST >02F1,@VARW G72B1 CALL G7E11 G72B4 XML >83 G72B6 CEQ @FAC,@FAC G72B9 RTNC ************************************************** G72BA XML >78 G72BC DST @VSPTR,@FAC8 G72BF BR G72C9 G72C1 DADD >FFF8,@FAC8 G72C5 DADD >FFF8,@FAC8 G72C9 DCH @STVSPT,@FAC8 G72CC BR G600E G72CE ST V@>0002(@FAC8),@>8358 G72D3 ADD >9A,@>8358 G72D6 CH >04,@>8358 G72D9 BS G72BA G72DB CASE @>8358 G72DD BR G72C5 G72DF BR G72EC G72E1 BR G72F2 G72E3 BR G72E7 G72E5 BR G72C1 G72E7 CALL GAF89 G72EA BR G72C5 G72EC DADD >FFE0,@FAC8 G72F0 BR G72C9 G72F2 DCLR @FAC4 G72F4 CALL GB3FC G72F7 BR G72C5 G72F9 BS G73D5 G72FB RTN *************************************************** G72FC RTN *************************************************** G72FD BS G73DD 72FF * 00 RTN . 7300 * 00 RTN . 7301 s 73 BS G@>73E8. 7303 * 0A GT . 7304 * 01 RTNC . 7305 s 73 BS G@>73F9. 7307 * 0E PARSE >09. 7309 t 74 BS G@>7406. 730B * 10 CONT . 730C * 09 H . 730D t 74 BS G@>741F. 730F * 11 EXEC . 7310 * 09 H . 7311 t 74 BS G@>7430. 7313 * 13 RTGR . 7314 * 09 H . 7315 t 74 BS G@>743E. 7317 * 18 XGPL . 7318 * 09 H . 7319 t 74 BS G@>7455. 731B * 19 XGPL . 731C * 09 H . 731D t 74 BS G@>7467. 731F * 1C XGPL . 7320 * 09 H . 7321 t 74 BS G@>747C. 7323 $ 24 MOVE *>8309 BYTE TO G@>7488 FROM @>8327. 7328 * 09 H . 7329 t 74 BS G@>7494. 732B ( 28 MOVE *>8309 BYTE TO G@>74A3 FROM G@>2B09. 7331 t 74 BS G@>74B4. 7333 , 2C MOVE *>8309 BYTE TO G@>74C5 FROM @>832F. 7338 * 09 H . 7339 t 74 BS G@>74DB. 733B 0 30 MOVE *>8309 BYTE TO @>8374 FROM G@>F531. 7340 * 09 H . 7341 u 75 BS G@>7504. 7343 3 33 MOVE >0975 BYTE TO @>8319 FROM G@>3601(@>8375). 734A * 2A MOVE *>8339 BYTE TO G@>0975 FROM G@>3838(@>8309). 7351 u 75 BS G@>754F. 7353 < 3C MOVE *>8309 BYTE TO VR75 FROM @ARG2. 7357 = 3D MOVE >0975 BYTE TO VR6E FROM @SYMTAB. 735C * 09 H . 735D u 75 BS G@>757C. 735F C 43 BR G@>6309. 7361 u 75 BS G@>758B. 7363 E 45 BR G@>6509. 7365 u 75 BS G@>75A6. 7367 F 46 BR G@>6609. 7369 u 75 BS G@>75BC. 736B J 4A BR G@>6A09. 736D u 75 BS G@>75C9. 736F N 4E BR G@>6E01. 7371 u 75 BS G@>75DC. 7373 O 4F BR G@>6F09. 7375 u 75 BS G@>75E6. 7377 Q 51 BR G@>7109. 7379 u 75 BS G@>75FE. 737B S 53 BR G@>7301. 737D v 76 BS G@>760A. 737F T 54 BR G@>7409. 7381 v 76 BS G@>7615. 7383 m 6D BS G@>6D09. 7385 v 76 BS G@>7620. 7387 * 82 NEG @>8301. 7389 v 76 BS G@>7620. 738B * 82 NEG @>8309. 738D v 76 BS G@>762A. 738F * 87 DCLR @>8309. 7391 u 75 BS G@>754F. 7393 < 3C MOVE *>8301 BYTE TO VR76 FROM @>833F. 7397 a 61 BS G@>6109. 7399 v 76 BS G@>7654. * "DEF refers " G73A5 BYTE >A4,>A5,>A6,>80,>D2,>C5,>C6,>C5,>D2,>D3,>80 * " to itself" G73B0 BYTE >D4,>CF,>80,>C9,>D4,>D3,>C5,>CC,>C6 * "called " G73B9 BYTE >C3,>C1,>CC,>CC,>C5,>C4,>80 * * "from" G73C0 BYTE >C6,>D2,>CF,>CD * "in Error" G73C4 BYTE >C9,>CE,>80,>A5,>D2,>D2,>CF,>D2 * * "* " G73CC BYTE >8A,>80 * "Warning" G73CE BYTE >B7,>C1,>D2,>CE,>C9,>CE,C7 G73D5 BYTE >07 * "Ready *" G73D6 BYTE >B2,>C5,>C1,>C4,>D9,>80 G73DD BYTE >0A * "Breakpoint" G73DE BYTE >A2,>D2,>C5,>C1,>CB,>D0,>CF,>C9,>CE,>D4 G73E8 BYTE >10 * "numeric " G73E9 BYTE >CE,>D5,>CD,>C5,>D2,>C9,>C3,>80 * "overflow" G73F1 BYTE >AF,>D6,>C5,>D2,>C6,>CC,>CF,>D7 G73F9 BYTE >0C * "syntax-" G73FA BYTE >B3,>D9,>CE,>D4,>C1,>D8,>8D * "Error" G7401 BYTE >A5,>D2,>D2,>CF,>D2,>CF,>D2 G7406 BYTE >18 * "illegal " G7407 BYTE >C9,>CC,>CC,>C5,>C7,>C1,>CC,>80 * "after " G740F BYTE >C1,>C6,>D4,>C5,>D2,>80 * "Subprogram" G7414 BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD G741F BYTE >10 * "unmatched " G7420 BYTE >D5,>CE,>CD,>C1,>D4,>C3,>C8,>C5,>C4,>80 * "Quotes" G742A BYTE >B1,>D5,>CF,>D4,>C5,>D3 G7430 BYTE >0D * "Name too " G7431 BYTE >AE,>C1,>CD,>C5,>80,>D4,>CF,>CF,>80 * "long" G743A BYTE >CC,>CF,>CE,>C7 G743E BYTE >16 * "String-" G743F BYTE >B3,>D4,>D2,>C9,>CE,>C7,>8D * "Name " G7446 BYTE >AE,>D5,>CD,>C2,>C5,>D2,>80 * "Mismatch" G744D BYTE >AD,>C9,>D3,>CD,>C1,>D4,>C3,>C8 G7455 BYTE >11 * "OPTION " G7456 BYTE >AF,>B0,>B4,>A9,>AF,>AE,>80 * "BASE " G745D BYTE >A2,>A1,>B3,>A5,>80 * "Error" G7462 BYTE >A5,>D2,>D2,>CF,>D2 G7467 BYTE >14 * "improperly" G7468 BYTE >C9,>CD,>D0,>D2,>CF,>D0,>C5,>D2,>CC,>D9 * "used Name" G7472 BYTE >80,>D5,>D3,>C5,>C4,>80,>AE,>C1,>CD,>C5 G747C BYTE >0B * "IMAGE-Error" G747D BYTE >A9,>AD,>A1,>A7,>A5,>8D,>A5,>D2,>D2,>CF,>D2 G7488 BYTE >0B * "Memory full" G7489 BYTE >AD,>C5,>CD,>CF,>D2,>D9,>80,>C6,>D5,>CC,>CC G7494 BYTE >0E * "Stack Overflow" G7495 BYTE >B3,>D4,>C1,>C3,>CB,>80,>AF,>D6,>C5,>D2,>C6,>CC,>CF,>D7 G74A3 BYTE >10 * "NEXT without " G74A4 BYTE >AE,>A5,>B8,>B4,>80,>D7,>C9,>D4,>C8,>CF,>D5,>D4,>80 * "FOR" G74B1 BYTE >A6,>AF,>B2 G74B4 BYTE >10 * "FOR/NEXT " G74B5 BYTE >A6,>AF,>B2,>8F,>AE,>A5,>B8,>B4,>80 * "Nesting" G74BE BYTE >AE,>C5,>D3,>D4,>C9,>CE,>C7 G74C6 BYTE >15 * "must be in " G74C7 BYTE >CD,>D5,>D3,>D4,>80,>C2,>C5,>80,>C9,>CE,>80 * "Subprogram" G74D1 BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD G74DB BYTE >19 * "recursive " G74DC BYTE >D2,>C5,>C3,>D5,>D2,>D3,>C9,>D6,>C5,>80 * "Subprogram " G74E6 BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD,>80 * "CALL" G74F1 BYTE >A3,>A1,>AC,>AC G74F5 BYTE >0E * "missing SUBEND" G74F6 BYTE >CD,>C9,>D3,>D3,>C9,>CE,>C7,>80,>B3,>B5,>A2,>A5,>AE,>A4 G7504 BYTE >14 * "RETURN ' G7505 BYTE >B2,>A5,>B4,>B5,>B2,>AE,>80 * "without " G750C BYTE >D7,>C9,>D4,>C8,>CF,>D5,>D4,>80 * "GOSUB" G7514 BYTE >A7,>AF,>B3,>B5,>A2 G7519 BYTE >10 * "String " G751A BYTE >B3,>D4,>D2,>C9,>CE,>CE,>C7,>80 * "truncated G7521 BYTE >D4,>D2,>D5,>CE,>C3,>C1,>D4,>C5,>C4 G752A BYTE >0D * "bad Subscript" G752B BYTE >C2,>C1,>C4,>80,>B3,>D5,>C2,>D3,>C3,>D2,>C9,>D0,>D4 G7538 BYTE >16 * "Speech-String " G7539 BYTE >B3,>D0,>C5,>C5,>C3,>C8,>8D,>B3,>D4,>D2,>C9,>CE,>C7,>80 * "too long" G7547 BYTE >D4,>CF,>CF,>80,>CC,>CF,>CE,>C7 G754F BYTE >0E * "Line not found" G7550 BYTE >AC,>C9,>CE,>C5,>80,>CE,>CF,>D4,>80,>C6,>CF,>D5,>CE,>C4 G755E BYTE >0F * "bad Line-Number" G755F BYTE >C2,>C1,>C4,>80,>AC,>C9,>CE,>C5,>8D,>AE,>D5,>CD,>C2,>C5,>D2 G756E BYTE >0D * "Line too long" G756F BYTE >AC,>C9,>CE,>C5,>80,>D4,>CF,>CF,>80,>CC,>CF,>CE,>C7 G757C BYTE >0E * "can,t continue" G757D BYTE >C3,>C1,>CE,>87,>D4,>80,>C3,>CF,>CE,>D4,>C9,>CE,>D5,>C5 G758B BYTE >1A * "Command " G758C BYTE >A3,>CF,>CD,>CD,>C1,>CE,>C4,>80 * "illegal " G7594 BYTE >C9,>CC,>CC,>C5,>C7,>C1,>CC,>80 * "in Program" G759C BYTE >C9,>CE,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD G75A6 BYTE >15 * "only Program" G75A7 BYTE >CF,>CE,>CC,>D9,>80,>CC,>C5,>C7,>C1,>CC * " in program" G75B1 BYTE >80,>C9,>CE,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD G75BC BYTE >0C * "bad Argument" G75BD BYTE >C2,>C1,>C4,>80,>A1,>D2,>C7,>D5,>CD,>C5,>CE,>D4 G75C9 BYTE >12 * "no Program " G75CA BYTE >CE,>CF,>80,>B0,>D2,>CF,>C7,>D2,>C1,>CD,>80 * "present" G75D5 BYTE >D0,>D2,>C5,>D3,>C5,>CE,>D4 G75DC BYTE >09 * "bad Value" G75DD BYTE >C2,>C1,>C4,>80,>B6,>C1,>CC,>D5,>C5 G75E6 BYTE >17 * "incorrect " G75E7 BYTE >C9,>CE,>C3,>CF,>D2,>D2,>C5,>C3,>D4,>80 * "Argument-List" G75F1 BYTE >A1,>D2,>C7,>D5,>CD,>C5,>CE,>D4,>8D,>AC,>C9,>D3,>D4 G75FE BYTE >0B * "INPUT-Error" G75FF BYTE >A9,>AE,>B0,>B5,>B4,>8D,>A5,>D2,>D2,>CF,>D2 G760A BYTE >0A * "DATA-Error" G760B BYTE >A4,>A1,>B4,>A1,>8D,>A5,>D2,>D2,>CF,>D2 G7615 BYTE >0A * "File-Error" G7616 BYTE >A6,>C9,>CC,>C5,>8D,>A5,>D2,>D2,>CF,>D2 G7620 BYTE >09 * "I/O-Error" G7621 BYTE >A9,>8F,>AF,>8D,>A5,>D2,>D2,>CF,>D2 G762A BYTE >14 * "Subprogram " G762B BYTE >B3,>D5,>C2,>D0,>D2,>CF,>C7,>D2,>C1,>CD,>80 * "not found" G7636 BYTE >CE,>CF,>D4,>80,>C6,>CF,>D5,>CE,>C4 G763F BYTE >14 * "Protection " G7640 BYTE >B0,>D2,>CF,>D4,>C5,>C3,>D4,>C9,>CF,>CE,>80 * "Violation" G764B BYTE >B6,>C9,>CF,>CC,>C1,>D4,>C9,>CF,>CE G7654 BYTE >16 * "unrecognized" G7655 BYTE >D5,>CE,>D2,>C5,>C3,>CF,>C7,>CE,>C9,>DA,>C5,>C4 * "Character" G7661 BYTE >80,>A3,>C8,>C1,>D2,>C1,>C3,>D4,>C5,>D2 G766B BYTE >14 * "unresolved " G766C BYTE >D5,>CE,>D2,>C5,>D3,>CF,>CC,>D6,>C5,>C4,>80 * "REFerence" G7677 BYTE >B2,>A5,>A6,>C5,>D2,>C5,>CE,>C3,>C5 766C * D5 DCEQ @>91D2(@>83C5),*>83CF(@>83CC). 7673 * D6 CEQ @>88C4(@>8380),>B2. 7678 * A5 DSUB V@>06C5,*>83C5(@PRTNFN). 767E * C3 EX @>88BD(@EXTRAM),>32A3. 7684 . 2E MOVE *FAC BYTE TO G@>03BD FROM @LINUM. 7689 0 30 MOVE *>8395 BYTE TO @LINUM FROM G@>BD80. 768E * 86 CLR @STLN. 7690 * 93 DDEC @RAMFRE. 7693 * BD DST @FREPTR,@HIVDP. 7696 * BD DST @STRSP,@HIVDP. 7699 * BD DST @STREND,@HIVDP. 769C * 86 CLR @BASE. 769E * 87 DCLR @SYMTAB. 76A0 * 87 DCLR @SUBTAB. 76A2 * 0F XML >8F. 76A4 * 00 RTN . 76A5 * 0F XML >8F. 76A7 * 02 RAND >00. 76A9 * 00 RTN . 76AA W 57 BR G@>7703. 76AC V 56 BR G@>76C8. 76AE W 57 BR G@>77BD. 76B0 V 56 BR G@>76D7. 76B2 X 58 BR G@>7819. 76B4 Y 59 BR G@>7949. 76B6 Y 59 BR G@>7949. 76B8 W 57 BR G@>77B4. 76BA @ 40 BR G@>6090. 76BC @ 40 BR G@>6062. 76BE @ 40 BR G@>6066. . 76C0 @ 40 BR G@>606E. 76C2 @ 40 BR G@>603A. 76C4 @ 40 BR G@>605A. 76C6 @ 40 BR G@>603E. 76C8 * DA CLOG @XFLAG,>40. 76CB @ 40 BR G@>603A. 76CD * 06 CALL G@>797E. 76D0 * D6 CEQ @CHAT,>B3. 76D3 v 76 BS G@>76CD. 76D5 Y 59 BR G@>7972. 76D7 * DA CLOG @XFLAG,>40. 76DA @ 40 BR G@>603A. 76DC * 8E CZ @PRGFLG. 76DE ` 60 BS G@>6090. 76E0 * DA CLOG @XFLAG,>02. 76E3 @ 40 BR G@>6052. 76E5 * 0F XML >79. 76E7 * 0F XML >7E. 76E9 * BYTE >00 76EA * F1 XGPL . 76EB * 0F XML >7E. 76ED * BYTE >00 76EE * C8 CHE @>830F,@>837E. 76F1 * 00 RTN . 76F2 * 01 RTNC . 76F3 * A2 ADD @CHAT,>D0. 76F6 v 76 BS G@>76FE. 76F8 * 92 DEC @CHAT. 76FA @ 40 BR G@>6052. 76FC * 90 INC @BASE. 76FE * B6 OR @XFLAG,>02. 7701 Y 59 BR G@>7970. 7703 * DA CLOG @XFLAG,>40. 7706 @ 40 BR G@>603A. 7708 * 8E CZ @PRGFLG. 770A ` 60 BS G@>6090. 770C * B6 OR @XFLAG,>84. 770F * 06 CALL G@>797E. 7712 * DA CLOG V*SYMTAB,>07. 7716 w 77 BS G@>77A4. 7718 * B6 OR @XFLAG,>80. 771B * B6 OR @FLAG,>08. 771E * D2 CGE @CHAT,>00. 7721 @ 40 BR G@>603A. 7723 * 06 CALL G@>7985. 7726 * B2 AND @FLAG,>F7. 7729 * 0F XML >7E. 772B * BYTE >00 772C * B6 OR @>830F,>7E. 772F * 00 RTN . 7730 * BE ST @>9142,>60. 7734 : 3A MOVE *PRTNFN BYTE TO VR42 FROM G@FREPTR(@SUBTAB). 773A 5 35 MOVE >001D BYTE TO V@CRNBUF FROM V*SYMTAB. 7741 * BD DST @FAC,V@>0824. 7745 * A5 DSUB @FAC,@SYMTAB. 7748 * A3 DADD @FAC,CRNBUF. 774C * BD DST V@>0824,@FAC. 7750 * BD DST @FREPTR,V@>0002(@SYMTAB). 7755 * 93 DDEC @FREPTR. 7757 * BF DST @SYMTAB,CRNBUF. 775B * CE CGT @CHAT,>83. 775E W 57 BR G@>779D. 7760 * 8E CZ @CHAT. 7762 w 77 BS G@>779D. 7764 * CE CGT @CHAT,>00. 7767 w 77 BS G@>7781. 7769 * D6 CEQ @CHAT,>C8. 776C w 77 BS G@>7773. 776E * D6 CEQ @CHAT,>C7. 7771 W 57 BR G@>777D. . 7773 * 0F XML >79. 7775 * 86 CLR @>8308. 7777 * BC ST @>8309,@CHAT. 777A * A1 DADD @PGMPTR,@>8308. 777D * 0F XML >79. 777F W 57 BR G@>775B. 7781 * B6 OR @XFLAG,>80. 7784 * 06 CALL G@>7985. 7787 * D7 DCEQ @SYMTAB,CRNBUF. 778B w 77 BS G@>775B. 778D * BD DST V@>0002(@SYMTAB),V@>0822. 7793 * BD DST V@>0822,@SYMTAB. 7797 * BF DST @SYMTAB,CRNBUF. 779B W 57 BR G@>775B. 779D * BD DST @SYMTAB,V@>0822. 77A1 * 0F XML >8F. 77A3 * 01 RTNC . 77A4 * 0F XML >7E. 77A6 * BYTE >00 77A7 * BE ST @>9142,>60. 77AB : 3A MOVE *PRTNFN BYTE TO VR42 FROM G@FREPTR(@SUBTAB). 77B1 * 0F XML >8F. 77B3 * 01 RTNC . *********************************************** G77B4 BR G7CA0 G77B6 BR G6040 G77B8 BR G7A0F G77BA DCLR *>8A2E G77BD BR G6761 G77BF CALL GETCHR G77C2 BS RTNSET G77C4 CEQ >20,@CHAT G77C7 BS GETNB G77C9 RTN ***************************************** G77CA DADD >0004,@VARW G77CE DCH @>832A,@VARW G77D1 BS RTNSET G77D3 ST V*VARW,@CHAT G77D7 CEQ >7F,@CHAT G77DA BS G67CA G77DC ADD >A0,@CHAT G77DF DINC @VARW G77E1 RTN ***************************************** G77E2 DCLR @FAC G77E4 CLR @BYTES G77E6 ADD >D0,@CHAT G77E9 CH >09,@CHAT G77EC BS G6806 G77EE DMUL >000A,@FAC G77F2 XML >03 G77F4 BR G6812 G77F6 ST @CHAT,@FAC1 G77F9 DADD @FAC2,@FAC G77FC GT G77FD BR G6812 G77FF INC @BYTES G7801 CALL GETCHR G7804 BR GETLN2 G7806 CZ @BYTES G7808 BS G680E G780A XML >03 G780C BS >6812 G780E ADD >30,@CHAT G781 RTN ****************************************** G7812 XML >83 G7814 CLR @PRGFLG G7816 BR ERRBLN G7818 CLR @RAMFLG G781B DST >FFE7,@RAMTOP G7820 DST @RAMTOP,@STLN G7824 DST @RAMTOP,@ENLN G7828 DST @STLN,@RAMFRE G782C DCEQ @RAMTOP,@RAMFRE G7831 BS >6836 G7833 DDEC @RAMFRE G7836 DST @MAXMEM,@FREPTR G7839 DST @MAXMEM,@STRSP G783C DST @MAXMEM,@STREND G783F DCLR @SYMTAB G7841 DCLR @SUBTAB G7843 DCLR V@SEXTRM G7846 CLR @BASE G7848 CLR @>6000 G784C DST VRAMVS,@VSTACK G7850 DST VRAMVS,@STVSPT G7854 DST VRAMVS,V@SAVEVP G7859 RTN *********************************************** G785A RTN G785B BS >7C7C G785D BS >7C7C G785F BS >7C7C G7861 BS >7C00 G7863 RTN *********************************************** G7864 BYTE >00,>00,>00,>00,>00,>00,>00 *********************************************** G786B SLL @VARW,@FAC G786E RTN *********************************************** G786F CALL >0017 G7872 MOVE >0008,G686A,#0 G7878 ST >10,V@>080F G787C MOVE >0010,V@>080F,V@>0810 G7883 CEQ >01,V@CONFLG G7887 BR G689A G7889 MOVE >0010,@FAC,V@VROAZ G788F CALL >BCD3 G7892 MOVE >0010,V@VROAZ,@FAC G7898 BR SPRINT G789A MOVE >0010,G685A,V@CHRCUR Load CURSOR DEFintion G78A1 DST >0400,@FAC G78A5 CALL >0018 G78A8 CZ V@CONFLG G78AB BS SPRINT G78AD DST >0600, @FAC G78B1 CALL >004A G78B4 CLR @MOTION G78B6 DCLR V@>0780 G78B9 MOVE >006E,V@>0781,V@>0782 G78C0 ST >D0,V@>0370 G78C4 DST >C000,V@>0300 G78C9 DCLR V@>0302 G78CC MOVE >006C,V@>0300,V@>0304 G78D3 RTN ********************************************** G78D4 CGT >83, @CHAT G78D7 BR >66CC G78D9 CZ @CHAT G78DB RTNC ********************************************** G78DC FETCH @FAC4 G78DE DST *FAC4,@FAC2 G78E2 DST @>0000(@>4C),@FAC6 G78E8 RTN *********************************************** G78E9 FETCH @FAC2 G78EB DST *FAC2, @FAC2 G78EF CLR @FAC6 G78F1 FETCH @FAC7 G78F3 CLR @FAC4 G78F5 FETCH @FAC5 G78F7 XML >86 G78F9 RTN *********************************************** *********************************************** G7E11 CALL >7DF3 ************************************************ G7E15 BYTE >18 G7E16 BR SPRINT G7E18 BR G63BB G7E1A BR TOPL10 G7E1C BR G6872 G7E1E BR G622D G7E20 BR >6020 G7E22 BR KILSYM G7E24 BR >6024 G7E26 BR GETNB G7E28 BR GETNB2 G7E2A BR GETCHR G7E2C BR GETLN G7E2E BR AUTO1 G7E30 BS TOPL02 G7E32 BR EDITLN G7E34 BR GRSUB1 G7E36 BR GWSUB G7E38 CLR @PRGFLG G7E3A CALL G6FE6 G7E3D SCAN G7E3E CALL G6FE6 G7E41 BACK >0F G7E43 DNEG @PAD6 G7E45 BS G6FE6 G7E47 B >8644 G7E4A CALL G6FE6 G7E4D CALL >066F G7E50 SRL >06,@>8307 G7E53 BS G6FE6 *********************************************** *********************************************** G7F21 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F29 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F21 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F39 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F41 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F49 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F51 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F59 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F61 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F69 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F71 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F79 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F81 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F89 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F91 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7F99 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FA1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FA9 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FB1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FB9 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FC1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FC9 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FD1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FD9 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FE1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FE9 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FF1 BYTE >00,>00,>00,>00,>00,>00,>00,>00 G7FF9 BYTE >00,>00,>00,>00,>00,>00,>00 ************************************************ END 4 Quote Link to comment Share on other sites More sharing options...
GDMike Posted October 25, 2021 Share Posted October 25, 2021 Nice flow Quote Link to comment Share on other sites More sharing options...
RXB Posted October 31, 2021 Share Posted October 31, 2021 Ok need someone in assembly to answer this curious thing done by Wilfred Winkler: In XB or EA or Basic you can do in Assembly: XML >16 * (Search Variable Name), leads back to GPL I got this from TI INTERN and this command resides in ROM 0 at >15D6 ************************************************************** But in XB 3 by Wilfred Winkler ROM 1 is the XML list is >7C the address for the routine is >15D6 Spoiler *********************************************************** AORG >6000 *********************************************************** 6000 DATA >0004,>0008,>0010,>0018,>0020,>0028,>6500,>001C ************************************************************* * XML table number 7 for Extended Basic - must have * * it's origin at >6010 * ************************************************************* * 0 1 2 3 4 5 6 7 6010 DATA >7438,>73D6,>60E2,>613A,>6550,>65A8,>65F2,>6446 * 7 8 9 A B C D 6020 DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,>15D6,>6EDC * E F DATA SPEED,CRNSEL ************************************************************* * XML table number 8 for Extended Basic - must have * * it's origin at >6030 * ************************************************************* * 0 1 2 3 4 5 6 7 6030 DATA CIF,CONTIN,RTNG,SCROLL,IO,>GREAD,GWRITE,DELREP * 8 9 A B C D E 6040 DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,>6156 * F DATA PSCAN * So why the heck did he do XML >7C for Assign a value to a variable? When he could have just done XML >16 that does exactly the same thing? Why do it this way? Why waste 2 bytes in ROM1 of XB 3 for this? Quote Link to comment Share on other sites More sharing options...
+TheBF Posted October 31, 2021 Share Posted October 31, 2021 1 hour ago, RXB said: Ok need someone in assembly to answer this curious thing done by Wilfred Winkler: In XB or EA or Basic you can do in Assembly: XML >16 * (Search Variable Name), leads back to GPL I got this from TI INTERN and this command resides in ROM 0 at >15D6 ************************************************************** But in XB 3 by Wilfred Winkler ROM 1 is the XML list is >7C the address for the routine is >15D6 Reveal hidden contents *********************************************************** AORG >6000 *********************************************************** 6000 DATA >0004,>0008,>0010,>0018,>0020,>0028,>6500,>001C ************************************************************* * XML table number 7 for Extended Basic - must have * * it's origin at >6010 * ************************************************************* * 0 1 2 3 4 5 6 7 6010 DATA >7438,>73D6,>60E2,>613A,>6550,>65A8,>65F2,>6446 * 7 8 9 A B C D 6020 DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,>15D6,>6EDC * E F DATA SPEED,CRNSEL ************************************************************* * XML table number 8 for Extended Basic - must have * * it's origin at >6030 * ************************************************************* * 0 1 2 3 4 5 6 7 6030 DATA CIF,CONTIN,RTNG,SCROLL,IO,>GREAD,GWRITE,DELREP * 8 9 A B C D E 6040 DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,>6156 * F DATA PSCAN * So why the heck did he do XML >7C for Assign a value to a variable? When he could have just done XML >16 that does exactly the same thing? Why do it this way? Why waste 2 bytes in ROM1 of XB 3 for this? Is there much overhead to swapping ROM banks? Maybe it removes the swapping while the program is running in ROM1. Swapping time could be significant for simple/small routines (just guessing) Quote Link to comment Share on other sites More sharing options...
RXB Posted November 1, 2021 Share Posted November 1, 2021 (edited) 5 hours ago, TheBF said: Is there much overhead to swapping ROM banks? Maybe it removes the swapping while the program is running in ROM1. Swapping time could be significant for simple/small routines (just guessing) Well it would be faster to just us the XML from GPL in first place that way XML >16 and no need for ROM switching at all after all the lower 4K ROM banks are the same! It just makes no sense why he did this so why I asked. Look he does this from GPL GROM in XB 3: GPL command XML >7C GPL command But he could have done this and not wasted 2 bytes in ROM with this instead: GPL command XML >16 GPL command His goes an extra step to go to >601C loads >15D6 then runs routine at >15D6 so takes 2 steps more to do same exact thing? There is no need for a delay as GPL runs interrupts all the time, so WHY did he do this? What am I missing here? Edited November 1, 2021 by RXB Quote Link to comment Share on other sites More sharing options...
+TheBF Posted November 1, 2021 Share Posted November 1, 2021 You might be missing nothing. Sometimes code gets released because it works. Perfection requires an infinite amount of time. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 15, 2021 Share Posted November 15, 2021 Last ZOOM yesterday 11/14/2021 Matt asked if RXB could load more VDP Registers from RXB command CALL POKER(vdp-register,value) for example: This sets text mode. | >100 CALL POKER(7,244,1,240) This is a delay loop. | >110 FOR L=1 TO 500 :: NEXT L This sets multi color mode | >120 CALL POKER(1,232) This is a delay loop. | >130 FOR L=1 TO 500 :: NEXT L This sets bit map mode. | >140 CALL POKER(0,2,1,2) This is a delay loop. | >150 FOR L=1 TO 500 :: NEXT L This sets normal XB mode. | >160 CALL POKER(0,0) If you do this change from Classic99 you can test F18 by loading registers from RXB 2020 at hex address >DB66 change the >08 to >40 this will change max VDP register of >08 to >40 which is 64 max registers as Matt requested. In Classic99 go to Options and select GRAM then check mark >C000 to change from GROM to GRAM in >C000 then got to RXB command mode and type: CALL POKEG(-9370,64) ! This change allows you to change F18 VDP registers from RXB Edit or Program modes. If you are using MESS you need to change the address at >DB66 from >08 to >40 as stated above. 2 1 Quote Link to comment Share on other sites More sharing options...
matthew180 Posted November 16, 2021 Share Posted November 16, 2021 Pretty cool. I'll need to be able to do this on real hardware though. Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 16, 2021 Share Posted November 16, 2021 16 hours ago, matthew180 said: Pretty cool. I'll need to be able to do this on real hardware though. You need to bug Arcadeshopper for a FinalGROM Just patch the RXB image before you load it. 1 1 1 Quote Link to comment Share on other sites More sharing options...
GDMike Posted November 16, 2021 Share Posted November 16, 2021 1 hour ago, Tursi said: You need to bug Arcadeshopper for a FinalGROM Meee too. One day... Quote Link to comment Share on other sites More sharing options...
RXB Posted November 18, 2021 Share Posted November 18, 2021 Ok new change to CALL CHAR(character-code,definition-string) similar but not same as XB 3 feature. CHAR subprogram PAGE C3 ------------------------------------------------------------- Format CALL CHAR(character-code,pattern-identifier [,...]) Description See EXTENDED BASIC MANUAL page 56 for more data. Addition characters 30 to 159 by redefined, but this affects sprites. Now 30 (CURSOR) and 31 (EDGE CHARACTER) to be redefined. Also 144 to 159 may be redefined if sprites are not used. Pattern-identifier increased from 64 to 240 string. Thus up to 15 characters may be defined in single command, 4 was old limit in XB allowed to be defined in XB manaual page 56 Programs This line will define all the | >100 CALL CHAR(ALL,"") characters as a empty string.| FOR NEXT loop 30 to 127 | >110 FOR X=30 to 127 This line prints a character. | >120 PRINT CHR$(X); NEXT to continue loop. | >130 NEXT X Reset characters 32 to 127 | >140 CALL CHARSET(ALL) This line repeats the program.| >150 GOTO 100 | Sets variable A$ up. | >100 A$="FF818181818181FF" Define all the characters same| >110 CALL CHAR(ALL,A$) | This line defines the cursor. | >120 CALL CHAR(30,"FF81FF") This line defines the edge | >130 CALL CHAR(31,"55") character. | | Options Sprites may not be used if characters 144 to 159 are being redefined for use. 15 characters now defined up from 4 in XB. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 19, 2021 Share Posted November 19, 2021 Well did some investigation for CALL FILES(0) so if you open a file after using CALL FILES(0) you get: 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 20, 2021 Share Posted November 20, 2021 RXB 2021 UPDATE: Added new features to CALL SCREEN 100 CALL SCREEN(16) ! Normal version in XB 110 CALL KEY("",5,K,S) ! waits for any key pressed 120 CALL SCREEN("OFF") ! Turns off screen 130 PRINT "OFF" 140 CALL KEY("",5,K,S) ! waits for any key pressed 150 CALL SCREEN("ON") ! Turns on screen 160 PRINT "ON" 170 CALL KEY("",5,K,S) ! waits for any key pressed 180 CALL SCREEN(16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) ! You can flip through colors quickly for some visual effects. 190 GOTO 180 Kind of cool if you use CALL SCREEN(7,5,7,5,7,5) you get a kind of blue purple screen with bands of red. A new tool to play with for visual effects. 3 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 29, 2021 Share Posted November 29, 2021 New video of RXB 2021 demo using CALL HCHAR, CALL VCHAR, CALL CLEAR and CALL CLEARPRINT all written in Assembly now. RXB 2021 CALL HCHAR, CALL VCHAR, CALL CLEAR AND CALL CLEARPRINT - YouTube 4 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted November 30, 2021 Share Posted November 30, 2021 Hi Rich There seems to be some things in RXB 2021 that would interest me from a game point of view, I like the rapid colour switching and stuff like that, for the visuals. When version 2021 is released I'd like to have a bash at making a game for it. Some sort of shoot 'em 'up with nice visuals that sort of thing. 3 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted November 30, 2021 Share Posted November 30, 2021 Very neat to see that hi performance XB. How much extra space did it take to add the ALC versus the old way? 1 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted November 30, 2021 Share Posted November 30, 2021 8 hours ago, Retrospect said: Hi Rich There seems to be some things in RXB 2021 that would interest me from a game point of view, I like the rapid colour switching and stuff like that, for the visuals. When version 2021 is released I'd like to have a bash at making a game for it. Some sort of shoot 'em 'up with nice visuals that sort of thing. Sure maybe you could beta test what I got so far. Quote Link to comment Share on other sites More sharing options...
RXB Posted November 30, 2021 Share Posted November 30, 2021 8 hours ago, TheBF said: Very neat to see that hi performance XB. How much extra space did it take to add the ALC versus the old way? So far I have added 1 8K bank of ROM from FinalGROM. But nothing is stopping me from adding more like 3 more. 3 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted November 30, 2021 Share Posted November 30, 2021 1 hour ago, RXB said: Sure maybe you could beta test what I got so far. Yes, I wouldn't mind. I'll be around later , to start the game rolling and see what's what. 1 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 4, 2021 Share Posted December 4, 2021 On 11/30/2021 at 2:33 AM, Retrospect said: Yes, I wouldn't mind. I'll be around later , to start the game rolling and see what's what. Here you go RXB 2021 BETA RXB 2021 BETA.zip 9 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 8, 2021 Share Posted December 8, 2021 To my dismay I have found that RXB 2021 BETA has a bug, who knew...LOL! CALL HCHAR, VCHAR and GCHAR share similar subprograms so if you use something like: CALL HCHAR(ROW,COL,ASC(SEG$(X$,P,1))) it will crash with SYNTAX ERROR. But you can use Y=ASC(SEG$(X$,P,1)) ::CALL HCHAR(ROW,COL,Y) Yes I am working on fixing this.... 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 9, 2021 Share Posted December 9, 2021 Ok accidently changes a GPL command in ASC(string) from BS to BR *********************************************************** * ASC(A$) - Takes the numeric value of the first character in A$. *********************************************************** ASC01 CALL PARFF Insure left parenthesis & par BR ERRSNM If not string CZ @FAC7 Empty string? BS ERRBA ERROR BAD ARGUMENT <<<<<<< Accidently changed the S to a R, once fixed it works again. ASC02 ST V*FAC4,@FAC1 Get the first character CLR @FAC Clear first byte BR LEN02 USE COMMON CODE >>>JUMP ALWAY *********************************************************** Please let me know if you guys find any BUGS? 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted December 10, 2021 Share Posted December 10, 2021 2021 12 09 16 01 51 - YouTube Demo of RXB 2021 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted December 10, 2021 Share Posted December 10, 2021 If it was easy everybody would do it. Interesting that adding faster graphics routines broke that game. I am sure the game could be fixed to work properly but ya, side-effects are un-predictable. HEX and MOD are nice additions to XB. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.