tHIS DOCUMENT HAS BEEN SLIGHTLY HTML-IZED BY a. fACHAT

a POSTSCRIPT VERSION THAT SHOWS MORE TEXT FORMATTING IS AVAILABLE IN los-96.PS.GZ

tUE aPR 7 10:50:13 mest 1998


cbm 8096

cOMMODORE cOMPUTER 

uSERS mANUAL

E-vERSION 1.0, AS OF 20 mAR 1998



tHIS IS THE (GERMAN) ELECTRONIC COPY OF THE 8096 uSERS 
mANUAL. iT IS IN FACT AN ADDENDUM TO THE cbm 8032 uSERS 
mANUAL, AS THE 8096 IS AN 8032 WITH AN ADDITIONAL 64KbYTE 
ram ON AN EXTENSION BOARD. iT DESCRIBES THE cOMMODORE 
los-96 {$60}OPERATING SYSTEM{$60}, THAT IS, IN FACT, AN IMPROVED 
basic. iT LOADS INTO THE NORMAL 32K AND USES THE 64K OF 
THE EXPANSION BOARD FOR basic PROGRAM (32K) AND VARIABLES 
(32K). tHE APPENDICES THAT DESCRIBE THE HARDWARE 
DIFFERENCES ARE MISSING, THOUGH.

tHE DOCUMENT HAS BEEN SCANNED AND ocr'S BY a. fACHAT IN 
MARCH 1998, AFTER RECEIVING A COPY FROM oLAF sEIBERT 
(tHANKS FOR THAT!). pROOFREADING BY a. fACHAT ALSO.

tHE REST OF THE DOCUMENT IS GERMAN, SO ONLY ONE REMARK: 
tHE PRINTER THAT PRINTED THIS DOCUMENT COULDN'T PRINT THE 
"^" AND THE "<". aLSO IT COULDN'T PRINT THE "@" AND THE 
"#" AND REPLACES THEM WITH "&SZLIG;" AND "&PARA;" RESP.

iN ADDITION TO THIS DOCUMENT THE uSERS mANUAL FOR THE 
8096 los-kit IS AVAILABLE. tHIS kIT IS AN IMPROVED 
PROGRAMMING ENVIRONMENT FOR los-96.




dIES IST DAS DEUTSCHE bEDIENUNGSHANDBUCH DES cOMMODORE 
8096 cOMPUTERS (IN ELEKTRONISCHER fORM). iN DER tAT IST 
ES NUR EIN aDDENDUM ZUM cbm 8032 hANDBUCH, DA DER 8096 
NUR EIN 8032 MIT ZUS&AUML;TZLICHEN 64KbYTE ram AUF EINER 
eRWEITERUNGSPLATINE IST. eS BESCHREIBT cOMMODORES los-96 
{$60}bETRIEBSSYSTEM', DAS EIGENTLICH NUR EIN VERBESSERTES 
basic IST. eS WIRD IN DIE NORMALEN 32K ram GELADEN UND 
NUTZT DIE 64K DES eRWEITERUNGSBOARDS F&UUML;R vARIABLEN (32K) 
UND basic pROGRAMM (32K). dIE aNH&AUML;NGE DIE DIE hARDWARE 
BESCHREIBEN FEHLEN LEIDER.

dAS dOKUMENT WURDE VON IM m&AUML;RZ 1998 VON a. fACHAT 
GESCANNT UND ocr'T, NACHDEM EINE kOPIE VON oLAF sEIBERT 
ZUR vERF&UUML;GUNG GESTELLT WURDE (vIELEN dANK!). gEGENGELESEN 
WURDE EBENFALLS VON a. fACHAT.

dER dRUCKER, DER DAS oRIGINAL GEDRUCKT HAT KONNTE KEIN 
"^" UND KEIN "<" DRUCKEN. aU&SZLIG;ERDEM ERSETZTE ER DAS "@" 
DURCH EIN "&SZLIG;" UND DAS "#" DURCH EIN "&PARA;".

zUS&AUML;TZLICH ZU DIESE dOKUMENT GIBT ES DAS 
bEDIENUNGSHANDBUCH ZUM 8096 los-kit, EINER VERBESSERTEN 
pROGRAMMIERUMGEBUNG F&UUML;R los-96



20. mAR. 1998  a. fACHAT


[tITLEPAGE sCAN]


iNHALTSVERZEICHNIS 1. &uUML;ERSICHT &UUML;BER eIGENSCHAFTEN UND &aUML;NDERUNGEN GEGEN&UUML;BER basic-4 2. gENERELLE eIGENSCHAFTEN 2.1 auto-sTART 2.2 load , "PRG" 2.3 aUFTEILUNG DES sPEICHERPLATZES 2.4 lOGISCHE UND PHYSIKALISCHE aDRESSEN 2.5 &aUML;NDERUNG DER aUFTEILUNG DES basic-sPEICHERBEREICHES 2.6 basic-sTACK 2.7 pROGRAMM&AUML;NDERUNGEN OHNE vARIABLENVERLUST / oVERLAY 2.8 nEUE tASTEN-fUNKTIONEN DURCH esc 2.9 aUTOMATISCHE zEILENNUMMERIERUNG 2.10 eINGABE &UUML;BERLANGER zEILEN 2.11 &uUML;BER DEN gEBRAUCH VON VIELEN sTATEMENTS IN EINER pROGRAMM-zEILE 2.12 fEHLERMEIDUNGEN 2.13 cASSETTENVERWALTUNG UND fLOPPY-vOREINSTELLUNG 2.14 input KANN 255 bYTES LESEN 2.15 zERO-pAGE-aDRESSEN / tASTATURPUFFER 2.16 rom 3. gE&AUML;NDERTE ODER NEUE basic-aNWEISUNGEN 3.1 load 3.2 save 3.3 verify 3.4 list 3.5 delete 3.6 fre 3.7 clr 3.8 redim 3.9 restore 3.10 poke / peek / sys / wait 3.11 gETSTRING 3.12 iNSTRING 3.13 mIDSTRING 3.14 asc / chr$ 3.15 catalog$ 3.16 if then else 3.17 on error goto / el, ec, eo / resume 3.18 dispose 3.19 input / print@(ZEILE,SPALTE) 3.20 using 3.21 input using aNH&AUML;NGE: eINBAU DER pLATINE eIGENSCHAFTEN DER hARDWARE / uMSCHALTUNG DER 32k-pAGES kURZE bESCHREIBUNG DES dISKETTENINHALTES


1. &uUML;BERSICHT &UUML;BER eIGENSCHAFTEN VON los-96 UND &aUML;NDERUNGEN GEGEN&UUML;BER basic-4 aLLE eIGENSCHAFTEN VON basic-4 BZW. DES cbm 8032 WERDEN ALS BEKANNT VORAUSGESETZT. dIESES hANDBUCH IST EINE eRG&AUML;NZUNG ZUM cbm 8032 hANDBUCH, KEINESFALLS EIN eRSATZ DAF&UUML;R! los-96 (lOADABLE oPERATING sYSTEM FOR 96k mACHINE) IST EIN basic-4 KOMPATIBLES basic/bETRIEBSSYSTEM F&UUML;R cbm 8096 (cbm 8032 MIT 64k-eRWEITERUNGSPLATINE VON cOMMODORE). los-96 WIRD AUF tASTENDRUCK VON dISKETTE IN DEN ram GELADEN UND STELLT F&UUML;R basic 64k aRBEITSSPEICHER ZUR vERF&UUML;GUNG, UNTERTEILT IN 32k F&UUML;R pROGRAMM UND 32k F&UUML;R vARIABLE. dIE FOLGENDEN sTICHPUNKTE SOLLEN EINE SCHNELLE &uUML;BERSICHT GEBEN. aUSF&UUML;HRLICHE iNFORMATIONEN DAR&UUML;BER FINDEN SICH ANSCHLIE&SZLIG;END. basic-sTACK (UNBEGRENZTE for / gosub tIEFE) pROGRAMM&AUML;NDERUNG OHNE vARIABLENVERIUST VEREINFACHTES overlay esc-tASTENFUNKTIONEN F&UUML;R ascii-ctl-cODES UND sCREEN eDITOR aUTOMATISCHE zEILENNUMERIERUNG L&OUML;SCHEN VON zEILENBEREICHEN basic-zEILEN BIS ZU 250 bYTES l&AUML;NGE fEHLERMELDUNG MIT aNGABE DER fEHLERSTELLE KEINE rEKORDERVERWALTUNG MEHR vOREINSTELLUNG 8 F&UUML;R gER&AUML;T BEI load / save / verify input KANN 255 zEICHEN LESEN call BZW func F&UUML;R ZUS&AUML;TZLICH LADBARE mASCHINEN-rOUTINEN ERWEITERTE UND NEUE basic-aNWEISUNGEN SIEHE iNHALTSVERZEICHNIS


2. gENERELLE eIGENSCHAFTEN 2.1 aUTO-sTART wENN los-96 DIE ERSTE dATEI AUF dISKETTE IST, KANN NACH DEM eINSCHALTEN DER aNLAGE los-96 MIT shift/run GELADEN UND GESTARTET WERDEN. aNDERENFALLS WIRD los-96 AUS basic-4 DURCH dload "los*" GELADEN UND MIT run GESTARTET. iN JEDEM fALL VERSUCHT los-96 NACH SEINEM sTART DAS pROGRAMM "start*" VON EINER DER BEIDEN dISKETTEN VON gER&AUML;T 8 ZU LADEN UND ZU STARTEN. dADURCH KANN DAS 8096- sYSTEM NACH DEM eINSCHALTEN DURCH EINEN tASTENDRUCK BIS AUF aNWENDERPROGRAMMEBENE GEBRACHT WERDEN. iST DAS pROGRAMM "start*" NICHT VORHANDEN, WIRD MIT file not found error ABGEBROCHEN. dIESE mELDUNG HAT F&UUML;R rECHNER UND fLOPPY KEINE WEITEREN kONSEQUENZEN; DER rECHNER WARTET IM dIREKTMODUS AUF aNWEISUNGEN. dURCH ready (OHNE pUNKT) K&OUML;NNEN sIE SEHEN, DA&SZLIG; DER rECHNER NICHT UNTER basic-4 (ready.) ARBEITET. 2.2 basic-4-pROGRAMME LADEN basic-4 pROGRAMME LAUFEN UNTER los-96, SOFERN AUSSCHLIE&SZLIG;LICH IN basic PROGRAMMIERT WURDE. dA ABER basic-4 pROGRAMME AB aDRESSE 1025 GELADEN WERDEN UND los- 96-pROGRAMME NORMALERWEISE AB 65537, MU&SZLIG; DURCH EIN kOMMA UNMITTELBAR NACH load ERZWUNGEN WERDEN, DA&SZLIG; DAS pROGRAMM AN DEN AKTUELLEN aNFANG DES basic-pROGRAMMBEREICHES GELADEN WIRD: LOAD , "ALTES PROGRAMM" achtung: wENN 'ALTE' basic-pROGRAMME DURCH LOAD OHNE kOMMA GELADEN WERDEN, ST&UUML;RZT los-96 AB, DA DAS basic-pROGRAMM INS bETRIEBSSYSTEM GELADEN WIRD!


2.3 aUFTEILUNG DES sPEICHERPLATZES PHYSIK. LOGISCH 128k ------------------------------------ 65536 131072 vEKTOREN UND uMSCHALTER --------------------- 65520 131056 --------------------- (52/53) sTRINGS --------------------- (48/49) vARIABLENSPE- --------------------- (46/47) ICHER iNDIZIERTE vARIABLE (fELDER) --------------------- (44/45) eINFACHE vARIABLE (42/43) 96k ------------------------------------ 32768 98304 96k ------------------------------------ 65536 98304 vEKTOREN UND uMSCHALTER --------------------- 65520 98288 --------------------- (241/242) pROGRAMMSPE- basic - sTACK ICHER --------------------- (239/240) --------------------- (248/249) basic - pROGRAMM --------------------- (40/41) 64k ------------------------------------ 32768 65536 64k ------------------------------------ 65536 65536 rom - bEREICH (UNGENUTZT) / e-a- pORTS / bILDSCHIRM (WIE 8032) 32k ------------------------------------ 32768 32768 vERL&AUML;NGERUNG F&UUML;R basic-prg ODER vARIABLE ODER EIGENE mASCHINENPROG. ODER sYSTEM-eRWEITERUNGEN --------------------- (1252/1253) bETRIEBSSYSTEM bETRIEBSSYSTEM --------------------- 1024 bs-aRBEITSBEREICH --------------------- 768 iNPUT-pUFFER --------------------- 512 pROZESSOR-sTACK --------------------- 256 zEROPAGE 0 ------------------------------------ 0


2.4 lOGISCHE UND PHYSIKALISCHE aDRESSEN dA DER pROZESSOR 6502 NUR 64k ADRESSIEREN KANN, MU&SZLIG; DER LOGISCHE aDRESSRAUM VON 128k DURCH uMSCHALTEN (pAGING) VON sPEICHERBEREICHEN AUF DEN PHYSIKALISCHEN aDRESSRAUM VON 64k ABGEBILDET WERDEN. eINE KLEINE sKIZZE SOLL DIE aNORDNUNG DER sPEICHERB&AUML;NKE VERANSCHAULICHEN: 32 - 64 64 - 96 96 - 128 64k--------- ---------- ---------- rom : prg : var 32k------------------------------- b e t r i e b s s y s t e m 0 ------------------------------- dER GESAMTE LOGISCHE aDRESSRAUM KANN DURCH DIE basic- bEFEHLE poke, peek, sys UND wait ERREICHT WERDEN. dIE ERFORDERLICHEN uMSCHALTUNGEN WERDEN AUTOMATISCH VORGENOMMEN. dAGEGEN ENTHALTEN ALLE zEIGER (Z.b. 52/53) PHYSIKALISCHE aDRESSEN! dIESE dISKREPANZ IST UNBEDINGT ZU BEACHTEN, WENN DURCH zEIGER DIE aUFTEILUNG DES aRBEITSSPEICHERS MANIPULIERT WERDEN SOLL. 2.5 &aUML;NDERUNG DER aUFTEILUNG DES basic-sPEICHERBEREICHES dER 8096 VERF&UUML;GT &UUML;BER 96k ram. dAVON BEN&OUML;TIGT DAS bETRIEBSSYSTEM 32k. dIE 64k F&UUML;R DAS basic-pROGRAMM TEILEN SICH AUF IN 32k F&UUML;R DAS pROGRAMM UND 32k F&UUML;R DIE vARIABLEN. f&UUML;R sONDERF&AUML;LLE SIND FOLGENDE &aUML;NDERUNGEN DER sTANDARD- eINTEILUNG M&OUML;GLICH: zWISCHEN DER oBERGRENZE DER vARIABLENVERWALTUNG (52/53) UND DER aDRESSE 65520 KANN EIN VOR basic GESCH&UUML;TZTER bEREICH GEBILDET WERDEN, INDEM (52/53) ENTSPRECHEND HERUNTERGESETZT WIRD. wOLLEN sIE Z.b. 10k RESERVIEREN, SCHREIBEN sIE AN DEN aNFANG iHRES pROGRAMMES DIE bEFEHLSFOLGE: 10 A = 20000 : INT(A/256) : POKE 52,A-H*256 : POKE 53,H : CLR aCHTEN sIE UNBEDINGT DARAUF, DA&SZLIG; A NICHT GR&OUML;&SZLIG;ER ALS 65519 SEIN DARF; DIES W&UUML;RDE ZUM aBSTURZ DES sYSTEMS F&UUML;HREN! aNALOG DAZU K&OUML;NNEN sIE AM OBEREN eNDE DES pROGRAMMBEREICHES EBENFALLS EINEN GESCH&UUML;TZTEN bEREICH RESERVIEREN, INDEM sIE DIE zELLEN (241/242) MIT DEN ENTSPRECHENDEN wERTEN VERSEHEN. dIE gRENZE 65519 GILT HIER EBENFALLS. aLTERNATIV ODER ZUS&AUML;TZLICH ZUR rESERVIERUNG AM OBEREN eNDE KANN DURCH &aUML;NDERUNG DER wERTE IN (42/43) BZW. (40/41) AM UNTEREN eNDE EIN RESERVIERTER bEREICH GESCHAFFEN WERDEN, INDEM DIE iNHALTE DER zEIGER GR&OUML;&SZLIG;ER ALS 32766 GEMACHT WERDEN. uMGEKEHRT KANN ENTWEDER DER pROGRAMM ODER vARIABLENBEREICH (EXKLUSIV!) NACH UNTEN VERL&AUML;NGERT WERDEN, INDEM DIE iNHALTE DER zEIGER KLEINER ALS 32768 GEMACHT WERDEN. dABEI D&UUML;RFEN ABER DAS bETRIEBSSYSTEM SELBST UND EVENTUELLE eRWEITERUNGSBEREICHE NICHT VERLETZT WERDEN.


bEI &aUML;NDERUNG DES pROGRAMM-aNFANGES IST FOLGENDES ZU BEACHTEN: iN DIE zELLE uNTERGRENZE-1 MU&SZLIG; 0 GEPOKT WERDEN: 10 A = 30000 : INT(A/256) : PAKE 40,A-H*256 : POKE 41,H : IF A-1 (KLEINER ALS) 32768 THEN OF=0 : EISE OF=32768 20 POKE A-L+OF,0 : NEW dIESE aNWEISUNGEN K&OUML;NNEN sIE NUR DANN IM pROGRAMM AUSF&UUML;HREN, WENN A NICHT INNER- HALB DES JETZIGEN pROGRAMMBEREICHES (40/41) - (248/249) LIEGT. aNDERENFALLS M&UUML;SSEN sIE DIESE bEFEHLE IM dIREKTMODUS AUSF&UUML;HREN. load L&AUML;DT pROGRAMME NORMALERWEISE AB DER sTELLE, AB DER SIE ABGESPEICHERT WURDEN. wENN sIE NICHT SICHER SIND, OB EIN ZU LADENDES pROGRAMM AB DER sTELLE (40/41) ABGESPEICHERT WURDE, M&UUML;SSEN sIE ES DURCH 'LOAD , "NAME' (MIT kOMMA) LADEN! 2.6 basic-sTACK dIE vERWALTUNG DER gosub-return UND for-next sTRUKTUREN LIEGT NICHT MEHR WIE BEIM 8032 IM pROZESSORSTACK, SONDERN IN EINEM EIGENEN basic-sTACK. dIESER sTACK W&AUML;CHST AB DER oBERGRENZE DES pROGRAMMSPEICHERS NACH UNTEN DEM pROGRAMMENDE ENTGEGEN. &aUML;HNLICH WIE BEI DER sTRINGVERWALTUNG TEILT SICH ALSO DAS pROGRAMM UND DER sTACK DYNAMISCH EINEN sPEICHERBEREICH. dIES HAT FOLGENDE kONSEQUENZEN: dIE BEIM 8032 VORHANDENE bEGRENZUNG AUF Z.b. MAXIMAL 26 gosub-eBENEN ENTF&AUML;LLT. iN DER rEGEL WIRD DIE NEUE fEHLERMELDUNG basic stack overflow error ALSO KAUM VORKOMMEN. aNDERERSEITS HABEN sIE NICHT EINE EINZIGE eBENE ZUR vERF&UUML;GUNG, WENN sIE DEN basic-sPEICHER BIS ZUM LETZTEN bYTE MIT pROGRAMM VOLLSTOPFEN. aCHTEN sIE ALSO DARAUF, DA_ sIE NACH DEM lADEN EINES pROGRAMMS WENIGSTENS 200 bYTES FREI HABEN (FRE(0)). eXAKT BEN&OUML;TIGT WIE BEIM 8032 JEDES gosub 5 bYTES UND JEDE for-sCHLEIFE 18 bYTES AUF DEM sTACK. f&UUML;R 20 uNTERPROGRAMM-eBENEN UND 5 sCHLEIFEN-eBENEN BEN&OUML;TIGEN sIE ALSO 190 bYTES (20*5+10*18) F&UUML;R DEN sTACK. dIE aBWICKLUNG DER aUSDRUCKSAUSWERTUNG LIEGT WEITERHIN IM pROZESSOR-sTACK, HIER GILT ALSO NOCH DIE eINSCHR&AUML;NKUNG AUF 10 kLAMMEREBENEN. dER zEIGER AUF DIE uNTERGRENZE DES sTACK STEHT IN (239/240). dER sTACK KANN NACH UNTEN WACHSEN BIS (248/249), DER oBERGRENZE DES basic-pROGRAMMS. bEACHTEN sIE IN zUSAMMENHANG MIT DEM sTACK DIE NEUE aNWEISUNG dispose.


2.7 pROGRAMM&AUML;NDERUNG OHNE vARIABLENVERIUST / oVERLAY dURCH DIE AUS ANDEREN gR&UUML;NDEN ERFORDERLICHE tRENNUNG VON pROGRAMM- UND vARIABLENSPEICHER ERGIBT SICH ZWANGSL&AUML;UFIG, DA&SZLIG; vARIABLE WEGEN pROGRAMM&AUML;NDERUNGEN NICHT NOTWENDIGERWEISE GEL&OUML;SCHT WERDEN M&UUML;SSEN. dIES BRINGT SEHR GRO&SZLIG;E aNNEHMLICHKEITEN IN DER tESTPHASE. aUS DEN-SELBEN gRUND IST F&UUML;R pROGRAMMOVERLAY NUN NICHT MEHR DIE rESERVIERUNG DES BEN&OUML;TIGTEN sPEICHERPLATZES ERFORDERLICH. iN DER sTRINGVERWALTUNG MU&SZLIG;TE DIE pIATZ-oPTIMIERUNG ENTFALLEN, DIE sTRING-kONSTANTE IM pROGRAMM VERWALTET HAT. aUSNAHMSLOS JEDER iNHALT VON sTRINGVARIABLEN STEHT NUN IM sTRINGARBEITSBEREICH! dAMIT IST EINE F&UUML;R oVERLAY T&UUML;CKISCHE eIGENSCHAFT DER sPEICHERVERWALTUNG ENTFERNT WORDEN. tROTZDEM SIND BEI oVERLAY BZW. NACH pROGRAMM&AUML;NDERUNGEN EINIGE pUNKTE ZU BEACHTEN: wIE BEIM 8032 LEGT DIE dEFINITION EINER fUNKTION (def fn) EINEN zEIGER IN EINER pSEUDOVARIABLEN AB. dIESER zEIGER KENNZEICHNET DIE sTELLE, WO DIE fUNKTION IM pROGRAMMSPEICHER BEGINNT. wIRD NUN NACH aBARBEITUNG DER dEFINITION DAS pROGRAMM GE&AUML;NDERT, SEI ES DURCH &aUML;NDERUNGEN VON hAND ODER DURCH load BEIM oVERLAY, WIRD BEI aUFRUF DER fUNKTION EINE fEHLERMEIDUNG ERFOLGEN, DA AN DER DURCH DEN zEIGER GEMERKTEN sTELLE NUN ETWAS NICHT VERWERTBARES STEHT. fUNKTIONSDEFINITIONEN M&UUML;SSEN ALSO NACH pROGRAMM&AUML;NDERUNGEN WIEDERHOLT WERDEN! f&UUML;R read-data, gosub-return UND for-next EXISTIEREN EBENFALLS zEIGER, DIE DURCH pROGRAMM&AUML;NDERUNGEN NICHT VER&AUML;NDERT WERDEN, ALSO POTENTIELL FALSCH SEIN WERDEN. wENN ALSO DAS pROGRAMM NACH &aUML;NDERUNGEN AUF read, return ODER next L&AUML;UFT, KANN ES ZU fEHLERMELDUNGEN KOMMEN. sTRENGGENOMMEN SIND ZWEI f&AUML;LLE ZU UNTERSCHEIDEN. bEI &aUML;NDERUNGEN AM pROGRAMM VERSCHIEBT SICH NUR DER pROGRAMMBEREICH AB DER &aUML;NDERUNGSSTELLE BIS ZUM pROGRAMMENDE. dER bEREICH VOM pROGRAMMANFANG BIS ZUR &aUML;NDERUNGSSTELLE BLEIBT DAGEGEN UNVER&AUML;NDERT. wENN DIE ENTSPRECHENDEN zEIGER AUF DEN VORDEREN bEREICH VERWEISEN, GIBT ES BEIM wEITERLAUF KEINE kOMPLIKATIONEN. sCHLIE&SZLIG;LICH IST NOCH cont ZU ERW&AUML;HNEN. sOGAR DIESE aNWEISUNG IST NACH pROGRAMM&AUML;NDERUNGEN PRINZIPIELL ZUGELASSEN. sELBSTVERST&AUML;NDLICH GELTEN DIE EBEN GEMACHTEN hINWEISE ENTSPRECHEND. zUSAMMENFASSEND KANN MAN SAGEN: wENN sIE DIE GEMACHTEN hINWEISE UND uNTERSCHEIDUNGEN VERSTEHEN UND IN JEDEM eINZELFALL ANWENDEN, K&OUML;NNEN sIE NACH &aUML;NDERUNGEN AM pROGRAMM DAS pROGRAMM DURCH cont ODER goto WARM STARTEN. sOLLTEN sIE ABER DIESE &uUML;BERLEGUNGEN NICHT DURCHF&UUML;HREN WOLLEN, K&OUML;NNEN sIE, WIE BISHER AUSSCHLIE_LICH M&OUML;GLICH, DAS pROGRAMM DURCH run KALT STARTEN. aLLERDINGS D&UUML;RFEN sIE IN DIESEM fALL NICHT run ZEILE DURCH goto ZEILE ERSETZEN, DA SONST DOCH WARM GESTARTET WIRD.


2.8 nEUE tASTEN-fUNKTIONEN DURCH esc dIE esc-tASTE WIRD WIE EINE control-tASTE BEHANDELT; WIRD SIE GLEICHZEITIG MIT ANDEREN tASTEN GEDR&UUML;CKT, HABEN DIESE EINE sONDERBEDEUTUNG BZW. ERZEUGEN ANDERE cODES ALS SIE BISHER &UUML;BER DIE tASTATUR ERREICHBAR WAREN: esc curs up bILDSCHIRM NACH UNTEN ROLLEN curs down bILDSCHIRM NACH OBEN ROLLEN (shift) curs right zEILE RECHTS VOM cURSOR L&OUML;SCHEN curs left zEILE LINKS VOM cURSOR L&OUML;SCHEN (shift) del zEILE L&OUML;SCHEN inst (shift) zEILE EINF&UUML;GEN home bILDSCHIRMFENSTER LINKS OBEN DEFINIEREN clr (shift) bILDSCHIRMFENSTER RECHTS UNTEN DEFINIEREN tab N&AUML;CHSTES bLANK SUCHEN tab (shift) N&AUML;CHSTES nICHT-bLANK SUCHEN stop sPRUNG IN mONITOR (WIRD IM iNTERRUPT ABGEFRAGT) return cURSOR IN ERSTE sPALTE DER N&AUML;CHSTEN zEILE, fLAGS L&OUML;SCHEN, zEILE NICHT &UUML;BERNEHMEN bEI DIESEN fUNKTIONEN IST DIE AUTOMATISCHE dAUERFUNKTION UNTERBUNDEN, DA IHR UNBEABSICHTIGTES eINSETZEN &aUML;RGER VERURSACHEN KANN. mIT DER repeat-tASTE IST ABER AUCH HIER dAUERFUNKTION M&OUML;GLICH. wERDEN DIE bUCHSTABENTASTEN GLEICHZEITIG MIT esc GEDR&UUML;CKT, SO ERGEBEN SICH DIE ascii-cONTROL-cODES VON 0 BIS 31 (Z.b. esc A = 1). wIRD DIE esc-tASTE ALLEINE GEDR&UUML;CKT, SO HAT SIE DIESELBE wIRKUNG WIE BEIM 8032. wIRD SIE ZUSAMMEN MIT ANDEREN tASTEN GEDR&UUML;CKT, SO HAT SIE NICHT DIESE FLAG-L&OUML;SCHENDE wIRKUNG! (aUSNAHME: return) 2.9 aUTOMATISCHE zEILENNUMMERIERUNG bEI DER eINGABE VON pROGRAMMZEILEN WIRD DIE N&AUML;CHSTE zEILENNUMMER AUTOMATISCH VORGEGEBEN, WENN DIE zEILENNUMMER DER GERADE DURCH return &UUML;BERGEBENEN zEILE IN DER ERSTEN sPALTE BEGINNT. dIES IST BEI DER eINGABE VON NEUEN zEILEN DIE rEGEL. dIE dIFFERENZ AUS DER GERADE EINGEGEBENEN nUMMER ZUR VORHERGEHENDEN IM pROGRAMM BESTIMMT DIE dIFFERENZ ZUR N&AUML;CHSTEN nUMMER. vORGEGEBENE nUMMERN K&OUML;NNEN BEI bEDARF OHNE WEITERES GE&AUML;NDERT WERDEN. bEISPIEL: dIE zEILE 15 IST BEREITS EINGEGEBEN UND sIE &UUML;BERGEBEN DURCH return DIE zEILE 20.aLS vORGABE ERHALTEN sIE zEILE 25: 15 ... (BEREITS EINGEGEBEN) 20 (GERADE DURCH return &UUML;BERGEBEN) 25 (vORGABE DURCH AUTO-NUMBER) dIE N&AUML;CHSTE nUMMER WIRD NICHT VORGEGEBEN, WENN SIE BEREITS IM pROGRAMM EXISTIERT, ODER WENN ZWISCHEN DER VORZUGEBENDEN UND DER EBEN DURCH return &uUML;BERGEBENEN BEREITS EINE IM pROGRAMM VORKOMMT.


bEISPIEL: 15 ... (BEREITS VORHANDEN) 25 ... (BEREITS VORHANDEN) 20 ... (GERADE DURCH return &UUML;BERGEBEN) 25 WIRD NICHT VORGEGEBEN, DA SONST UNBEABSICHTIGT EINE zEILE GEL&OUML;SCHT BZW. &UUML;BERSCHRIEBEN WERDEN K&OUML;NNTE. 15 ... (BEREITS VORHANDEN) 25 ... (BEREITS VORHANDEN) 21 ... (GERADE DURCH return &UUML;BERGEBEN) 27 M&UUML;SSTE VORGEGEBEN WERDEN. dA DANN ABER DIE zEILE 25 ZWISCHEN 21 UND 27 LIEGEN W&UUML;RDE, WIRD NICHTS VORGEGEBEN, DA ES NORMALERWEISE NICHT BEABSICHTIGT IST, ZWISCHEN AUTOMATISCH NUMMERIERTEN zEILEN 'HEIMLICH' NOCH ANDERE ZU HABEN. dIE AUTOMATISCHE aUTO-fUNKTION IST ANFANGS ETWAS UNGEWOHNT, WENN sIE GEW&OUML;HNT SIND, IN nUMMERN-bL&OUML;CKEN ZU PROGRAMMIEREN. bEISPIEL: dIE zEILEN 10,20 UND 30 SEIEN VORHANDEN UND sIE GEBEN zEILE 100 EIN, WEIL EIN NEUER pROGRAMMABSCHNITT BEGINNT. dANN WIRD ALS N&AUML;CHSTE zEILE 170 VORGEGEBEN. &uUML;BERSCHREIBEN sIE DIE 170 EINFACH DURCH 110 UND DIE N&AUML;CHSTE vORGABE WIRD DIE DADURCH DEFINIERTE sCHRITTWEITE ENTHALTEN. sOBALD DIE zEILENNUMMER NICHT IN DER ERSTEN sPALTE STEHT (Z.b. NACH list), IST aUTO ABGESCHALTET. dADURCH WERDEN U.A. UNBEABSICHTIGTE vORGABEN BEIM eDIEREN VON BEREITS VORHANDENEN pROGRAMMEN VERMIEDEN. eINE zEILENNUMMER MIT LEERER zEILE DAHINTER L&OUML;SCHT DIE ENTSPRECHENDE zEILE UND SCHALTET auto AB. 2.10 eINGABE &UUML;BERLANGER zEILEN dER iNTERPRETER DES 8096 IST IN DER lAGE, BIS ZU 250 bYTES LANGE zEILEN ZU VERARBEITEN. dIESE l&AUML;NGE BEZIEHT SICH AUF DEN &UUML;BERSETZTEN zUSTAND, WENN DIE bEFEHLSW&OUML;RTER IN JEWEILS 1 bYTE CODIERT SIND. eINE DERART LANGE zEILE WIRD AUF DEM bILDSCHIRM MEHRERE zEILEN IN aNSPRUCH NEHMEN. uM SIE DENNOCH EIN- UND AUSGEBEN ZU K&OUML;NNEN, SIND DIE FOLGENDEN rEGELN WICHTIG: dER aNFANG EINER pROGRAMMZEILE, ALSO DIE ERSTE bILDSCHIRMZEILE VON MEHREREN, DIE EINE pROGRAMMZEILE BILDEN SOLLEN, MU&SZLIG; IN sPALTE 1 ODER 2 BEGINNEN! aLLE fOLGEZEILEN M&UUML;SSEN IN sPALTE 3 ODER DAHINTER BEGINNEN. dAS eNDE EINER pROGRAMMZEILE WIRD DURCH EINE lEERZEILE ODER DURCH EINE zEILE, DIE IN sPALTE 1 ODER 2 BEGINNT, ANGEGEBEN. dIE tASTENFUNKTIONEN del UND inst BEZIEHEN SICH IMMER AUF EINE GANZE pROGRAMMZEILE. wENN IN sPALTE 80 EIN zEICHEN GESCHRIEBEN WURDE, WIRD DAS N&AUML;CHSTE AUTOMATISCH IN sPALTE 3 (NICHT 1) GESCHRIEBEN.


bEI DER eINGABE WERDEN ALLE bLANKS, DIE NICHT ZWISCHEN aNF&UUML;HRUNGSZEICHEN ODER HINTER rem STEHEN, IGNORIERT. dIES HAT ZWEI kONSEQUENZEN: eRSTENS KANN NUN list bLANKS NACH sTATEMENTS UND EINIGEN BESTIMMTEN zEICHEN AUSGEBEN, WODURCH DIE lESBARKEIT WESENTLICH VERBESSERT WIRD. tROTZDEM ARTET DIE &uUML;BERNAHME SOLCHER zEILEN NICHT IN pLATZVERSCHWENDUNG AUS. zWEITENS K&OUML;NNEN sIE Z.b. sTATEMENT F&UUML;R sTATEMENT UNTEREINANDER SCHREIBEN UND TROTZDEM WIRD EINE KOMPAKTE pROGRAMMZEILE DARAUS. dIE sONDERFORM list, (kOMMA NACH list) GIBT pROGRAMMZEIIEN SOGAR IN DIESER fORM AUS: 10 FOR I = 1 TO 20 : A = A-5 : NEXT iN DERSELBEN fORM KANN DIE zEILE WIEDER DURCH return &UUML;BERNOMMEN WERDEN. eS HAT KEINEN sINN, HIER ALLE eINZELHEITEN DES pROGRAMM- zEILEN-eDITORS ZU ERKL&AUML;REN. gEBEN sIE EINFACH pROGRAMMZEILEN VERSCHIEDENER l&AUML;NGEN EIN. sIE WERDEN SEHEN, DER eDITOR DENKT GANZ BRAUCHBAR MIT. dREI aNMERKUNGEN ZU sONDERF&AUML;LLEN SOLLEN ABER &uUML;BERRASCHUNGEN VERMEIDEN HELFEN: wENN DIE zEILE INTERN L&AUML;NGER ALS 250 bYTES W&UUML;RDE, DARF SIE NICHT &UUML;BERNOMMEN WERDEN. iN DIESEM fALL BLINKT DER cURSOR AUF DEM LETZTM&OUML;GLICHEN zEICHEN, UND EIN l&AUML;UTEN ERT&OUML;NT. gEHEN sIE DANN MIT DEM cURSOR SO WEIT NACH LINKS, BIS sIE EINE PASSENDE sTELLE F&UUML;R DAS zEILENENDE FINDEN UND L&OUML;SCHEN sIE DEN &UUML;BERSTEHENDEN tEIL Z.b. DURCH esc cursor rechts UND DR&UUML;CKEN return. iNNERHALB VON aNF&UUML;HRUNGSZEICHEN WERDEN bLANKS NICHT IGNORIERT. wENN sIE NUN INNERHALB EINER &UUML;BERLANGEN pROQRAMMZEILE ZUS&AUML;TZLICH EINE sTRINGKONSTANTE EINBAUEN WOLLEN, UND NACH DEM &OUML;FFNEN DER aNF&UUML;HRUNGSZEICHEN inst DR&UUML;CKEN, UM pLATZ ZU SCHAFFEN, WERDEN SOFORT ALLE fOLGEZEILEN MITGESCHOBEN, OBWOHL IN DERSELBEN zELLE NOCH GEN&UUML;GEND pLATZ W&AUML;RE. dIESE rEAKTION ZEIGT, DA&SZLIG; DER eDITOR OHNE WEITERES ZEILEN&UUML;BERLAPPENDE sTRINGKONSTANTEN BEHANDELN KANN. dA EINE pROGRAMMZEILE MEHR ALS 25 sTATEMENTS HABEN KANN, KANN EINE DURCH list, (list UND kOMMA) AUSGEGEBENE zEILE NICHT IMMER &UUML;BERNOMMEN WERDEN. wENN sIE ANFANGS NOCH UNSICHER SIND, WO zEILEN ENDEN, SCHAFFEN sIE EINFACH &UUML;BER UND UNTER DEN EINZUGEBENDEN zEILEN lEERZEILEN. dIESES kRITERIUM IST AM LEICHTESTEN ZU VERSTEHEN. vOR ALLEM BEI kOMMANDOS IM dIREKTMODUS &UUML;BERSIEHT MAN MANCHMAL IN DER eILE EINE UNGEWOILTE zUSAMMENGEH&OUML;RIGKEIT VON zEILEN UND HANDELT SICH DADURCH fEHLERMEIDUNGEN EIN. dIE tASTE return HAT ZUSAMMEN MIT ZWEI ANDEREN tASTEN DREI VERSCHIEDENE wIRKUNGEN: return ALLEINE &UUML;BERNIMMT EINE EVT. &UUML;BERLANGE pROGRAMMZEILE UND STELLT DEN cURSOR IN DIE ERSTE ODER ZWEITE sPALTE DER N&AUML;CHSTEN pROGRAMMZEILE (S. aUTO). shift-return &UUML;BERNIMMT NICHT, L&OUML;SCHT KEINE fLAGS UND BRINGT DEN cURSOR IN DIE DRITTE sPALTE DER N&AUML;CHSTEN bILDSCHIRMZEILE. esc-return &UUML;BERNIMMT NICHT, L&OUML;SCHT DAS cONTROL- UND rvs- fLAG (aNF&UUML;HRUNGSZEICHEN /LNSERT) UND BRINGT DEN cURSOR IN DIE ERSTE sPALTE DER N&AUML;CHSTEN bILDSCHIRMZEILE. dEN GLEICHEN eFFEKT K&OUML;NNEN sIE AUCH MIT hILFE DER cURSOR- tASTEN ERZIELEN. dIE LETZTEN BEIDEN return-fUNKTIONEN SOLLEN NUR EIN sONDER-'tABULATOR' SEIN. aCHTUNG: dIE eIGENSCHAFTEN BEZ&UUML;GLICH &UUML;BERLANGER zEILEN HAT DER eDITOR NUR IM dIREKTMODUS, NICHT ABER IM input- mODUS!


2.11 &uUML;BER DEN gEBRAUCH VON VIELEN sTATEMENTS IN EINER pROGRARNM-zEILE mANCHE pROGRAMMIERER LEHNEN MEHRERE sTATEMENTS HINTER EINER zEILENNUMMER AB, WEIL DAS pROGRAMM DADURCH UNLESERLICH WERDE. aBGESEHEN DAVON, DA&SZLIG; MAN VON DIESER m&OUML;GLICHKEIT NICHT gEBRAUCH MACHEN MU&SZLIG;, WIRD DIE lESERLICHKEIT DURCH DIE fUNKTION 'list,100-300' MINDESTENS GLEICHGESTELLT DER nUMMERIERUNG JEDER EINZELNEN aNWEISUNG. uND ABGESEHEN DAVON, DA&SZLIG; MEHRERE sTATEMENTS PRO zEILENNUMMER AUFGRUND DER INTERNEN oRGANISATION pLATZ UND aUSF&UUML;HRUNGSZEIT SPAREN, KANN SO EIN pROGRAMM DURCHAUS LOGISCH &UUML;BERSICHTLICHER SEIN- eIN basic-pROGRAMM IST U.A. DESHALB SCHWER ZU LESEN, WEIL AN JEDE sTELLE EIN sPRUNG ERFOLGEN KANN UND U.A. DADURCH aNWEISUNGS-bL&OUML;CKE NICHT ZU ERKENNEN SIND. wENN MAN NUN KONSEQUENT GANZE bL&OUML;CKE HINTER EINE zEILENNUMMER SCHREIBT, SIND SIE OHNE WEITERES ALS eINHEIT ZU ERKENNEN. vOR ALLEM BEI for-next sCHLEIFEN ODER if then else eNTSCHEIDUNGEN WIRD DADURCH AUCH OPTISCH sTRUKTUR GESCHAFFEN (if then else MU&SZLIG; SOGAR IN 1 zEILE STEHEN). dIE m&OUML;GLICHKEITEN DES pROGRAMM-eDITORS MACHEN EIN NACHTR&AUML;GLICHES tEILEN ODER zUSAMMENF&UUML;GEN VON zEILEN ZU EINER aNGELEGENHEIT VON sEKUNDEN. dESHALB K&OUML;NNEN UNN&OUML;TIG GETRENNTE zEILEN JEDERZEIT ZUSAMMENGEF&UUML;GT, BZW. ZU LANGE zEILEN LEICHT GETRENNT WERDEN. 2.12 fEHLERMEIDUNGEN wENN DAS pROGRAMM MIT EINER fEHLERMELDUNG 'AUSSTEIGT', WIRD AUTOMATISCH DIE BETREFFENDE pROGRAMMZEILE GELISTET UND DER cURSOR AN DIE sTELLE GESETZT, DIE DEN iNTERPRETER ZU DIESER &UUML;BLICHERWEISE NERVENAUFREIBENDEN mA&SZLIG;NAHME GETRIEBEN HAT. dAMIT SOLLTEN sIE IN DER lAGE SEIN, SICH IN SEINE sCHWIERIGKEITEN ZU VERSETZEN. nAT&UUML;RLICH D&UUML;RFEN sIE DIE ANGEZEIGTE fEHLERSTELLE NICHT ZU W&OUML;RTLICH NEHMEN, SIE IST NUR EIN UNGEF&AUML;HRER hINWEIS. 2.13 rEKORDERVERWALTUNG UND fLOPPY-vOREINSTELLUNG dIE rEKORDERVERWALTUNG WURDE VOLLST&AUML;NDIG ENTFERNT, DA DIESES sPEICHERMEDIUM DEN aNFORDERUNGEN EINES sYSTEMS MIT 64k aRBEITSSPEICHER NICHT MEHR GEWACHSEN IST. f&UUML;R DIE bEFEHLE load, save UND verify BEDEUTET DIES, DA&SZLIG; DER eRSATZWERT F&UUML;R DIE NICHT ANGEGEBENE gER&AUML;TENUMMER NICHT MEHR 1, SONDERN 8 IST. 2.14 input KANN 255 bYTES LESEN dA DIEbEGRENZUNG AUF 80 zEICHEN VOR ALLEM IN zUSAMMENHANG MIT rel-dATEIEN EINIGE pROBLEME GEBRACHT HAT, WURDE DER basic-input-buffer AUF 1 pAGE (256 bYTES) VERL&AUML;NGERT, WODURCH NUN DER MAXIMALE iNHALT EINES sTRINGS GELESEN WERDEN KANN. (tROTZDEM WURDE DURCH get$ EINE BEMERKENSWERTE aLTERNATIVE ZUM input IMPLEMENTIERT) 2.15 zERO-pAGE U.A. aDRESSEN dIE vERWENDUNG DER zERO-pAGE IST IN WESENTLICHEN tEILEN GLEICH GEBLIEBEN. eINIGE zELLEN HABEN ZUS&AUML;TZLICH ZU IHRER BISHERIGEN bEDEUTUNG NEUE vERWENDUNGEN ERFAHREN. dIE zELLEN F&UUML;R DIE rEKORDERVERWALTUNG WURDEN ZUM tEIL NEU BELEGT. dER iNPUT-bUFFER BELEGT DIE GANZE pAGE 2. dER tASTATURPUFFER LIEGT AB zELLE 798.


2.16 rom zWECK rom SCHALTET DAS rom-bETRIEBSSYSTEM (basic-4) EIN UND DADURCH DAS ram-bETRIEBSSYSTEM (los-96) AUS. fORMAT rom aNMERKUNGEN bEIM sTART VON los-96 WIRD zERA-pAGE UND sTACK GERETTET. dURCH rom WERDEN DIESE GERETTETEN bEREICHE GEGEN DIEJENIGEN VON los-96 AUSGETAUSCHT. dADURCH KANN MAN ZWISCHEN DEN BEIDEN mASCHINEN UMSCHALTEN, OHNE reset MACHEN ZU M&UUML;SSEN. wIRD DIESE m&OUML;GLICHKEIT NICHT BEN&OUML;TIGT, KANN DER F&UUML;R DEN aUSTAUSCH BEN&OUML;TIGTE sPEICHERBEREICH F&UUML;R ANDERE zWECKE VERWENDET WERDEN. rom WIRD DANN NORMALERWEISE ZUM aBSTURZ F&UUML;HREN, SO DA&SZLIG; MAN BESSER GLEICH DURCH sys 64790 IN DIE reset-rOUTINE SPRINGT. dER aUSTAUSCHBEREICH IST 784 bYTES LANG UND LIEGT AB (1252/1253). sOFERN NICHT DURCH usr O.&AUML;. DER sPRUNG IN DEN zELLEN 0,1,2 VER&AUML;NDERT WURDE, KANN DURCH sys 0 NACH rom VON basic-4 AUS WIEDER EIN wARMSTART VON los-96 DURCHGEF&UUML;HRT WERDEN. dIE 96-ER basic-mASCHINE WIRD DADURCH WIEDER IN DEN zUSTAND VERSETZT, DEN SIE BEI rom HATTE. wURDE ALLERDINGS NACH DEM sTART VON los-96 DER aUSTAUSCHBEREICH ANDERWEITIG VERWENDET, SO WERDEN DIESE iNFORMATIONEN ZERST&OUML;RT!


3.1 load zWECK load L&AUML;DT EINE prg-dATEI VON dISKETTE IN DEN aRBEITSSPEICHER AN DIE aDRESSE, DIE IN DEN ERSTEN BEIDEN bYTES DER dATEI VERMERKT IST, BZW. DIE IM kOMMANDO ANGEGEBEN WIRD. aUFGRUND DER dISKREPANZ ZWISCHEN LOGISCHEN UND PHYSIKALISCHEN aDRESSEN MU&SZLIG;TE load EINIGE OPTIONALE zUSATZPARAMETER ERHALTEN, UM AUCH sONDERF&AUML;LLEN GERECHT ZU WERDEN. fORMAT load , ; &PARA; % ADRESSE , "LAUFWERK:NAME" , GER&AUML;TENUMMER aNMERKUNGEN LOAD "NAMELL iM nORMALFALL WERDEN DIE pARAMETER ZWISCHEN load UND DEM nAMEN NICHT ANGEGEBEN. dANN WIRD ANGENOMMEN, EIN pROGRAMM SOLL IN DEN pROGRAMMBEREICH GELADEN WERDEN. dESHALB WIRD IN DIESEM fALL IMMER DIE pROGRAMM-pAGE EINGESCHALTET. dIE aDRESSE, AN DIE GELADEN WIRD, WIRD DEN ERSTEN BEIDEN bYTES DER prg-dATEI ENTNOMMEN. dIE aDRESSE KANN IN DER pRAXIS VON ETWAS UNTER 32k BIS ZU 64k REICHEN, JE NACHDEM, WIE DER pROGRAMMBEREICH EINGESTELLT WAR, ALS DAS pROGRAMM ABGESPEICHERT (save) WURDE. sTANDARDEINSTELLUNG DES pROGRAMMBEREICHS IST aNFANG DER pROGRAMM-pAGE (32768). wIRD ', GER&AUML;TENUMMER' NICHT ANGEGEBEN, GILT DIE vOREINSTELLUNG 8. kOMMT HINTER DEM nAMEN DER dATEI NOCH IRGENDEIN wERT, DER NICHT DURCH kOMMA ABGETRENNT IST, SO WIRD ER IGNORIERT. dIES ERM&OUML;GLICHT DAS lADEN AUS DEM bILDSCHIRM-lISTING DES dIRECTORY. LOAD , "NAME" kOMMA NACH load BEWIRKT, DA&SZLIG; DAS pROGRAMM AUTOMATISCH AN DEN DERZEIT EINGESTELLTEN pROGRAMMBEREICH-aNFANG GELADEN WIRD (40/41). dA DABEI EIN lINK-lAUF N&OUML;TIG IST, D&UUML;RFEN mASCHINENPROGRAMME NICHT MIT kOMMA GELADEN WERDEN. dIESE oPTION IST U.A. F&UUML;R DAS lADEN VON basic-4- pROGRAMMEN N&OUML;TIG. LOAD &PARA; ADRESSE , "NAME" wIRD HINTER &PARA; ODER @ EINE aDRESSE ANGEGEBEN, SO WIRD AB DIESER aDRESSE IN DEN sPEICHER GELADEN. dIESE aDRESSE KANN AUS DEM GESAMTEN LOGISCHEN aDRESSRAUM VON 128k GENOMMEN WERDEN. bEI wERTEN &UUML;BER 32k WIRD DIE RICHTIGE VON DEN DREI M&OUML;GLICHEN 32k-pAGES EINGESCHALTET. bEI wERTEN UNTER 32k WIRD F&UUML;R DEN fALL DER &uUML;BERLAPPUNG DIE pROGRAMM-pAGE EINGESCHALTET. dIES IST VON DER LOGISCHEN aDRESSE HER VERWIRREND, DA NACH LOGISCH 32767 IN 65536 WEITERGELADEN WIRD. dA ABER WEGEN DER M&OUML;GLICHEN vERL&AUML;NGERUNG DES pROGRAMMSPEICHERS IN DEN aDRESSRAUM UNTER 32k EIN pROGRAMM AB EINER aDRESSE UNTERHALB 32k LADBAR SEIN MU&SZLIG;, IST DIESE aBWEICHUNG VON DER LOGISCHEN aDRESSFOLGE N&OUML;TIG. aNDERERSEITS MACHT ES WENIG sINN, MIT DEM lADEN EINER dATEI UNTERHALB DES bILDSCHIRMS ZU BEGINNEN UND DANN IM bILDSCHIRM FORTZUSETZEN.


LOAD &PARA; % ADRESSE , "NAME" dA THEORETISCH DURCH save AUCH EIN NACH UNTEN VERI&AUML;NGERTER vARIABLENBEREICH ABGESPEICHERT WERDEN KANN (PHYSIKALISCH Z.b. 30000 - 60000), WURDE F&UUML;R load EINE ENTSPRECHENDE oPTION VORGESEHEN: dURCH '%' NACH DEM kLAMMERAFFEN WIRD NICHT DER prg-, SONDERN DER var-bEREICH EINGESCHALTET. dADURCH WERDEN PHYSIKALISCHE aDRESSEN OBERHALB VON 32k IN DEN vARIABLENBEREICH GELADEN. f&UUML;R DEN bILDSCHIRMBEREICH EXISTIERT KEINE DERARTIGE m&OUML;GLICHKEIT. dER bILDSCHIRM WIRD ALSO NUR EINGESCHALTET, WENN DIE HINTER &PARA; ANGEGEBENE aNFANGSADRESSE IM bEREICH 2^15 - 2^16 LIEGT. LOAD ; "NAME" bEIM lADEN VON pROGRAMMEN IN DEN pROGRAMMBEREICH WIRD DER pROGRAMMENDE-zEIGER (248/249) HINTER DAS ZULETZT GELADENE bYTE GESETZT. dIES IST F&UUML;R oVERLAY WICHTIG, WENN EIN SO NACHGELADENES pROGRAMM ABGEPEICHERT ODER GE&AUML;NDERT WERDEN SOLL. dA F&UUML;R sONDERANWENDUNGEN ABER AUCH mASCHINENPROGRAMME IN DEN prg-bEREICH GELADEN WERDEN K&OUML;NNEN, KANN DURCH ';' ZWISCHEN load UND name VERHINDERT WERDEN, DA&SZLIG; DER pROGRAMM-eNDE-zEIGER VER&AUML;NDERT WIRD. bEACHTEN sIE, DA&SZLIG; IN basic-4 DER pROGRAMM-eNDE-zEIGER (42/43) BEI load IM dIREKTMODUS GE&AUML;NDERT WURDE, BEI load AUS DEM pROGRAMM ABER NICHT! load IM pROGRAMM: dURCH load IM pROGRAMM K&OUML;NNEN SOWOHL basic-pROGRAMME NACHGELADEN WERDEN (oVERLAY), ALS AUCH mASCHINENPROGRAMME BZW. BELIEBIGE sPEICHERINHALTE AUF BESTIMMTE aDRESSEN GELEGT WERDEN. nACH load VON basic-pROGRAMMEN L&AUML;UFT DAS pROGRAMM MIT DER ERSTEN aNWEISUNG DES NEUEN pROGRAMMS WEITER (S. oVERLAY- eRL&AUML;UTERUNGEN IM 8032-hANDBUCH). iM gEGENSATZ ZU basic-4 WIRD ABER DAS pROGRAMM HINTER DER load-aNWEISUNG FORTGESETZT, WENN {CBM-Y} NICHT IN DEN prg-bEREICH GELADEN WIRD (LOAD &PARA; ADR) {CBM-Y} ';' ZWISCHEN load UND name STEHT {CBM-Y} DAS eNDE DES GELADENEN pROGRAMMS VOR (40/41) LIEGT iN DIESEN f&AUML;LLEN KANN ALSO DER BISHER N&OUML;TIGE on-vERTEILER AM aNFANG DES pROGRAMMS ENTFALLEN.


bEISPIELE LOAD "PROGRAMM" 'PROGRAMM' AB DER ABGESPEICHERTEN aDRESSE LADEN LOAD , "PROGRAMM" 'PROGRAMM' AB prg-sPEICHER-aNFANG (40/41) LADEN LOAD "PROGRAMM",9 'PROGRAMM' VON gER&AUML;T 9 LADEN LOAD "PROGRAMM" PRG 'PRG' VOM DIRECTORY-LISTING ST&OUML;RT NICHT LOAD ; "MASCH" LADEN OHNE zEIGER VER&AUML;NDERN UND WEITER NACH load LOAD &PARA; 32768 , "BILD" 'BILD' AB bILDSCHIRM-aNFANG LADEN LOAD &PARA; 100000 , "BLOCK"'BLOCK' AB 100000 (vARIABLEN- pAGE) LADEN LOAD &PARA; 25000, "SYSTEM" 'SYSTEM' AB 25000 (bs-bEREICH) LADEN (FALLS 32768 &UUML;BERSCHRITTEN WIRD, WEITER IN prg) LOAD &PARA; % 30000 "VARIAB"IN var-bEREICH LADEN, FALLS 32768 &UUML;BERSCHRITTEN WIRD


3.2 save zWECK save SPEICHERT EIN basic-pROGRAMM BZW. EINEN BELIEBIGEN sPEICHERBEREICH IN EINE prg-dATEI AUF fLOPPY AB. dABEI WIRD DIE sTARTADRESSE IN DEN ERSTEN BEIDEN bYTES VERMERKT. fORMAT save &PARA; VONADRESSE , BISADRESSE , "LAUFWERK-NAME" , GER&AUML;TENUMMER aNMERKUNGEN iM nORMALFALL WIRD &PARA; VONADRESSE,BISADRESSE,' NICHT ANGEGEBEN. dANN WIRD DAS DERZEIT IM sPEICHER STEHENDE basic-pROGRAMM AUF dISKETTE ABGELEGT. wIRD ZWISCHEN save UND DEM nAMEN EIN kOMMA ANGEGEBEN, SO WIRD AUTOMATISCH NACH DEM aBSPEICHERN verify DURCHGEF&UUML;HRT. dIE gER&AUML;TENUMMER WIRD ALS 8 ANGENOMMEN, WENN SIE NICHT ANGEGEBEN WIRD. fOLGT AUF DEN nAMEN EIN aUSDRUCK, DER NICHT DURCH kOMMA GETRENNT IST, SO WIRD ER IGNORIERT. dIES ERM&OUML;GLICHT DIE PROBLEMLOSE eNTNAHME DES nAMENS AUS DEM dIRECTORY-lISTING AUF DEM bILDSCHIRM. wIRD &PARA; VONADRESSE , BISADRESSE , ' ANGEGEBEN, SO WIRD DER sPEICHERBEREICH VON EINSCHLIE&SZLIG;LICH 'VONADRESSE' BIS AUSSCHLIE&SZLIG;LICH 'BISADRESSE' ABGELEGT. wENN aNFANGS- UND eNDADRESSE IM SELBEN 32k-bEREICH LIEGT, WIRD DIE BETREFFENDE pAGE EINGESCHALTET UND UNTER DER JEWEILS ZUTREFFENDEN PHYSIKALISCHEN aNFANGSADRESSE ABGELEGT. lIEGEN DAGEGEN aNFANGS- UND eNDADRESSE IN VERSCHIEDENEN pAGES, SO MU&SZLIG; DIE aNFANGSADRESSE KLEINER ALS 32k SEIN, ALSO IM GEMEINSAMEN bEREICH LIEGEN. jE NACHDEM, OB DIE eNDADRESSE IM bEREICH 32-64 k ODER 64-96 k ODER 96-128 k LIEGT, WIRD BEIM aBSPEICHERN DER rom ODER prg ODER var - bEREICH EINGESCHALTET. &uUML;BERLAPPEN &UUML;BER 64k BZW. 96k IST ALSO NICHT M&OUML;GLICH. bITTE BEACHTEN sIE, DA&SZLIG; EIN SO ABGESPEICHERTER bEREICH (aNFANGSADRESSE UNTER 32k) DURCH load OHNE aDRESSANGABE IMMER IN DEN prg-bEREICH GELADEN WIRD! bEISPIELE SAVE "0:PROGRAMM" 'PROGRAMM' AUF gER&AUML;T 8 ABLEGEN SAVE , "0:PROGRAMM" ABSPEICHERN UND SOFORT VERIFIZIEREN SAVE "0:PROGRAMM",9 AUF gER&AUML;T 9 ABLEGEN SAVE "0:PROGRAMM" PRG 'PRG' ST&OUML;RT NICHT SAVE &PARA; bILDSCHIRMINHALT UNTER 'BILD' 32768,34768,"0:BILD" ABLEGEN SAVE &PARA; gESAMTEN vARIABLENBEREICH 98304,131056,"0:VARIA" ABSPEICHERN (dUMP) SAVE &PARA; nACH UNTEN VERL&AUML;NGERTEN 30000,100000,"0:VARIA" vARIABLENBEREICH ABSPEICHERN


3.3 verify dREI eIGENSCHAFTEN VON verfiy WURDEN GEGEN&UUML;BER 8032 GE&AUML;NDERT: dIE eRSATZADRESSE IST 8, WENN NICHTS ANGEGEBEN WIRD. wIE BEI load UND save ST&OUML;REN aUSDR&UUML;CKE NACH DEM nAMEN NICHT, WENN SIE NICHT DURCH kOMMA GETRENNT SIND. verify error WIRD BEREITS BEI DER ERSTEN nICHT- &uUML;BEREINSTIMMUNG GEMELDET UND DER zEIGER AUF DIE PHYSIKALISCHE ram-aDRESSE IN 201/202 &UUML;BERGEBEN. verify &UUML;BERNIMMT DIE eINSTELLUNG AUF rom prg BZW. var OHNE SIE ZU VER&AUML;NDERN. dIESE eINSTELLUNG WIRD DURCH load / save poke / peek / sys / wait DEFINIERT. wENN ALSO NACH DEM ZUGEH&OUML;RIGEN save ODER load EINER DER AUFGEF&UUML;HRTEN bEFEHLE EINEN ANDEREN bEREICH EINGESTELLT HAT, WIRD verify DEN FALSCHEN bEREICH VERGLEICHEN, SOFERN DIE aDRESSEN &UUML;BER 32768 LIEGEN.


3.4 list zWECK list GIBT EIN basic-pROGRAMM AUF bILDSCHIRM AUS. dABEI WERDEN bLANKS ZWISCHEN aNWEISUNGEN UND BESTIMMTEN zEICHEN EINGEF&UUML;GT, UM DAS lISTING LESBARER ZU MACHEN. eINE BESONDERE aRT VON list DRUCKT JEDE aNWEISUNG IN EINE NEUE zEILE. fORMAT list VON - BIS NORMALES lISTING list , VON - BIS kOMMA HINTER list BEWIRKT, DA&SZLIG; JEDE aNWEISUNG IN EINE EIGENE zEILE GEDRUCKT WIRD aNMERKUNGEN dIE bLANKS IM lISTING WERDEN BEI &uUML;BERGABE EINER zEILE DURCH return WIEDER ENTFERNT. bEI vERWENDUNG VON list MIT kOMMA AUF DEM bILDSCHIRM M&UUML;SSEN sIE BEDENKEN, DA&SZLIG; zEILEN MIT MEHR ALS 25 aNWEISUNGEN (DURCH dOPPELPUNKT GETRENNT) NICHT MEHR DURCH return &UUML;BERNOMMEN WERDEN K&OUML;NNEN, DA SIE NUR ZUM tEIL AUF DEM bILDSCHIRM STEHEN. iM gEGENSATZ ZU basic-4 BRICHT list IM pROGRAMM NICHT DEN pROGRAMMLAUF AB; DAS pROGRAMM L&AUML;UFT ALSO NACH list WEITER. dURCH FOLGENDE aNWEISUNGEN K&OUML;NNEN sIE EIN pROGRAMM- lISTING AUF dRUCKER AUSGEBEN: OPEN 4,4 : CMD 4 : (mIT ODER OHNE kOMMA HINTER LIST, list) PRINT#4 : CLOSE 4 &aUML;HNLICH K&OUML;NNEN sIE AUCH EIN lISTING IN EINE fLOPPY-dATEI SCHREIBEN. aNSTATT 'OPEN 4,4' BEN&OUML;TIGEN sIE NUR 'OPEN 2,8,2,"0:LISTING,S,W'"(Z.b.).


3.5 delete zWECK dURCH delete KANN EIN pROGRAMM-zEILEN-bLOCK GEL&OUML;SCHT WERDEN. dIE aNGABE DES zEILENBEREICHS ERFOLGT WIE BEI list. fORMAT delete ZEILENBEREICH aBK&UUML;RZUNG: DEl aNMERKUNGEN delete IST ZWAR IM pROGRAMM NICHT GESPERRT, DARF ABER NICHT VERWENDET WERDEN. dER nAME KANN IN K&UUML;NFTIGEN vERSIONEN GE&AUML;NDERT WERDEN, BZW. DAS tOKEN AUS DER lISTE ENTFERNT WERDEN. bEISPIELE DELETE 100-200 zEILEN 100 BIS 200 L&OUML;SCHEN DEl100-200 aBK&UUML;RZUNG DEl 100- zEILEN 100 BIS LETZTE zEILE L&OUML;SCHEN DEl -200 eRSTE zEILE BIS zEILE 200 L&OUML;SCHEN DEl aLLE zEILEN L&OUML;SCHEN (WIE new, ABER OHNE clr!)


3.6 fre: zWECK fre &UUML;BERGIBT DIE aNZAHL DER FREIEN bYTES IM vARIABLEN- BZW. IM pROGRAMMSPEICHER. bEIM vARIABLENSPEICHER WIRD VORHER gARBAGE cOLLECT DURCHGEF&UUML;HRT. fORMAT a = fre(m) M GLEICH 0 pROGRAMM M UNGLEICH 0 vARIABIE fre IST EINE fUNKTION, DIE AN BELIEBIGER sTELLE EINES NUMERISCHEN aUSDRUCKS VORKOMMEN KANN. aNMERKUNGEN: bEI fre(0) WIRD DIE dIFFERENZ ZWISCHEN pROGRAMMABERGRENZE UND sTACKUNTERGRENZE AUSGEGEBEN, ALSO (239/240) - (248/249). bEI fre(1) WIRD ZUERST gARBAGE cOLLECT DURCHGEF&UUML;HRT UND DANN DIE dIFFERENZ ZWISCHEN uNTERGRENZE sTRINGARBEITSBEREICH (48/49) UND oBERGRENZE fELDER (46/47) BERECHNET. bEACHTEN sIE, DA&SZLIG; fre(i) WEGEN gARBAGE cOLLECT SEHR ZEITINTENSIV SEIN KANN (BIS ZU EINIGEN sEKUNDEN). bEIPIELE: ?FRE (0) FREIE bYTES IM pROGRAMMSPEICHER DRUCKEN ?FRE (1) FREIE bYTES IM vARIABLENSPEICHER DRUCKEN


3.7 clr zWECK hINTER clr K&OUML;NNEN IM gEGENSATZ ZU basic-4 vARIABIEN-nAMEN ANGEGEBEN WERDEN. dIESE vARIABLEN WERDEN DANN AUS DEM sPEICHER GEL&OUML;SCHT. dIES GILT AUCH F&UUML;R fELDER. fORMAT clr VARIABLENLISTE dIE 'VARIABLENLISTE' ENTH&AUML;LT DURCH kOMMA GETRENNT vARIABLENNAMEN. fELDER M&UUML;SSEN DURCH '(' GEKENNZEICHNET WERDEN. bEISPIEL CLR A , B( , C$ , D$(, DIE EINFACHEN vARIABLEN A,C$ UND F%( E%, SOWIE DIE fELDER B(, D$( UND F%( AUS DEM vARIABLENSPEICHER L&OUML;SCHEN CLR OHNE vARIABLE: GANZEN vARIABLENSPEICHER L&OUML;SCHEN, SOWIE DEN basic-sTACK UND DEN data-zEIGER aNMERKUNGEN clr OHNE vARIABLE WIRKT WIE clr IM basic-4. zUS&AUML;TZLICH WIRD on-error GEL&OUML;SCHT. clr MIT vARIABLEN L&OUML;SCHT NUR DIE ANGEGEBENEN vARIABLEN. aLLE ANDEREN BLEIBEN ERHALTEN. bEI sTRINGVARIABLEN WIRD DER iNHALT UND DIE vERWALTUNGS-iNFORMATION GEL&OUML;SCHT. vOR ALLEM BEI fELDERN WIRD DIES EINEN BETR&AUML;CHTLICHEN sPEICHERPLATZGEWINN IM vARIABLENBEREICH BRINGEN. dA BEIM l&OUML;SCHEN VON vARIABLEN fELDER VERSCHOBEN WERDEN M&UUML;SSEN, ENTSPRICHT DER zEITBEDARF DEM BEIM eINF&UUML;GEN VON vARIABLEN. (bEI SEHR VIELEN vARIABLEN UND sTRINGS IST MIT zEITEN IM sEKUNDENBEREICH ZU RECHNEN.)


3.8 redim: fELDER VERL&AUML;NGERN ODER VERK&UUML;RZEN zWECK eINDIMENSIONALE (NICHT MEHRDIMENSIONALE) fELDER K&OUML;NNEN DURCH redim VERL&AUML;NGERT ODER VERK&UUML;RZT WERDEN. dIE iNHALTE BLEIBEN DABEI ERHALTEN, SOWEIT SIE NICHT IN ZU L&OUML;SCHENDEN eLEMENTEN STEHEN. fORMAT WIE dim aNMERKUNGEN bEI aNGABE EINES MEHRDIMENSIONALEN fELDES ERFOLGT bad subscript error. bEI EINDIMENSIONALEN fELDERN KANN redim DIE aNWEISUNG dim ERSETZEN, NOCH NICHT DEFINIERTE fELDER D&UUML;RFEN ALSO DURCH redim DIMENSIONIERT WERDEN. dER zEITBEDARF F&UUML;R DIE &aUML;NDERUNG DER fELDGR&OUML;&SZLIG;E LIEGT BEI DEM VON dim ODER ETWAS H&OUML;HER. wIRD EIN fELD DURCH redim VERKLEINERT, SO WIRD SOWOHL BEI NUMERISCHEN ALS AUCH BEI sTRING-fELDERN DER GEWONNENE pLATZ V&OUML;LLIG FREIGEGEBEN.


3.9 restore zWECK restore SETZT DEN data-zEIGER F&UUML;R read AUF EINE BESTIMMTE basic-zEILE BZW. EIN BESTIMMTES eLEMENT AB EINER zEILE ZUR&UUML;CK. dADURCH K&OUML;NNEN data'S WESENTLICH DIFFERENZIERTER BEHANDELT WERDEN, ALS BEI basic-4. fORMAT restore ZEILE , ELEMENT ZEILE: basic-zEILENNUMMER ALS kONSTANTE ELEMENT: 1 ... 255; KANN ENTFALLEN, eRSATZWERT IST 1 aNMERKUNGEN wIRD EINE zEILENNUMMER ANGEGEBEN, MU&SZLIG; DIE zEILE EXISTIEREN, SONST ERFOLGT undef'd statement error. dIE ANGEGEBENE zEILE MU&SZLIG; ABER NICHT UNBEDINGT EINE data- aNWEISUNG ENTHALTEN. wENN NICHT, WIRD EINFACH DIE N&AUML;CHSTE zEILE MIT data-aNWEISUNG GESUCHT. dAS GEW&UUML;NSCHTE eLEMENT MU&SZLIG; NICHT IN DER ANGEGEBENEN zEILE STEHEN. dAS eLEMENT KANN AB EINER BELIEBIGEN zEILE GESUCHT WERDEN. lEDIGLICH DIE bEGRENZUNG VON 255 eLEMENTEN IST ZU BEACHTEN. wIRD EIN NICHT VORHANDENES eLEMENT VERLANGT, ERFOLGT out of data error. bEISPIELE RESTORE 100 data-zEIGER AUF zEILE 100 SETZEN RESTORE 100,20 AUF DAS 20-TE data-eLEMENT AB zEILE 100 RESTORE 20 NICHT ZUL&AUML;SSIG: syntax error


3.10 mASCHINEN-aDRESSEN (poke, peek, sys, wait) dER 8096 VERF&UUML;GT &UUML;BER INSGESAMT 128k sPEICHER. dER pROZESSOR 6502 KANN ABER NUR 64k GLEICHZEITIG ADRESSIEREN. dESHALB MU&SZLIG; DAS bETRIEBSSYSTEM DIE JEWEILS BEN&OUML;TIGTEN sPEICHERB&AUML;NKE EINSCHALTEN. uM AUF basic-eBENE DENNOCH EINE EINDEUTIGE zUORDNUNG VON sPEICHERZELLEN ZU aDRESSEN ZU HABEN, WURDE F&UUML;R DIE bEFEHLE poke, peek, sys UND wait DER ZUL&AUML;SSIGE aDRESSBEREICH ERWEITERT UND FOLGENDE zUORDNUNG VON LOGISCHEN (basic) aDRESSEN ZU sPEICHERB&AUML;NKEN GEW&AUML;HLT: 12sk-------------------------------- vARIABLENSPEICHER (var) 96k -------------------------------- pROGRAMMSPEICHER (prg) 64k -------------------------------- rom-bEREICH (rom) 32k -------------------------------- bETRIEBSSYSTEM (los) 0k -------------------------------- dIESES sPEICHERSCHEMA IST AN ANDERER sTELLE AUSF&UUML;HRLICHER DARGESTELLT. bITTE BEACHTEN sIE, DA&SZLIG; F&UUML;R DIE fUNKTION usr( ) DIESE kONVENTION NICHT GELTEN KANN, DA IHRE zIELADRESSE IN DEN zELLEN 1 UND 2 ENTHALTEN IST, ALSO NUR 64k ADRESSIEREN KANN!


3.11 gETSTRING (get$) zWECK getstring LIEST VON EINEM pERIPHERIEGER&AUML;T MAXIMAL 255 BELIEBIGE kODES (zEICHEN) IN EINE sTRINGVARIABLE. dABEI IST DIE aNZAHL DER ZU LESENDEN bYTES ODER EIN BELIEBIGES eNDEZEICHEN (Z.b. cARRIAGE rETURN) VORZUGEBEN. eIN SPEZIELLER aUFRUF HOLT SICH DIE aNZAHL DER ZU LESENDEN bYTES AUTOMATISCH AUS DEM ERSTEN GELESENEN bYTES, WODURCH VERZEIGERTE dATEIEN SEHR EINFACH UND SCHNELL GELESEN WERDEN K&OUML;NNEN. dURCH DIESE eIGENSCHAFTEN WIRD get$ IN VIELEN f&AUML;LLEN input# VORZUZIEHEN SEIN. fORMAT get$ LOGISCHE ADRESSE , STRINGVARIABLE , MAX , ENDE , IGNOR LOGISCHE ADRESSE; bYTEAUSDRUCK dURCH open BZW. dopen MU&SZLIG; EINER LOGISCHEN aDRESSE DIE dATEI ZUGEORDNET WORDEN SEIN, AUS DER GELESEN WERDEN SOLL. fALLS DIE dATEI NICHT GE&OUML;FFNET WURDE, WIRD file not open error GEMELDET. STRINGVARIABLE : eINFACHE ODER INDIZIERTE sTRINGVARIABLE eINFACHE ODER INDIZIERTE sTRINGVARIABLE. iN DIESE vARIABLE WIRD DER EINGELESENE sTRING OHNE DIE bESCHR&AUML;NKUNGEN DES input &UUML;BERNOMMEN. mAXIMAL SIND 255 zEICHEN M&OUML;GLICH. pRINZIPIELL WIRD JEDER cODE, ALSO AUCH 0, 13, kOMMA, dOPPELPUNKT &UUML;BERNOMMEN, ES SEI DENN ER IST BEI 'ENDE' ALS eNDE-cODE DEFINIERT. lOGISCHE aDRESSE UND sTRINGVARIABIE M&UUML;SSEN ANGEGEBEN WERDEN. fALLS KEINE WEITEREN aNGABEN HINTER DER vARIABLEN FOLGEN, WIRD ANGENOMMEN, DA&SZLIG; 255 zEICHEN GELESEN WERDEN SOLLEN, UND NUR BEI dATEIENDE (ST = 64) ODER zEIT&UUML;BERSCHREITUNG (ST = 2) ABGEBROCHEN WERDEN SOLL. eNDEZEICHEN IST NICHT DEFINIERT, ALSO WIRD JEDER DER 256 M&OUML;GLICHEN cODES VON 0 - 255 EINGELESEN. MAX : mAXIMALE aNZAHL bYTES; bYTEAUSDRUCK; eRSATZWERT IST 255 'MAX' GIBT AN, WIEVIELE zEICHEN MAXIMAL &UUML;BERNOMMEN WERDEN SOLLEN. aNGABE KANN ENTFALLEN; 'MAX' IST DANN 255 (eRSATZWERT). eNTFALLEN HEI&SZLIG;T, DA&SZLIG; ENTWEDER KEIN WEITERER pARAMETER MEHR KOMMT, ODER DA&SZLIG; ZWEI kOMMAS UNMITTELBAR AUFEINANDER FOLGEN. bEI MAX = 0 WIRD DAS ERSTE GELESENE bYTE ALS l&AUML;NGENZEIGER INTERPRETIERT UND SOVIELE bYTES EINGELESEN, WIE DER asc- wERT DES ERSTEN bYTES AUSMACHT. bEI DER aNZAHL DER ZU LESENDEN bYTES WIRD DAS l&AUML;NGEN-bYTE NICHT MITGERECHNET. bITTE BEACHTEN sIE, DA&SZLIG; BEI aLGORITHMEN, DIE DIE l&AUML;NGE AUS ANDEREN qUELLEN NEHMEN, UND DANN DIESE l&AUML;NGE BEI 'MAX' ANGEBEN, F&UUML;R l&AUML;NGE 0 EINE aBFRAGE ERFORDERLICH IST, DIE VERHINDERT, DA&SZLIG; IN DIESEM fALL get$ GERUFEN WIRD. aBBRUCH WEGEN eMPFANG DER MAXIMALEN zEICHENANZAHL WIRD DURCH bIT 3 IM sTATUS VERMERKT (8 AND ST IST WAHR).


ENDE : eNDE - cODE; bYTEAUSDRUCK; eRSATZWERT IST 'KEIN aBBRUCHCODE' 'ENDE' DEFINIERT EINEN aBBRUCH-cODE. wIRD DIESER cODE EMPFANGEN, SO WIRD DIE &uUML;BERTRAGUNG ABGEBROCHEN. dER aBBRUCH-cODE SELBST WIRD NICHT MEHR IN DEN sTRING &UUML;BEMOMMEN. aBBRUCH WEGEN eMPFANG DES eNDE-cODES WIRD DURCH bIT 4 IM sTATUS VERMERKT (16 AND ST IST WAHR). wENN 'ENDE' NICHT ANGEGEBEN WIRD, KANN JEDER cODE VON 0 BIS 255 EINGELESEN WERDEN. IGNOR: ZU IGNORIERENDER aNFANGSCODE; bYTEAUSDRUCK; eRSATZWERT IST 'KEIN cODE' dIESER cODE WIRD IGNORIERT, WENN ER ALS ERSTER cODE EMPFANGEN WIRD. (z.b. 34 F&UUML;R aNF&UUML;HRUNGSZEICHEN UNTERDR&UUML;CKEN). dAS IGNORIERTE zEICHEN Z&AUML;HLT NICHT ZUR aNZAHL DER EINGELESENEN zEICHEN (MAX). 'IGNOR' DARF NICHT GLEICHZEITIG MIT MAX=0 AUFTRETEN (illegal quantity). aBBRUCHKRITERIEN dIE &uUML;BERTRAGUNG IN DEN sTRING WIRD GRUNDS&AUML;TZLICH NUR DANN ABGEBROCHEN, WENN DER sTATUS (ST) VON 0 VERSCHIEDEN IST. iNSGESAMT EXISTIEREN 4 VERSCHIEDENE aBBRUCHGR&UUML;NDE. zWEI WERDEN VOM bETRIEBSSYSTEM GELIEFERT UND ZWEI VON getstring SELBST: bETRIEBSSYSTEM-aBBRUCHKRITERIEN 2 AND ST zEIT&UUML;BERSCHREITUNG BEIM lESEN 64 AND ST eNDE DER dATEI getstring-aBBRUCHKRITERIEN 8 AND ST mAXIMALL&AUML;NGE ERREICHT 16 AND ST eNDECODE EMPFANGEN (2 AND ST IST WAHR) KOMMT VOR, WENN ENTWEDER DAS dATEIENDE (64 AND ST) &UUML;BERSEHEN WURDE, ODER DIE dATEI NICHT ORDNUNGSGEM&AUML;&SZLIG; GE&OUML;FFNET WURDE, ODER EIN lESEFEHLER BEI DER fLOPPY AUFTRITT ODER DIE fLOPPY AUS SONSTIGEN gR&UUML;NDEN KEINE dATEN LIEFERT. wENN DIESER wERT AUFTRITT, ENTH&AUML;LT DIE sTRINGVARIABIE NORMALERWEISE DEN cODE 13 (cARRIAGE rETURN). dIESER cODE WIRD VOM bETRIEBSSYSTEM ALS eRSATZWERT &UUML;BERGEBEN. wENN ALLERDINGS GLEICHZEITIG 13 ALS aBBRUCHKRITERIUM EINGESTELLT IST, IST DIE sTRINGVARIABLE LEER. bEI (64 AND ST IST WAHR) STEHT DAS LETZTE G&UUML;LTIGE zEICHEN IN DER vARIABLEN, FALLS ES NICHT DAS VOREINGESTELLTE eNDE-zEICHEN IST. bITTE BEACHTEN sIE, DA&SZLIG; MEHRERE sTATUSWERTE GLEICHZEITIG AUFTRETEN K&OUML;NNEN. z.b. KANN AM dATEIENDE GLEICHZEITIG DER wERT 64 UND 16 AUFTRETEN. 'PRINT ST' W&UUML;RDE DANN 80 MELDEN!


aNWENDUNG getstring IST input IMMER DANN VORZUZIEHEN , WENN DIE dELIMITER kOMMA, dOPPELPUNKT UND cr NICHT WIRKEN SOLLEN ODER WENN DER cODE 0 EINGELESEN WERDEN SOLL. sPEZIALANWENDUNGEN ERGEBEN SICH, WENN dATENFELDER BEKANNTER l&AUML;NGE OHNE aBSCHLU&SZLIG;ODE GELESEN WERDEN SOLLEN, ODER EIN BELIEBIGER eNDE-cODE VORGEGEBEN WERDEN SOLL. dURCH MAX=0 K&OUML;NNEN DURCH zEIGER VERKETTETE bYTEFELDER GELESEN WERDEN, SOFERN DIE EINZELNEN eLEMENTE NICHT 255 bYTES &UUML;BERSCHREITEN. sYNTAX-m&OUML;GLICHKEITEN: GET$ LA ,STR-VAR , MAX , ENDE , IGNOR GET$ LA ,STR-VAR , , ENDE , IGNOR GET$ LA ,STR-VAR , MAX , , IGNOR GET$ LA ,STR-VAR , , , IGNOR GET$ LA ,STR-VAR , MAX GET$ LA ,STR-VAR bEISPIELE OPEN BZW DOPEN &PARA;5,"LESEDATEI" 5,8,2,"LESEDATEI" GET$ 5,A$"13,34 LIEST EINEN sTRING WIE input, D.H. 13 IST eNDEZEICHEN (cr) UND 34 AM aNFANG WIRD IGNORIERT (aNF&UUML;HRUNGSZEICHEN). dIE eNDEZEICHEN kOMMA UND dOPPELPUNKT, SOWIE cODE 0 BEWIRKEN ABER NICHT aBBRUCH DER &uUML;BERNAHME IN A$. GET$ 5,A$255 bYTES WERDEN BEDINGUNGSLOS IN A$ &UUML;BERNOMMEN GET$ 5,A$,16 GENAU 16 bYTES WERDEN IN A$ &UUML;BERNOMMEN FOR I = 1 TO 10 10 eLEMENTE DES sTRINGFELDES A$( ) WERDEN GET$ 5,A$(I),0 &UUML;BERNOMMEN. dIE l&AUML;NGE DER EINZELNEN eLEMENTE WIRD NEXT AUS DEM bYTE VOR DEM JEWEILIGEN 'sATZ' GENOMMEN. eINE DERARTIGE sTRUKTUR WIRD DURCH DAS FOLGENDE pROGRAMM AUFGEBAUT: OPEN 5,8,2,"0:LESEDATEI,S,W" FOR I = 1 TO 10 PRINT#5, CHR$(LEN(A$(I@{CBM-F} A$(I); NEXT


3.12 LNSTRING (instr) zWECK iNSTRING SUCHT DEN iNHALT EINER sTRINGVARIABLE NACH EINER VORGEGEBENEN zEICHENKETTE AB. dABEI IST DIE sUCHRICHTUNG, DER sUCHANFANG, SOWIE sUCHE AUF uBEREINSTIMMUNG ODER aBWEICHUNG W&AUML;HLBAR. fORRNAT instr( ZEICHENKETTE , STRINGVARIABTE, SPALTE , BETRIEBSART ) zEICHENKETTE : zEICHENKETTE, NACH DER IM sTRING GESUCHT WIRD. eINFACHE ODER INDIZIERTE sTRINGVARIABLE; kONSTANTE; sTRINGAUSDRUCK STRINGVARIABLE : zU DURCHSUCHENDER sTRING. eINFACHE ODER INDIZIERTE sTRINGVARIABLE; sTRINGAUSDRUCK SPALTE : nUMMER DES zEICHENS IN STRINGVARIABLE, AB DEM GESUCHT WERDEN SOLL. bYTEAUSDRUCK (0 - 255) 1. zEICHEN = 1 aNGABE KANN ENTFALLEN, 'SPALTE' IST DANN 0 'SPALTE' = 0 : aUTOMATISCH JE NACH bETRIEBSART 1 ODER l&AUML;NGE VON 'STRING-VARIABLE' wENN 'SPALTE' GR&OUML;SSER ALS LEN(STRINGVARIABLE) IST, SO WIRD 'SPALTE' GLEICH DER l&AUML;NGE VON 'STRINGVARIABLE'. bETRIEBSART : bYTEAUSDRUCK: P (aNGABE KANN ENTFALLEN, P IST DANN 0) P=0 VON LINKS NACH RECHTS AUF &uUML;BEREINSTIMMUNG SUCHEN P=L VON LINKS NACH RECHTS AUF aBWEICHUNG SUCHEN P=2 VON RECHTS NACH LINKS AUF &uUML;BEREINSTIMMUNG SUCHEN p=3 VON RECHTS NACH LINKS AUF aBWEICHUNG SUCHEN


bEISPIELE A=INSTR(S$,Q$) &uUML;BERGIBT IN A DIE sPALTE, IN DER S$ IN Q$ GEFUNDEN WURDE. A=INSTR(S$,Q$,0,0) wIE OBEN PRINT INSTR(S$(S),Q$,10) dRUCKT DIE sPALTE AUS, IN DER S$(S) IN Q$ AB sPALTE 10 GEFUNDEN WURDE. S=INSTR(S$,Q$(J),S-1,2) &uUML;BERGIBT IN S DIE sPALTE, AB DER S$ IN Q$(J) AB S-1 (VON RECHTS NACH LINKS) GEFUNDEN WURDE. (sINVOLL IN sCHLEIFEN, WENN NACH ALLEN &uUML;BEREINSTIMMUNGEN GESUCHT WERDEN SOLL.) S=INSTR(" ",Q$,0,3):Q$=LEFT$(Q$,S) &uUML;BERGIBT IN S DIE sPALTE, AB DER IN Q$ VON RECHTS NICHT MEHR GEFUNDEN WURDE UND SCHNEIDET ANSCHLIE&SZLIG;END ALLE NACHFOLGENDEN bLANKS IN Q$ AB. IF INSTR(S$,Q$,S)=0 THEN PRINT"NICHT GEFUNDEN" dRUCKT 'NICHT GEFUNDEN' AUS, WENN instr(...) GLEICH 0 IST. fEHLERMEIDUNGEN ILLEGAL QUANTITY ERROR sPALTE MUSS wERT ZWISCHEN 0 UND Z.b. INSTR(N$,Q$,300,0) 255 HABEN kEINE fEHLERMEIDUNG ABER FALSCHE aUSGABEWERTE Z.b. INSTR(N$,Q$,0,5) bETRIEBSART MUSS wERT ZWISCHEN 0 UND 3 HABEN SYNTAX ERROR LEERE pARAMETER SIND NICHT ER- Z.b. INSTR(N$,Q$"3) LAUBT. TYPE MISMATCH ERROR ERSTER UND ZWEITER pARAMETER Z.b. INSTR(N$,Q) M&UUML;SSEN sTRING SEIN.


3.13 mIDSTRING (midstr) zWECK mIDSTRING SETZT EINE zEICHENKETTE (sTRING) IN EINEN ANDEREN sTRING AB EINER FREI W&AUML;HLBAREN sTELLE EIN. dABEI WIRD DER ALTE iNHALT DES sTRINGS AB DIESER sTELLE &UUML;BERSCHRIEBEN. fORMAT midstr(STRVAR , SPALTE ) = ZEIKET STRVAR: sTRINGVARIABLE, IN DIE DIE zEICHENKETTE EINGEF&UUML;GT WERDEN SOLL;eINFACHE ODER INDIZIERTE sTRINGVARIABIE ZEIKET: zEICHENKETTE, DIE IN DIE sTRINGVARIABIE EINGEF&UUML;GT WERDEN SOLL; sTRINGAUSDRUCK SPALTE: nUMMER DES zEICHENS IN 'STRVAR', AB DEM 'STRVAR' DURCH 'ZEIKET' &UUML;BERSCHRIEBEN WERDEN SOLL; bYTEAUSDRUCK. wENN DER wERT VON 'SPALTE' GR&OUML;&SZLIG;ER IST ALS DIE l&AUML;NGE VON 'STRVAR', WIRD DIE l&AUML;NGE ENTSPRECHEND VERGR&OUML;&SZLIG;ERT. iM zWISCHENRAUM ZWISCHEN 'STRVAR' UND 'ZEIKET' STEHEN DANN IM NEUEN sTRING IRGENDWELCHE zUFALLSZEICHEN. bEI SPALTE=0 WIRD NICHTS ERSETZT (aBBRUCH). bEISPIELE A$="0123456789- 11 MIDSTR eRSETZT IN A$ AB sPALTE 3 (A$,3)="XYZ" DIE zEICHEN DURCH 'XYZ' PRINT A$ 0XYZ56789 MIDSTR eRSETZT IN B$ DAS zEICHEN AN (B$,W)=CHR$(Q) sPALTE W DURCH DAS zEICHEN, DAS SICH AUS CHR$(Q) ERGIBT. A$="123" MIDSTR(A$,8)="- 89" ?A$ 123XXXX89 dIE sTELLEN X ENTHALTEN UNDEFINIERTE cODES fEHLERMEIDUNGEN ILLEGAL QUANTITY SPALTE' KLEINER ALS 0 ODER GR&OUML;&SZLIG;ER ALS ERROR 255 STRING TOO LONG nEUER sTRING 'STR-VAR' W&AUML;RE L&AUML;NGER ERROR ALS 255 zEICHEN


3.14 asc / chr$ zWECK chr$ WANDELT EINEN zAHLENWERT IN EINEN 1-5 bYTE-sTRING UM, asc WANDELT EINEN SO ERZEUGTEN sTRING WIEDER IN EINEN zAHLENWERT UM. zUS&AUML;TZLICH ZU DEN ALTEN m&OUML;GLICHKEITEN VON asc UND chr$, DIE AUF 1 bYTE BE- SCHR&AUML;NKT WAREN, K&OUML;NNEN NUN ALSO ALLE VORKOMMENDEN zAHLENWERTE MIT MINIMALEM pLATZBEDARF ABGESPEICHERT WERDEN. fORMAT a = asc(STRING , SPALTE , L&AUML;NGE) a$ = chr$(ZAHL , L&AUML;NGE) STRING sTRINGAUSDRUCK ZAHL NUMERISCHER aUSDRUCK SPALTE 1...255; KANN ENTFALLEN (MIT 'L&AUML;NGE'), eRSATZWERT IST 1 l&AUML;NGE 1...5; KANN ENTFALLEN, eRSATZWERT IST 1 aNMERKUNGEN: chr$ PACKT EINE BELIEBIGE zAHL IN EINEN sTRING MIT DER IN 'L&AUML;NGE' ANGEGEBENEN l&AUML;NGE. fOLGENDE wERTEBEREICHE SIND ABH&AUML;NGIG VON DER l&AUML;NGE EINDEUTIG WANDELBAR: l&AUML;NGE wERTEBEREICH 1 0...255 (2 HOCH 8 - 1) 2 0...65535 (2 HOCH 16 - 1) 3 0...16777215 (2 HOCH 24 - 1) 4 0...4294967275 (2 HOCH 32 - 1) 5 gLEITKOMMABEREICH l&AUML;NGE 5 &UUML;BERTR&AUML;GT EINE zAHL IM sPEICHERFORMAT (5 bYTES) IN DEN sTRING. dADURCH KANN JEDE gLEITKOMMAZAHL GEPACKT WERDEN. bEI DEN ANDEREN VIER l&AUML;NGEN IST DARAUF ZU ACHTEN, DA&SZLIG; DER wERTEBEREICH NICHT &UUML;BERSCHRITTEN WIRD, SONST WIRD DIE fUNKTION DURCH illegal quantity error ABGEBROCHEN. asc WANDELT DIE OBEN ANGEGEBENEN wERTEBEREICHE EINDEUTIG VOM GEPACKTEN fORMAT IN zAHLEN ZUR&UUML;CK. vORAUSSETZUNG IST NAT&UUML;RLICH, DA&SZLIG; DIE ANGEGEBENEN l&AUML;NGEN BEI chr$ UND asc &UUML;BEREINSTIMMEN. bEI gLEITKOMMA WIRD DURCH chr$ DIE zAHL NICHT NORMALISIERT. dESHALB K&OUML;NNEN BELIEBIGE bITMUSTER IN BEIDEN rICHTUNGEN GEWANDELT WERDEN. dIE rEIHENFOLGE DER bYTES BEI l&AUML;NGE (2-4) IST HIGH - LOW. bEI l&AUML;NGE 1-4 K&OUML;NNEN BEI chr$ AUCH NEGATIVE zAHLEN EINGEGEBEN WERDEN. dIESE WERDEN ABER DURCH asc IN IHR kOMPLEMENT &UUML;BERF&UUML;HRT: Z: -2 HOCH (L&AUML;NGE * 8 - 1) ... -1 WIRD DURCH Z$ = CHR$(Z,L&AUML;NGE) : X = ASC (Z$,1,L&AUML;NGE) ABGEBILDET IN X: 2 HOCH (L&AUML;NGE * 8 ) + Z


SPALTE asc HAT GEGEN&UUML;BER DER 8032-vERSION NOCH DEN pARAMETER 'SPALTE' BEKOMMEN. dADURCH WIRD DAS FR&UUML;HER IMMER BEN&OUML;TIGTE mid$ &UUML;BERFL&UUML;SSIG. dER hAUPTVORTEIL DAVON LIEGT IN EINER zEITERSPARNIS, DA NUN KEIN zWISCHENSTRING MEHR ANGELEGT WERDEN MU&SZLIG;: asc(STRING,SPALTE) ERSETZT asc(mid$(STRING,SPALTE)) chr$ HAT KEINEN ENTSPRECHENDEN pARAMETER. hIER M&UUML;SSEN sIE DURCH midstr(a$,SPALTE) = chr$(STRING,L&AUML;NGE) DEN eINBAU AN EINE BESTIMMTE sPALTE IN EINEM sTRING ERZIELEN. bEIPIELE: ? ASC(A$,5) bYTE AN 5-TER sPALTE VON a$ IN zAHL UMWANDELN PRINT#2,CHR$(A,5); iNHALT VON A ALS 5 bYTES IN dATEI SCHREIBEN GET$2,A$,5: 5 bYTES AUS dATEI HOLEN A=ASC(A$,g,5) UND IN zAHL ZUR&UUML;CKWANDELN wEITERF&UUML;HRENDE hINWEISE iM hANDBUCH DES 8032 IST NACH DEN sTRINGFUNKTIONEN asc UND chr$ ANGEDEUTET, DA&SZLIG; DAMIT IN zUSAMMENHANG MIT sTRINGFELDERN SOGENANNTE bYTEFELDER AUFGEBAUT WERDEN K&OUML;NNEN. dURCH DIE NEUEN eIGENSCHAFTEN VON asc UND chr$ K&OUML;NNEN NUN NICHT NUR sTRUKTUREN MIT bASIS 1 bYTE, SONDERN MIT BIS ZU 4 bYTES AUFGEBAUT WERDEN. dAS GLEICHE bEISPIEL SOLL NOCHMAL ETWAS ABGEWANDELT GEBRACHT WERDEN: sIE HABEN 1000 eLEMENTE (kUNDEN), F&UUML;R JEDES eLEMENT MAXIMAL 85 eREIGNISSE (rECHNUNGEN) UND JEDES eREIGNIS BEN&OUML;TIGT 3 bYTES ZU SEINER dARSTELLUNG (7-STELLIGE rECHNUNGSNUMMER). iM mITTEL HABEN sIE 5 eREIGNISSE PRO kUNDE. zUR dARSTELLUNG DIESER dATEN MIT hILFE EINES sTRINGFELDES BEN&OUML;TIGEN sIE 1000 eLEMENTE * 5 eREIGNISSE/eLEMENT * 3 bYTES/eREIGNIS = 15 000 bYTES ZUZ&UUML;GLICH 5000 bYTES F&UUML;R DIE vERWALTUNG DES sTRINGFELDES. w&UUML;RDEN sIE EIN ZWEIDIMENSIONALES gLEITKOMMAFELD MIT 1000*85 eLEMENTEN VERWENDEN, BR&AUML;UCHTEN sIE 425 000 bYTES. (wAS SELBST BEI DIESEM rECHNER NOCH NICHT M&OUML;GLICH IST.)


3.15 catalog$ zWECK &uUML;BERNIMMT DAS dIRECTORY DER fLOPPY IN EIN sTRINGFELD. fORMAT catalog$ STRING, GN , LW , MUSTER , MODE STRING: sTRINGFELD MIT aNFANGSINDEX pRO eLEMENT DES ANGEGEBENEN sTRINGFELDES WIRD EIN dIRECTORY-eINTRAG ABGELEGT. dAS fORMAT WIRD WEITER UNTEN BESCHRIEBEN. dER ANGEGEBENE iNDEX BEZEICHNET DAS ERSTE ZU VERWENDENDE eLEMENT. iN DIESEM ERSTEN eLEMENT WIRD DER nAME DER dISKETTE USW. ABGELEGT. GN: gER&AUML;TENUMMER; bYTEAUSDRUCK; eRSATZ = 8 LW: lAUFWERK; 0 ODER 1; eRSATZ = 0 MUSTER: gEM&AUML;&SZLIG; BEKANNTEM dos-kOMMANDOSTRING; eRSATZ = LEER - aNS fLOPPY WIRD NUR '$ LW' OHNE dOPPELPUNKT GESENDET, WODURCH GANZES dIRECTORY GELESEN WIRD. MODE: eRSATZ = 0 0:nUR nAME &UUML;BERNEHMEN UND NICHT AUF 16 bYTES AUFF&UUML;LLEN 1:nUR nAME UND tYP &UUML;BERNEHMEN 2:nAME, tYP UND BELEGTE bL&OUML;CKE &UUML;BERNEHMEN fORMAT DES sTRING-iNHALTES: nAME, tYP, bLOCKANZAHL 16 1 5 NAMENAMENAMENAMEt65000 1234567890123456789012 dER nAME WIRD LINKSB&UUML;NDIG EINGETRAGEN UND BEI MODE =1,2 RECHTS MIT bLANKS AUF 16 zEICHEN AUFGEF&UUML;LLT. dER tYP WIRD ALS 'P S R' ODER 'U' ANGEGEBEN. iST IM dIRECTORY DAS uNG&UUML;LTIGKEITSMERKMAL '*' GESETZT, SO WIRD DER ENTSPRECHENDE bUCHSTABE GESHIFTET (bIT 7 GESETZT). dIES KANN DURCH 'and 128' ABGEFRAGT WERDEN. dIE ERSTE zEILE (aNFANGSINDEX) ENTH&AUML;LT nAME , ID , DOS , FREIE bL&OUML;CKE NAMENAMENAMENAMEID2C65000 1234567890123456789012345


aNMERKUNGEN jEDER dIRECTORY-eINTRAG BEN&OUML;TIGT MAXIMAL 22 bYTES + 5 bYTES sTRINGVERWALTUNG, DAS ERGIBT BEI 224 eINTR&AUML;GEN (8050) 6075 bYTES (225*(5+22)). wEGEN DIESES RELATIV HOHEN bETRAGES WURDEN DIE DREI oPTIONEN VORGESEHEN. bEI MODE = 0 BETR&AUML;GT DER pLATZBEDARF BEI LAUTER 16-bYTE-nAMEN 4725 bYTES (225*(5+16)). hIER LOHNT ALSO DER eINSATZ VON clr BZW. redim. bEI MODE=1,2 WIRD DER nAME MIT bLANKS RECHTSB&UUML;NDIG AUFGEF&UUML;LLT. bITTE BEACHTEN sIE, DA_ DIE bLANKS Z.b. MIT hILFE VON instr ABGESCHNITTEN WERDEN M&UUML;SSEN, EHE sIE &UUML;BER EINEN SOLCHEN nAMEN AUF DIE dATEI ZUGREIFEN K&OUML;NNEN. sOLLEN MEHR dIRECTORY-eINTR&AUML;GE GELESEN WERDEN, ALS eLEMENTE IM sTRING-fELD ZUR vERF&UUML;GUNG STEHEN, WIRD ABGEBROCHEN. dURCH bIT 3 (wERT 8) IN st WIRD DER aBBRUCH MITGETEILT. iN DIESEM fALL WIRD IM ERSTEN eLEMENT DIE aNZAHL DER FREIEN bL&OUML;CKE NICHT MITGETEILT, DA SIE NOCH NICHT GELESEN WURDE. wENN W&AUML;HREND DES eINLESENS DES dIRECTORY TIMEOUT AUFTRITT (sTATUS 2), WIRD MIT file data error ABGEBROCHEN. bEISPIEL DIM A$(100) MAXIMAL 100 dIRECTORY-eINTR&AUML;GE VOM lAUFWERK 0, gER&AUML;T 8 CATALOG$ A$(0) LESEN; NUR DIE nAMEN &UUML;BERNEHMEN, KEIN EINSCHR&AUML;NKENDES mUSTER


3.16 if then else zWECK dIE if then aNWEISUNG VON basic-4 MIT DER NUR EINE EINSEITIGE vERZWEIGUNG M&OUML;GLICH WAR, IST DURCH else ZUR BEIDSEITIGEN vERZWEIGUNG ERWEITERT WORDEN. fORMAT if LOGISCHER aUSDRUCK then jA-zWEIG : else nEIN-zWEIG aNMERKUNGEN dER nEIN-zWEIG KANN MIT else ENTFALLEN (KOMPATIBEL MIT basic-4) 10 IF A=B THEN A=0 20 ... dER jA- BZW nEIN-zWEIG KANN EINE BELIEBIGE aNWEISUNGSFOLGE ODER EINE zEILENNUMMER SEIN. 10 IF A=B THEN A=0 : B=B+L : ELSE A=A+L : C=L 20 IF A=B THEN 100 : ELSE 200 dER jA-zWEIG DARF LEER SEIN, ABER then MU&SZLIG; IMMER VORHANDEN SEIN. 10 IF A=B THEN : ELSE A=A+L 20 IF A=B : EISE A=A+L syntax error then DARF DURCH goto ERSETZT WERDEN, else NICHT. 20 IF A=B GOTO 100 : ELSE 200 RICHTIG 20 IF A=B GOTO 100 : GOTO 200 DAS ZWEITE GOTO WIRD NIE ERREICHT 20 IF A=B GOTO 100 : ELSE GOTO 200FUNKTIONIERT dIE BEIDEN zWEIGE LAUFEN IN DER N&AUML;CHSTEN zEILE ZUSAMMEN, SOFERN KEIN sPRUNG IN DEN zWEIGEN VORKOMMT. 20 IF A=B THEN A=B : GOTO 100 : ELSE A=A+L IM JA-fALL WIRD ZU 30 ... zEILE 100 GESPRUNGEN if then UND else M&UUML;SSEN IN EINER basic-zEILE STEHEN. dURCH DIE LANGEN basic-zEILEN IST DIES ABER KAUM EIN nACHTEIL. else OHNE if then WIRD WIE rem MIT ALLEN FOLGENDEN aNWEISUNGEN IGNORIERT, ES ERFOLGT ABER KEINE fEHLERMELDUNG. 10 A=3 : else A=5 A=5 WIRD IGNORIERT


sCHACHTELN VON if then else aNWEISUNGEN IST M&OUML;GLICH. 10 IF A=B THEN A=0 : IF C=D THEN C=0 : ELSE C=C+L : ELSE A=A+L : IF E=F THEN E=0 : ELSE E=E+L : dIESE eINR&UUML;CKUNGEN SOLLEN DIE sTRUKTUR VERDEUTLICHEN, SIND ABER IM pROGRAMM NICHT M&OUML;GLICH. wENN sIE EINE DERARTIGE sTRUKTUR EINGEBEN, ERHALTEN sIE DURCH list,10 FOLGENDES bILD: 10 IF A=B THEN A=0 : IF C=D THEN C=0 : ELSE C=C+L : ELSE A=A+i : IF E=F THEN E=0 : ELSE E=E+L dURCH list 10 (OHNE kOMMA) ERHALTEN sIE FOLGENDES bILD: 10 IF A=B THEN A=0 : IF C=D THEN C=0 - ELSE C=C+L : EISE A=A+L IF E=F THEN E= 0 : EISE E=E+L fALLS sIE BEI SEHR LANGEN if then else zEILEN MIT EINIGEN sCHACHTELEBENEN DIE &uUML;BERSICHT VERLIEREN SOLLTEN, MACHEN sIE ES WIE DER iNTERPRETER: z&AUML;HLEN sIE VON LINKS NACH RECHTS F&UUML;R JEDES if AB 0 EINS DAZU UND ZIEHEN sIE F&UUML;R JEDES else WIEDER EINS AB. sOBALD sIE BEI EINEM BESTIMMTEN else DENSELBEN z&AUML;HLERSTAND HABEN WIE BEI EINEM BESTIMMTEN if, GEH&OUML;REN DIESE BEIDEN ZUSAMMEN.


3.17 on error goto / el, ec, eo / resume nACH aBARBEITUNG VON on error ... SPRINGT DER rECHNER BEI aUFTRETEN EINES errorS NICHT IN DEN dIREKTMODUS UND MELDET DEN fEHLER AUF DEM bILDSCHIRM, SONDERN SPRINGT AUF DIE ANGEGEBENE zEILE, WO DER fEHLER VOM pROGRAMM AUS BEHANDELT WERDEN KANN. dIE RESERVIERTEN vARIABLEN el, ec UND eo GEBEN aUSKUNFT &UUML;BER fEHLER-oRT UND aRT. nACH DER fEHLERBEHANDLUNG KANN DURCH resume DIE FEHLERHAFTE aNWEISUNG WIEDERHOLT ODER DIE N&AUML;CHSTE aNWEISUNG ODER EIN sPRUNG ZU EINER BELIEBIGEN zEILE AUSGEF&UUML;HRT ODER EINE dIREKTMODUS-fEHLERMELDUNG GEBRACHT WERDEN. 3.17.1 on error fORMAT on error goto ZEILENNUMMER goto IST OPTIONAL ZEILENNUMMER MU&SZLIG; WIE BEI goto EINE kONSTANTE SEIN. aNMERKUNGEN dIE vARIABLEN el, ec UND eo WERDEN DURCH on error INITIALISIERT. clr L&OUML;SCHT AUCH DIE on error dEFINITION UND DIE resume- aDRESSE. on error OHNE zEILENNUMMER L&OUML;SCHT EINE VORANGEGANGENE on error - dEFINITION. on error KANN BELIEBIG OFT DEFINIERT WERDEN - ES GILT DIE JEWEILS LETZTE dEFINITION. iST DIE HINTER on error ANGEGEBENE zEILENNUMMER NICHT VORHANDEN, WIRD undef'd statement error GEMELDET. 3.17.2 error-line, error-code, error-offset dREI RESERVIERTE vARIABLE ENTHALTEN ALLE iNFORMATIONEN, DIE N&OUML;TIG SIND, UM EINEN fEHLER IDENTIFIZIEREN ZU K&OUML;NNEN. nACH EINEM fEHLER WERDEN DIE AKTUELLEN wERTE VOR DEM sPRUNG AUF DIE fEHLERBEHANDLUNGSROUTINE, DIE DURCH on error DEFINIERT WURDE, IN DIESE vARIABLEN GESCHRIEBEN. el (error-line) ENTH&AUML;LT DIE basic-zEILENNUMMER, IN DER DER fEHLER AUFGETRETEN IST. ec (error-code) ENTH&AUML;LT DIE fEHLERNUMMER. dIE BEIDEN fEHLERTABELLEN (iNTERPRETER BZW. bETRIEBSSYSTEM) SIND DURCHNUMMERIERT. dIE iNTERPRETERFEHLER WERDEN POSITIV AB 1 GEZ&AUML;HLT, DIE bETRIEBSSYSTEMFEHLER NEGATIV AB -1. (S. tABELLE) eo (error-offset) ENTH&AUML;LT DEN oFFSET, DER IM x-rEGISTER AN DIE fEHLERMELDUNGSROUTINE &UUML;BERGEBEN WIRD. dIESER wERT KANN ZWISCHEN 0 UND 255 LIEGEN. error (e0) &UUML;BERGIBT ALS sTRING DIE kLARTEXTMEIDUNG, DIE SONST IM dIREKTMODUS ERSCHEINEN W&UUML;RDE, ALLERDINGS OHNE DAS NACHFOLGENDE 'ERROR'.


3.17.3 resume nACH DER fEHLERERKENNUNG UND bEHANDLUNG WIRD DURCH resume BESTIMMT, WIE DAS pROGRAMM FORTGESETZT WERDEN SOLL. fORMAT: resume FEHLERAUSL&OUML;SENDE aNWEISUNG WIEDERHOLEN resume next AUF DIE F.a. FOLGENDE aNWEISUNG AUSF&UUML;HREN resume ZEILENNUMMER ENTSPRICHT goto ZEILENNUMMER (S. aNMERKUNG) resume error dIREKT-mODUS-fEHLERMELDUNG AUSL&OUML;SEN dURCH resume WIRD DER iNTERPRETERZEIGER AUF DEN aNFANG DER aNWEISUNG GESETZT, DIE DEN fEHLER PRODUZIERTE, BEI resume next AUF DEN aNFANG DER DARAUF FOLGENDEN aNWE ISUNG. resume ZEILENNUMMER SPRINGT AUF DIE zEILE MIT DIESER nUMMER. resume error L&OUML;ST DIE dIREKTMODUS-fEHLERMELDUNG AUS, DIE DURCH on error VERHINDERT WURDE. dIES IST F&UUML;R f&AUML;LLE GEDACHT, WO F&UUML;R DIE fEHLERBEHANDLUNGSRAUTINE UNVORHERGESEHENE fEHLER AUFTRETEN, WAS NORMALERWEISE IMMER M&OUML;GLICH IST. resume error OHNE VORANGEGANGENE fEHLERSITUATION F&UUML;HRT ZU EINER eNDLOS-sCHLEIFE, DIE DURCH stop UNTERBROCHEN WERDEN KANN. dER stack-level BLEIBT DURCH resume ERHALTEN, SOFERN ER NICHT DURCH DIE fEHLER-bEHANDLUNG VER&AUML;NDERT WURDE. eRL&AUML;UTERUNG: dER on error-sPRUNG ENTSPRICHT EINEM goto VON DER fEHLERSTELTE ZUR fEHLERBEHANDLUNG, ALSO VER&AUML;NDERT ER DEN sTACK-lEVEL NICHT. resume ENTSPRICHT EBENFALLS EINEM goto VON DER fEHTERBEHARDLUNG ZUR&UUML;CK ZUR fEHLERSTELLE - MIT DEM uNTERSCHIED, DA&SZLIG; NICHT DIE zEILE, SONDERN DIE aNWEISUNG ANGESPRUNGEN WIRD. wENN ABER IN DER fEHLERBEHANDLUNG Z.b. DURCH dispose DER sTACK MANIPULIERT WURDE, WIRD DURCH resume NICHT WIEDER DER ALTE zUSTAND HERGESTELLT. tRITT W&AUML;HREND DER fEHLERBEHANDLUNG EIN fEHLER AUF, SO WIRD DIESER IMMER IM dIREKTMODUS GEMELDET, DA ANDERENFALLS vERKLEMMUNGEN AUFTRETEN W&UUML;RDEN, DIE EINE eNDLASSCHLEIFE ZUR fOLGE HABEN K&OUML;NNTEN. eXAKT IST DER zUSAMMENHANG FOLGENDER: dURCH on error WIRD EIN fLAG GESETZT, WEICHES DIE fEHLERMEIDUNGSROUTINE DES bETRIEBSSYSTEMS VERANLA&SZLIG;T, DEN fEHLER NICHT ZU MEIDEN, SONDERN DEN error-sPRUNG DURCHZUF&UUML;HREN. iM SELBEN mOMENT WIRD DIESES fLAG ABER GEL&OUML;SCHT, SO DA&SZLIG; AB NUN AUFTRETENDE fEHLER NORMAL GEMELDET WERDEN. dURCH resume WIRD DIESES fLAG WIEDER AUF 'nICHT-mELDEN' GESCHALTET. dESHALB IST UNBEDINGT ERFORDERLICH, DA&SZLIG; DIE LETZTE aNWEISUNG DER fEHLERBEHAND- LUNG IMMER resume ENTH&AUML;LT. aCHTEN sIE DARAUF, DA&SZLIG; IHR pROGRAMM NICHT VON SICH AUS IN DIE fEHLERBEHANDLUNGSROUTINE L&AUML;UFT; Z.b. resume error L&AUML;UFT DANN IN EINE eNDLOSSCHLEIFE. l&AUML;UFT sIE IN DER fEHLERBEHANDLUNG AUF EIN stop ODER end, GELANGT ES ALSO IN DEN dIREKTMODUS, SO WIRD WIE BEI resume DAS on-error-fLAG WIEDER GESETZT. tRITT DANN NACH EINEM cont ODER goto EIN fEHLER AUF, SO WIRD WIEDER DIE fEHLERBEHANDLUNGSROUTINE GERUFEN.


3.17.4 on error bEISPIEL-pROGRAMM 10 rem on error demo 20 on error 900 100 input "teilerL";tl 110 print "quotient="; : q = 10/tl : print q 115 input "teiler2-1;tl 120 print "quotient="; : q = 10/tl : print q 125 input "teiler3";tl 130 q = 0 :print "quotient=TL :g = 10/tl :print q 140 input "teiler4";tl 150 g = 0 :print "quotient :q = 10/tl :print q 160 input "teiler5";tl 170 q = 0 :print "quotient=TT :q = 10/tl :print q 190 go ro100 899 stop 900 if ec 11 then resume error 910 if el = 110 then tl = Le-34 : resume 920 if el = 120 then print "nicht 0 eingeben!" : resume 115 930 if el = 130 then resume next 940 if el = 150 then open 4,4 :print#4,el;ec;eo; error (e0) :close 4 :resume next 950 if el = 170 then print :print "division durch 0 ist nicht moeglich! fehler in zeile"el :print "list"el :end 990 resume error ready


aNMERKUNGEN ZUM bEISPIEL: iM bEISPIEL SOLL DER fEHLER division by zero ABGEFANGEN WERDEN. iNSGESAMT 6 VERSCHIEDENE m&OUML;GLICHKEITEN DER fEHLER-bEHANDLUNG SOLLEN DAMIT AUFGEZEIGT WERDEN. 900: dIE FOLGENDE fEHLERBEHANDLUNG KANN NUR DEN fEHLERCODE 11 (division by zero) BEHANDELN. dESHALB SOLL BEI ALLEN ANDEREN fEHLERN DIE fEHLERMEIDUNG IM dIREKT- MODUS GEBRACHT WERDEN. 910: tRITT DER fEHLER IN zEILE 110 AUF, SO WIRD DER FEHLERHAFTE tEILER AUF EINEN VON nULL VERSCHIEDENEN, SEHR KLEINEN wERT GEBRACHT UND DIE dIVISION MIT DIESEM wERT WIEDERHOLT. dIESES bEISPIEL STEHT DAF&UUML;R, DA&SZLIG; DURCH EINE &aUML;NDERUNG DER eINGANGSWERTE BZW. uMGEBUNGSBEDINGUNGEN EINE FEHLERHAFTE aNWEISUNG ZU EINER RICHTIGEN aNWEISUNGEN WERDEN KANN, ALSO resume SINNVOLL IST. 920: iN DIESEM fALL WIRD ANGENOMMEN, DA&SZLIG; DER fEHLER NUR IN zUSAMMENARBEIT MIT DEM bEDIENER BEHOBEN WERDEN KANN. eR WIRD AUFGEFORDERT, EINEN ANDEREN wERT EINZUGEBEN. dURCH resume ZEILE WIRD HIER AB DER AUCH SONST BEN&OUML;TIGTEN eINGABE WIEDERHOLT. 930: hIER WIRD ANGENOMMEN, AUF DIE FEHLERHAFTE aNWEISUNG KANN AUCH VERZICHTET WERDEN. dESHALB WIRD EINFACH MIT DER N&AUML;CHSTEN aNWEISUNG WEITERGEMACHT. dENKBAR W&AUML;RE HIER AUCH DIE aNWEISUNG 'Q=1E34' ALS fEHLERKORREKTUR. 940: dIES IST EIN bEISPIEL F&UUML;R EINE fEHLERPROTOKOLLIERUNG AUF dRUCKER. sELBSTVERST&AUML;NDLICH KANN DIES AUCH ZUS&AUML;TZLICH ZU ANDEREN mA&SZLIG;NAHMEN GEMACHT WERDEN. 950: aLS aLTERNATIVE ZUR ENGLISCHEN fEHLERMEIDUNG KANN VERSUCHT WERDEN,DENfEHLER AUSF&UUML;HRLICHER UND IN ANDERER sPRACHE ZU MEIDEN. dAZU K&OUML;NNTE MAN AUCH ALLEfEHLERMEIDUNGEN &UUML;BERSETZEN, AUS data IN EIN sTRINGFELD LESEN UND &UUML;BER ec ALS iNDEX ZUGREIFEN. 990: f&UUML;R DEN fALL, DA&SZLIG; division by zero NOCH IN EINER ANDEREN zEILE AUFTRITT, DIE HIER NICHT VORGESEHEN IST, SOLL DER fEHLER ANALOG ZU 900 GEMELDET WERDEN. dIE m&OUML;GLICHKEITEN DER error-bEHANDLUNG K&OUML;NNEN HIER NUR ANGEDEUTET WERDEN. gENAUSO WIE eRFAHRUNG DAZUGEH&OUML;RT, fEHLER ZU FINDEN UND PR&AUML;VENTIV ZU VERHINDERN, SO IST ES NICHT EINFACH, DENKBARE fEHLER ZU KORRIGIEREN, NACHDEM SIE AUFGETRETEN SIND.


3.17.5 lISTE DER fEHLERMELDUNGEN eINIGE DER mELDUNGEN MIT NEGATIVEM cODE SIND KEINE fEHLERMELDUNGEN IM LAUFENDEN pROGRAMM; SIE WERDEN ALSO IN zUSAMMENHANG MIT on error NICHT AUFTRETEN.'*' STEHT ERSATZWEISE F&UUML;R chr$(13) (cr). ec eo error(e0) -1 0 too many files -2 14 file open -3 23 file not open -4 36 file not found -5 50 *searching -6 61 for -7 65 *load -8 70 *verify -9 77 device not present -10 95 *found -11 102 *ok* -12 106 *ready -13 114 *are you sure? -14 129 *? bad disk * +1 0 next without f'or +2 16 syntax +3 22 return without gosub +4 42 out of data +5 53 illegal quantity +6 69 basic stack overflow +7 89 out of memory +8 102 undefid statement +9 119 bad subscript +10 132 redim'd array +11 145 division by zero +12 161 illegal direct +13 175 type mismatch +14 188 string too long +15 203 file data +16 212 formula too complex +17 231 can't continue +18 245 undef'd function


3.18 dispose zWECK dURCH dispose KANN DER basic-sTACK MANIPULIERT WERDEN. fOLGENDE 4 m&OUML;GLICHKEITEN SIND GEGEBEN: fORMAT dispose next dispose return dispose LEVEL dispose next,return,next USW dispose next eNTFERNT DIE sCHLEIFE, IN DER SICH DAS pROGRAMM GERADE BEFINDET, VOM sTACK. dIE lAUFVARIABLE BEH&AUML;LT DABEI IHREN AKTUELLEN wERT. dURCH DIESEN bEFEHL K&OUML;NNEN sCHLEIFEN, DEREN lAUFVARIABLE DEN eNDWERT NOCH NICHT &UUML;BERSCHRITTEN HAT, KONFLIKTFREI VERLASSEN WERDEN. wENN IM sTACK AN ERSTER sTELLE KEINE sCHLEIFE, SONDERN EIN uNTERPROGRAMM LIEGT, WIRD fEHLER GEMELDET (return without gosub error). dispose return eNTFERNT DAS uNTERPROGRAMM, IN DEM SICH DAS pROGRAMM GERADE BEFINDET, VOM sTACK. dABEI WIRD DER ENTSPRECHENDE r&UUML;CKSPRUNG NICHT AUSGEF&UUML;HRT UND DIE aDRESSE VERGESSEN. sPEZIELL F&UUML;R fEHLERMEIDUNGS-vERFAHREN N&UUML;TZLICH. wENN IM sTACK AN ERSTER sTELLE KEIN uNTERPROGRAMM, SONDERN EINE sCHLEIFE LIEGT, WIRD fEHLER GEMELDET (next without for error). dispose LEVEL LEVEL: eBENE ZWISCHEN 1 UND N dER sTACK WIRD AUF DIE DURCH 'LEVEL' ANGEGEBENE eBENE GESETZT. eS IST GLEICHG&UUML;LTIG, OB DIESE eBENE EIN uNTERPROGRAMM ODER EINE sCHLEIFE ENTH&AUML;LT. dispose 1 LEERT DEN sTACK VOLLST&AUML;NDIG AUS, BRINGT IHN ALSO IN DEN zUSTAND, DEN ER NACH run HAT. f&UUML;R fEHLERMEIDUNGS-vERFAHREN N&UUML;TZLICH. wENN LEVEL NEGATIV ODER GR&OUML;&SZLIG;ER ALS 255 ODER GR&OUML;&SZLIG;ER ALS DER AKTUELLE sTACK-lEVEL IST, WIRD illegal quantity GEMELDET.


bEISPIELE 10 FOR I = 1 TO 1000 :IF A$(I) = "" THEN DISPOSE NEXT :PRINT "ERSTES LEERES EIEMENT HAT DEN INDEX" I :ELSE NEXT :PRINT "KEIN LEERES ELEMENT" 30 10 ON ERROR 20 : GOTO 50 20 IF EL . . . 40 PRINT "UNERWARTETE FEHLERMEIDUNG:" ERROR (EO) " ERROR IN ZEILE "EI 42 INPUT "WARMSTART (J/N)";I$ :IF I$ = "I" THEN RESUME 44 : ELSE RESUME ERROR 44 DISPOSE 1 : GOTO 1000 : REM WARMSTART-PUNKT


3.19 input / print - &PARA;(ZEILESPALTE) zWECK dIE sONDERANWEISUNG '&PARA; (ZEILE,SPALTE)1 HINTER print BZW. input BEWIRKT, DA&SZLIG; DER cURSOR AUF DIESE ABSOLUTE bILDSCHIRMPOSITII)N GESETZT WIRD. fORMAT print &PARA; (ZEILE,SPALTE) VARIABLENLISTE input &PARA; (ZEILE,SPALTE) VARIABLE ZEIGE:0...24 SPALTE:0...79 ( &PARA; IST DER kLAMMERAFFE / chr$(64) aNMERKUNGEN dIE aNGABE VON sPALTE KANN ENTFALLEN; eRSATZWERT IST 0. hINTER input &PARA; () DARF IM gEGENSATZ ZUM NORMALEN input NUR EINE EINZIGE vARIABLE KOMMEN. dAS SONST &UUML;BLICHE fRAGEZEICHEN ERSCHEINT DABEI NICHT AUF DEM bILDSCHIRM UND DER cURSOR KANN NUR AB DEM aUFSETZPUNKT BIS ANS eNDE DER zEILE BEWEGT WERDEN. wEITERE eINZELHEITEN SIND BEI input BZW input using ZU FINDEN. hINTER print K&OUML;NNEN MEHRERE (ZEILEN,SPALTEN) aNGABEN KOMMEN. bEI vERWENDUNG DIESER aNWEISUNG ZUSAMMEN MIT bILDSCHIRMFENSTERN K&OUML;NNEN sCHWIERIGKEITEN AUFTRETEN, WENN DER cURSOR AU&SZLIG;ERHALB DES bILDSCHIRMFENSTERS AUFGESETZT WIRD! bEISPIELE PRINT 5 (10,20) "TEXT" 'TEXT' AB zEILE 10, sPALTE 20 DRUCKEN PRINT &PARA; (10) "TEXT" zEILE 10, sPALTE 0 PRINT &PARA; iTEXTL' AB zEILE 10, sPALTE (10,20)"TEXTL"&PARA;(10,25)"TEXT2" 20, 'TEXT2' AB sPALTE 25 DRUCKEN PRINT &PARA; (10,20); NUR cURSOR POSITIONIEREN INPUT &PARA; (10,40) i$ eINGABE BEI zEILE 10, sPALTE 40 BEGINNEN


3.20 using zWECK using IST EINE sTRINGFUNKTION, DIE MEHRERE vARIABLENINHALTE GEM&AUML;&SZLIG; EINER fORMATVORSCHRIFT IN EINEN sTRING EINBAUT. iM gEGENSATZ ZU ANDEREN dIALEKTEN IST using UNABH&AUML;NGIG VON print REALISIERT, KANN ABER INSBESONDERE AUCH HINTER print VERWENDET WERDEN. iN zUSAMMENHANG MIT input VOM bILDSCHIRM HAT using sONDERBEDEUTUNG. fORMAT: a$ = using ( FORMAT , VAR-LISTE ) using IST IM dIREKTMODUS NICHT ERLAUBT, WEIL ES DEN input-pUFFER VERWENDET. (illegal direct error). aUS DEMSELBEN gRUND DARF EIN using ALS aRGUMENT KEIN WEITERES using HABEN. FORMAT: dIE fORMAT-aNGABE IST EIN sTRINGAUSDRUCK. iN DER pRAXIS WIRD ES ENTWEDER EINE sTRINGVARIABIE ODER EINE sTRINGKONSTANTE SEIN. FORMAT KANN NICHT WIE MANCHMAL &UUML;BLICH AUF EINE basic-zEILE VERWEISEN, DIE DIE fORMATANGABE ENTH&AUML;LT. FORMAT ENTH&AUML;LT IN fORM VON sONDERZEICHEN DIE fORMATIERUNGSVORSCHRIFT F&UUML;R DIE iNHALTE DER VAR-LISTE. dIESE zEICHEN SIND NACHFOLGEND BESCHRIEBEN. tEXTFELD: aPOSTROPH LEITET EIN tEXTFELD EIN UND sCHR&AUML;GSTRICH SETZT ES FORT. aPOSTROPH UND sCHR&AUML;GSTRICH BILDEN JEWEILS EIN zEICHEN EINES tEXTFELDES. "'////////'/////{$60}{$60}/" DEFINIERT 4 tEXTFELDER MIT DEN l&AUML;NGEN 9, 6, 1, 2 123456789123456112 tEXT WIRD LINKSB&UUML;NDIG INS fELD GEDRUCKT UND RECHTS MIT bLANKS AUFGEF&UUML;LLT BZW. ABGESCHNITTEN. aPOSTROPH IST ABSOLUT RESERVIERT. wILL MAN IHN DRUCKEN, SO WIRD DIES FOLGENDERMA&SZLIG;EN ERREICHT: a$ = using ("sm'S basic-96","'") ERGIBT sm'S basic-96 sCHR&AUML;GSTRICH IST NUR HINTER aPOSTROPH BZW. sCHR&AUML;GSTRICH HINTER aPOSTROPH RESER- VIERT. nACH EINEM BELIEBIGEN ANDEREN zEICHEN WIRD ER ALS NORMALES zEICHEN INTER- PRETIERT. eIN oPERATOR F&UUML;R VARIABEL LANGE fELDER WIRD NICHT VORGESEHEN, DA DIES DURCH kETTUNG VON using, sTRING, using LEICHT ERREICHT WERDEN KANN.


zAHLEN: dOPPELKREUZ REPR&AUML;SENTIERT GENAU EINE zIFFER, pUNKT DEN dEZIMALPUNKT, kOMMA tAUSENDERKOMMA, sCHR&AUML;GSTRICH tAUSENDER-bLANK: ('dOPPELKREUZ, IST DAS shift-zEICHEN &UUML;BER DER '3'-tASTE) dIE aNZAHL VON vOR- UND nACHKOMMASTELLEN SOLLTE ZUSAMMEN NICHT 9 &UUML;BERSTEIGEN. mEHR ALS 9 sTELLEN BEWIRKEN FOLGENDES: mU&SZLIG; EINE zAHL MIT 9 sTELLEN RECHTS MIT nULLEN AUFGEF&UUML;LLT WERDEN, UM DIE fORMATIERUNGSVORSCHRIFT ZU ERF&UUML;LLEN, SO FINDET &uUML;BERLAUF IN eXPONENTIALDARSTELLUNG STATT. dIES IST N&OUML;TIG, DA SONST OPTISCH EINE NICHT VORHANDENE rECHENGENAUIGKEIT VORGET&AUML;USCHT WERDEN W&UUML;RDE. iM fALL VON DEFINIERTEN nACHKOMMASTELLEN IST DER eXPONENT UM DIE aNZAHL nACHKOMMASTELLEN ZU GRO&SZLIG;, ES WIRD ALSO EIN FEHLERHAFTER eXPONENT AUSGEGEBEN. dAGEGEN KANN LINKSB&UUML;NDIG MIT bLANKS ODER '*' BELIEBIG AUFGEF&UUML;LLT WERDEN. bEIPIELE UND sONDERF&AUML;LLE DER zAHLENFORMATIERUNG a$ = using("###.## ###,###,## ###/###/###", 123.456, 123456789, 123456789) ERGIBT: 123.46 123,456,789.00 123 456 789 tRENN-kOMMA WIRD NUR GEDRUCKT, WENN LINKS WEITERE zIFFERN KOMMEN: a$ = using("###,###,###.## ###,###,###", 123456789, 123456) ERGIBT: 123,456,789.00 123,456 gRENZFALL 0 vORKOMMASTELLEN: a$ = using("###.## ##",.123,.123) ERGIBT: 0.12 .12 f&UUML;HRENDE vORKOMMANULLEN WERDEN DURCH bLANKS ERSETZT MIT aUSNAHME DER ERSTEN. dIES GILT NICHT, WENN IM fORMAT KEINE vORKOMMASTELLE VORGESEHEN IST. &uUML;BERLAUF WIRD DURCH EIN & IN DER LETZTEN sTELLE SIGNALISIERT, SOFERN DIE zAHL NICHT DURCHvERSCHIEBEN ZU 'RETTEN' IST. a$=using("###.## ###.## ###.##", 1234.567,12345.67,123456.7,1234567) ERGIBT 1234.6 12346. 123457 12345& dADURCH WIRD DER wERT DER zAHL GERUNDET RICHTIG WIEDERGEGEBEN, SOLANGE SIE NUR UM SOVIELE vORKOMMASTELLEN GR&OUML;&SZLIG;ER IST, WIE nACHKOMMASTELLEN VORGESEHEN SIND. dA&SZLIG; DIE zAHL IN DIESEM fALL NICHT MIT DER RICHTIGEN nACHKOMMAANZAHL GEDRUCKT WIRD, IST BEI tABELLEN EINDEUTIG ERKENNBAR; IN ANDEREN f&AUML;LLEN NUR, WENN DAS fORMAT BEKANNT IST. vORZEICHEN: dER pLATZ F&UUML;R EIN vORZEICHEN IST IMMER EXPLIZIT ANZUGEBEN ###.## KEIN vORZEICHEN M&OUML;GLICH, SONST &uUML;BERLAUF-rEAKTION +###.## + ODER - VOR DER zAHL AUSGEBEN (EXPLIZITES pLUS) -###.## NUR - VOR DER zAHL AUSGEBEN (IMPLIZITES pLUS = bLANK) ###.##+ + ODER - NACH DER zAHL AUSGEBEN (EXPLIZITES pLUS) ###.##- NUR - NACH DER zAHL AUSGEBEN (IMPLIZITES pLUS = bLANK)


sCHECKSCHUTZ: dURCH EINEN F&UUML;HRENDEN sTERN IM FORMAT WERDEN BEIM aUSDRUCK F&UUML;HRENDE bLANKS DURCH sTERNE ERSETZT: a$ = using("*##,###,###.## *##,###,###",123456,) ERGIBT:****123,456.00 **********0 dER sTERN REPR&AUML;SENTIERT EBENSO WIE dOPPELKREUZ EINE zIFFER! dIE ERSTE vORKOMMASTELLE WIRD DURCH nULL ANSTATT sTERN DARGESTELLT. wURDE EINE vORZEICHENSTELLE RESERVIERT, SO WIRD IN DIE LINKE sPALTE bLANK STATT sTERN GEDRUCKT. uNMITTELBAR NACH '*' DARF KEIN 'tAUSENDER-kOMMA' STEHEN; DIES F&UUML;HRT ZU fEHLFORMATIERUNGEN. eXPONENTIALDARSTELLUNG: vIER &-zEICHEN RESERVIEREN pLATZ F&UUML;R DEN eXPONENTEN UND SCHALTEN AUF eXPONENTIALDARSTELLUNG. dIE mANTISSE WIRD IMMER MIT EINER vORKOMMASTELLE AUSGEGEBEN. dER eXPONENT HAT IMMER DIE fORM 'e', vORZEICHEN, ZWEI zIFFERN eXPONENT. bEI EINSTELLIGEM eXPONENT IST DIE F&UUML;HRENDE zIFFER EINE 0. wIEDERHOLUNG: eIN fORMAT KANN VON MEHREREN vARIABLEN 'BEN&UUML;TZT' WERDEN. dAS GANZE fORMAT WIRD AUTOMATISCH WIEDERHOLT: a$ = using ("###.## ",123.45,234.56,345.67) ERGIBT: 123.45 234.56 345.67 a$ = using("'//////// ### : ",MUELLER,25,MAIER,36) ERGIBT: MUELLER 25 : MAIER 36 : wENN usng ALLEINE ODER IN zUSAMMENHANG MIT print VERWENDET WIRD, VERH&AUML;LT ES SICH WIE EINE sTRINGFUNKTION, &UUML;BERGIBT ALSO GENAU EINEN sTRING. dAGEGEN HATusing IN zUSAMMENHANG MIT input VOM bILDSCHIRM EINE dOPPELFUNKTION: eINMAL WIRD GENAUSO WIE BEI print DER iNHALT DER e/a-vARIABIE FORMATIERT AUF DEN bILDSCHIRM GESCHRIEBEN UND ZWAR GENAU AN DER eINGABEPOSITION. zUM ZWEITEN SIND BEI NUMERISCHER eINGABE NUR zIFFERNTASTEN USW. ERLAUBT UND DER cURSOR KANN NICHT AUS DEM DURCH DAS fORMAT DEFINIERTE eINGABEFENSTER ENTFERNT WERDEN. dIESE eIGENSCHAFTEN SIND IM kAPITEL input BESCHRIEBEN.


3.21 input using zWECK input using ERM&OUML;GLICHT EINE F&UUML;R pROGRAMMIERER UND aNWENDER KOMFORTABLE eINGABE, DIE WEIT &UUML;BER DIE m&OUML;GLICHKEITEN DES NORMALEN input HINAUSGEHT. zUSAMMEN MIT DER cURSORPOSITIONIERUNG DURCH '&PARA;(ZEILE,SPALTE)' ERGEBEN SICH m&OUML;GLICHKEITEN, MIT GERINGEM aUFWAND EINEN &UUML;BERSICHTLICHEN UND ABGESICHERTEN bILDSCHIRM-dIALOG AUFZUBAUEN. fORRNAT input &PARA; (ZE,SP) EINGABE-VARIABLE input using (FORMAT) EINGABE-VARIABLE input &PARA; (ZE,SP) using (FORMAT) EINGABE-VARIABLE EINGABE-VARIABLE: NUMERISCHE ODER sTRING-vARIABLE, EINFACH ODER INDIZIERT dER iNHALT DER vARIABLEN WIRD AB (ZE,SP) LINKSB&UUML;NDIG AUF DEN bILDSCHIRM GESCHRIEBEN (vORGABE) UND DER cURSOR AUF DIE ERSTE (LINKE) sPALTE GESETZT. FORMAT: WIE BEI using BESCHRIEBEN, ABER MIT FOLGENDEN eINSCHR&AUML;NKUNGEN: nUR 1 eINGABEFORMAT (//// ODER####) IST M&OUML;GLICH. vOR DEM eINGABEFORMAT K&OUML;NNEN BELIEBIGE KONSTANTE zEICHEN STEHEN ("aLTER: ###"). nACH DEM ERSTEN eINGABEFORMAT WERDEN ALLE WEITEREN aNGABEN IM fORMATSTRING IGNORIERT. tYP VON eINGABEFORMAT UND vARIABLE M&UUML;SSEN &UUML;BEREINSTIMMEN, SONST ERFOLGT type-mismatch-mELDUNG. vERHALTEN DES bILDSCHIRM-eDITURS BEI DER eINGABE: dER cURSOR KANN AUS DIESER bILDSCHIRMZEILE NICHT ENTFERNT WERDEN: cURSOR-vERTIKAL-tASTEN SIND WIRKUNGSLOS. del WIRKT NUR RECHTS VOM aUFSETZPUNKT. home STELLT ALTEN iNHALT NOCHMAL HER, SOLANGE NICHT DURCH return &UUML;BERNOMMEN WURDE. clr L&OUML;SCHT RECHTE zEILENH&AUML;LFTE AB aUFSETZPUNKT. return &UUML;BERNIMMT fENSTER-iNHALT IN vARIABLE. lEERE eINGABE BEI sTRING ERZEUGT LEEREN sTRING. bEI NUMERISCHER vARIABLE IST DIE LEERE eINGABE NICHT ZUGELASSEN, D.H. AUS LEEREM zAHLENFENSTER KOMMT MAN NICHT RAUS. dIE rEAKTION IST WIE BEI home. stop BEWIRKT DIE r&UUML;CKKEHR INS basic-pROGRAMM UND VON DORT break, SOFERN DIES NICHT VERHINDERT WURDE. bEI NUMERISCHER eINGABE (NUMERISCHE vARIABLE) SIND NUR DIE zIFFERNTASTEN SOWIE pUNKT, kOMMA, e, +, - UND bLANK ZUGELASSEN.


using HINTER input HAT ZUS&AUML;TZLICH ZU DEN BISHER GENANNTEN NOCH DIE FOLGENDEN wIRKUNGEN: dAS eINGABEFENSTER IST NICHT NUR NACH LINKS, SONDERN AUCH NACH RECHTS BEGRENZT (ENTSPRECHEND DER l&AUML;NGE DES eINGABEFORMATS). dIE vORGABE WIRD ENTSPRECHEND DER fORMATVORSCHRIFT GEMACHT. vORZEICHENEINGABE IST ENTSPRECHEND DER fORMATANGABE ERLAUBT ODER NICHT. 'e' IST NUR ZUGELASSEN, WENN IM fORMAT EIN eXPONENT DEFINIERT IST. vOR &uUML;BERGABE EINER zAHL DURCH return WIRD SIE ENTSPRECHEND DER fORMATVORSCHRIFT GERUNDET UND FORMATIERT INS fENSTER GEDRUCKT. dER &UUML;BERGEBENE wERT IST GERUNDET. bEISPIEL INPUT &SZLIG;(10,20) USING ("mENGE (KG): ######.### MK


4. call/func 4.1 &uUML;BERSICHT los-96 BIETET EINE sCHNITTSTELLE ZU 'FREMDEN' mASCHINENPROGRAMMEN, DIE DANN &UUML;BER nAMEN VOM iNTERPRETER GERUFEN WERDEN. dIE los RESIDENTE sCHNITTSTELLE IST SEHR EINFACH: eMPF&AUML;NGT DER iNTERPETER DAS wORT (tOKEN) 'call' ODER 'func', SO SPRINGT ER &UUML;BER DEN vEKTOR IN 1507/1508. dER call-hANDIER WIRD DADURCH ANGESPRUNGEN, SOFERN ER GELADEN IST. eR SIEHT IN DER tABELLE, DIE DURCH DEN vEKTOR IN 1510/1511 DEFINIERT IST, NACH, AB DER HINTER call ODER func ANGEGEBENE nAME VORHANDEN IST, UND SPRINGT IM jA-fALL AUF DIE ANGEGEBENE aDRESSE. iM nEIN-fALL WIRD NOCH VERSUCHT, DEN nAMEN IN EINER rem-zEILE ZU FINDEN, DIE DANN DIE mASCHINENRAUTINE ENTH&AUML;LT. wIRD AUCH DORT DER nAME NICHT GEFUNDEN, WIRD undef'd function error GEMELDET. dA SICH DIESE bESCHREIBUNG NUR AN ERFAHRENE aSSEMBIERPROGRAMMIERER RICHTET, BITTEN WIR sIE, ANHAND DES AUF DER dISKETTE ENTHALTENEN dEMOS DIE EINZELNEN eIGENSCHAFTEN NACHZUVOLLZIEHEN, WENN sIE SELBST eRWEITERUNGEN SCHREIBEN UND ANKOPPELN WOLLEN. 4.2 dIE tABELLE call BZW. func RUFT EIN mASCHINENPROGRAMM &UUML;BER EINEN nAMEN AUF. dIE nAMEN UND eINSPRUNGADRESSEN DER pROGRAMME STEHEN IN tABELLEN. dIE tABELLE IST FOLGENDERMA&SZLIG;EN AUFGEBAUT: iM ERSTEN tEIL DER tABELLE STEHEN DIE aDRESSEN DER rOUTINEN UND uNTERTABELLEN, IM ZWEITEN tEIL DIE DAZUGEH&OUML;RIGEN nAMEN. dIE eINTRAGUNGEN IN DER aDRESSTABELLE K&OUML;NNEN L&AUML;NGER ALS ZWEI bYTES SEIN. dIE l&AUML;NGE EINER eINTRAGUNG STEHT IM ZWEITEN bYTE DER tABELLE. dIE ERSTEN BEIDEN bYTES EINER eINTRAGUNG WERDEN ALS sTARTADRESSE VERWENDET. bEIM aUFRUF DES mASCHINENPROGRAMMS ZEIGT (31/32) IN DIE tABELLE AUF DAS lOW-bYTE DER sPRUNGADRESSE. eINE tABELLE KANN MEHRERE uNTERTABELLEN BESITZEN. dIE uNTERTABELLEN SIND GENAUSO AUFGEBAUT, WIE DIE hAUPTTABELLE. sIE WERDEN NUR DURCHSUCHT, WENN DER AUFGERUFENE nAME IN DEN ERSTEN zEICHEN MIT DEM nAMEN DER uNTERTABELLE &UUML;BEREINSTIMMT. wENN DIE uNTERTABELLE AUF JEDEN fALL DURCHSUCHT WERDEN SOLL, WIRD KEIN nAME F&UUML;R DIE uNTERTABELLE ANGEGEBEN. eINE uNTERTABELLE KANN WIEDER uNTERTABELLEN ENTHALTEN. bYTE iNHALT 0 0 = oFFSET ZUR nAMENSTABELLE 1 l = l&AUML;NGE EINER eINTRAGUNG IN DER aDRE&SZLIG;TABELLE 2...l+L ERSTE aDRESSE . . . 0 ... 0+11-1 ERSTER nAME (l&AUML;NGE 11) 0+11 eNDEZEICHEN (S.U.) . . . 0 tABELLENENDE eNDEZEICHEN: jEDER nAME IN DER tABELLE MU&SZLIG; DURCH EIN eNDEZEICHEN BEGRENZT WERDEN:


eNDEZEICHENbEDEUTUNG 1 aUFRUF ALS call 2 aUFRUF ALS func 3 nAMEN NICHT BER&UUML;CKSICHTIGEN (Z.b. pROGRAMM NICHT GELADEN) 4 uNTERTABELLE 4.3 aUFRUF VON call ODER func VOM bETRIEBSSYSTEM bEIM eRKENNEN EINES call IN DER iNTERPRETERSCHLEIFE ODER func IN DER fORMELAUSWERTUNG SETZT DER iNTERPRETER DIE zELLE 94 AUF 1 (BEI call) BZW. 2 (BEI func) UND SPRINGT AUF DIE call-rOUTINE &UUML;BER DEN vEKTOR (1507/1508). bEIM sTART DES sYSTEMS ZEIGT DIESER vEKTOR AUF syntax error, SO DA&SZLIG; BEI NICHT GELADENEM call-HANDLER KEIN aBSTURZ M&OUML;GLICH IST. dER tABELLENVEKTOR (S.O.) ZEIGT BEIM sTART AUF EINE zELLE, DIE 0 ENTH&AUML;LT. dAMIT WIRD BEI NICHT GELADENER tABELLE, ABER GELADENEM call-hANDLER NUR NACH rem- rOUTINEN GESUCHT. 4.4 rem-rOUTINEN dER iNTERPRETER AKZEPTIERT HINTER rem JEDES bYTE MIT aUSNAHME VON 0 (zEILEN-ENDE). dIESE eIGENSCHAFT KANN MAN NUTZEN, UM KURZE (MAX 250 bYTES) mASCHINENPROGRAMME DIREKT INS basic-pROGRAMM ZU SCHREIBEN, WODURCH WEITERE nACHLADEVORG&AUML;NGE UND pLATZRESERVIERUNGEN &UUML;BERFL&UUML;SSIG SIND. dA rem-rOUTINEN IN DER rEGEL VERSCHIEBBAR SEIN M&UUML;SSEN, D&UUML;RFEN KEINE ABSOLUTEN sPR&UUML;NGE (jmp, jsr AUF DIESE ODER ANDERE rem-rOUTINEN UND KEINE lADE- ODER sPEICHERBEFEHLE AUF DENbEREICH DES basic-pROGRAMMS VORHANDEN SEIN. rem-rOUTINEN UNTERHALB VON 32768 (NACH UNTEN VERL&AUML;NGERTER prg-bEREICH) WERDEN DIREKT AUSGEF&UUML;HRT, SOLCHE VON OBERHALB 32766 (nORMALFALL) WERDEN VOM call-hANDLER IN DEN iNPUT-bUFFER (pAGE 2) KOPIERT UND DANN AUSGEF&UUML;HRT. iM dIREKTMODUS ERFOLGT IN SOLCHEN f&AUML;LLEN illegal direct error. wENN rem-rOUTINEN IMMER OBERHALB VON 32768 STEHEN, K&OUML;NNEN sIE DIREKT F&UUML;R DIE ZWEITE pAGE ASSEMBLIERT WERDEN UND DANN ABSOLUTE sPR&UUML;NGE UND sPEICHERZUGRIFFE AUF SICH SELBST ENTHALTEN. rem rOUTINEN M&UUML;SSEN UNMITTELBAR NACH DEM rem-tOKEN DEN nAMEN ENTHALTEN. dER nAME KANN EIN tOKEN SEIN ODER tOKEN ENTHALTEN.


sYSTEM- UND bEISPIELPROGRAMME zUS&AUML;TZLICH ZU DEN BEIDEN UNBEDINGT N&OUML;TIGEN pROGRAMMEN (UNTERSTRICHEN) SIND AUF DER los-dISKETTE NOCH EINIGE KLEINE hILFSPROGRAMME, DIE NEBENBEI EINIGE DER NEUEN pROGRAMMIERM&OUML;GLICHKEITEN ZEIGEN. zUERST EIN &uUML;BERBLICK &UUML;BER DIE dISKETTE- 0 "LOS-96/SM/010182" HG 2C 1 91 "LOS96.......110M" PRG bETRIEBSSYSTEM-oBJEKTCODE 2 5 "START-CATAL.CV0P" PRG cATALOG$-dEMO ALS sTARTPROGRAMM 3 4 "START/CALL..CULP" PRG lADER F&UUML;R call-oPTION 4 2 "CALL.E65169.CU0M" PRG call-oBJEKTCODE 5 1 "TAB.E32614..CU0M" PRG dEMO F&UUML;R call/func 6 3 "ZEIGER-MONITCV0P" PRG ZEIGT DIE EINGESTELLTEN sPEICHERBEREICHE 7 3 "CS(CATAL-SCREEN)" PRG bILDSCHIRMPROGRAMM F&UUML;R cATALOG IM dIREKTMODUS 8 2 "FEHLERCODES.CT0P" PRG DRUCKT fEHLERMEIDUNGEN MIT ec/eo - cODES 9 2 "PRG-UNTERGRENZE" PRG pROGRAMM-uNTERGRENZE VER&AUML;NDERN 1939 BLOCKS FREE. 1) dAS bETRIEBSSYSTEM SOLLTE IMMER ALS ERSTE dATEI IM dIRECTORY STEHEN, UM DEN EINFACHEN sTART DURCH shift/run ZU ERM&OUML;GLICHEN. 2) eIN GANZ BRAUCHBARES dIRECTORY-dRUCK-pROGRAMM, DAS DIE aNWENDUNG VON catalog$ ZEIGT. 3/4/5) wENN DIE call-oPTION VERWENDET WERDEN SOLL, MU&SZLIG; DAS pROGRAMM (4) AUF DER dISKETTE SEIN. (3) L&AUML;DT DIE oPTION IN DEN DAF&UUML;R VORGESEHENEN sPEICHERBEREICH AN DER oBERGRENZE DES pROGRAMMBEREICHES UND RESERVIERT DEN BEN&OUML;TIGTEN pLATZ VOR basic. aLS bEISPIEL L&AUML;DT (3) EINE KLEINE demo-eRWEITERUNG, DIE F&UUML;R iNTERESSIERTE DAS pRINZIP VERDEUTLICHEN KANN (S. DAZU DIE call- bESCHREIBUNG): FUNC F1 (3) 6 ? FUNC F2 (3) 1.5 CALL HL HL CALL H2 H2 6) ZEIGT DIE AKTUELLE eINSTELLUNG DES pROGRAMM- UND vARIABLENBEREICHES 7) DA catalog$ IM dIREKTMODUS ETWAS UNHANDLICH IST, WURDE DIESES KLEINE pROGRAMM AUF DEN bILDSCHIRM GESCHRIEBEN. eS WIRD DURCH LOAD &PARA;32768,"CS* DIREKT IN DEN bILDSCHIRM GELADEN, OHNE pROGRAMM UND vARIABLE ZU BEEINFLU&SZLIG;EN (MIT aUSNAHME VON a$( UND a$ iN DER ZWEITEN bILDSCHIRMZEILE STEHEN ALLE pARAMETER VON catalog$. &aUML;NDERN sIE DIE vORGABEN, WIE GEW&UUML;NSCHT UND DR&UUML;CKEN sIE ZWEIMAL return. nACH KURZER zEIT ERSCHEINT DAS dIRECTORY IM bILDSCHIRM. fALLS EIN LANGES dIRECTORY ZU SCHNELL DURCHL&AUML;UFT, DR&UUML;CKEN sIE NACH DEM eNDE EINFACH NOCHMAL return. 8) dIESES KLEINE pROGRAMM DRUCKT ALLE fEHLERCODES MIT ec UND eo AUF bILDSCHIRM ODER dRUCKER. 9) mIT DIESEM pROGRAMM K&OUML;NNEN sIE DIE prg-bEREICH- uNTERGRENZE VER&AUML;NDERN. zWEI BEN&OUML;TIGTE aBSICHERUNGEN SIND IN DIESEM pROGRAMM ENTHALTEN, DIE DRITTE FEHLT: WENN DER pROGRAMMBEREICH UNTERHALB VON 32768 BEGINNEN SOLL, MU&SZLIG; GEFRAGT WERDEN, OB DER vARIABLENBEREICH (42/43) NICHT AUCH SCHON UNTERHALB BEGINNT.