itrucchi del CP/M di Pierluigi Panunzi · sic con un salto alla locazione iniziale. Tra parentesi...

5
MBasic Per alcune puntate questa rubrica sarà dedicata all'M Basic, il Basic della Micro- soft che può ormai essere considerato prati- c~mente uno standard (almeno in ambiente CP/ M), vista la quantità e varietà delle macchine che ne fanno uso, Poco importa se ogni singola casa ha ap- portato alcune modifìche o aggiunte di istru- ::ioni: il nucleo principale, !'idea di base è sempre la stessa. Cercheremo, anche con l'aiuto dei lettori, di svelare via via i segreti - e perchè no - i trucchi del mestiere riguardanti questo lin- guaggio veramente alla portata di tutti, esperti programmatori o neojiti. 1/ compito è alquanto arduo: la versione 5.21 dell'M Basic è lunf::a qualcosa come 24K. .. Proprio per cominciare proponiamo suhi- to una modi/ìca assolutamente originale alla versione 5.21: non una scopia::::atura da ri- viste americane o inf::lesi, ma/rullo di note- vole impef::no nello studio del sistema opera- tivo CP/M e dell'MBasic stesso. Basic & Assembler: la soluzione Prima di vedere di cosa si tratta, tornia- mo per un istante al problema che ha poi originato la soluzione proposta: leggendo i numeri 19,20 e 21 di MCmicrocomputer nella rubrica "I trucchi del CP/M", i lettori si saranno convinti che il poter lavorare contemporaneamente in Basic e in lin- guaggio macchina comporta enormi pro- blemi, tutto perchè ci si "ostina" a voler creare un certo spazio di memoria destina- to alle routine in L.M., posto "in fondo alla memoria", creando una barriera op- portuna allo scopo di impedire intrusioni da parte del Basic. La soluzione che proponiamo consiste invece nel riservarsi uno spazio opportuno proprio alla fine dell'interprete M Basic, "prima" delle zone di buffer e della zona riservata all'utente. 160 itrucchi del CP/M Ma procediamo con ordine, dall'inizio: alla chiamata dell'interprete, il CCP prov- vede a caricare il programma chiamato (MBASIC.COM per l'appunto) allocan- dolo come al solito a partire dalla locazio- ne esadecimale OIOOH. Terminato il cari- camento il CCP passa il controllo all'M Ba- sic con un salto alla locazione iniziale. Tra parentesi si può ancora una volta notare che anche l'MBasic viene trattato come un qualsiasi programma in linguag- gio macchina ... Andiamo ora perciò a vedere cosa succe- de a partire da tale locazione: a tale scopo consigliamo i lettori di tenere sott'occhio il listato. Tralasciando (per il momento ...) alcune parti di non immediata interpretazione, troviamo invece alcuni frammenti di pro- gramma notevolissimi e sui quali ci soffer- meremo in dettaglio. Innanzitutto alla locazione O100H c'è una Jp SD71 H e questo già spiega il perchè dell'indirizzo di partenza del disassembla- to: ricordiamo che stiamo trattando la re- lease 5.21 e che quindi ci potranno essere lievi differenze con le altre versioni. Tra gli indirizzi SDB8H (d'ora in poi sottenderemo con la lettera H che si tratta di valori esadecimali) e SDBAH si ha l'inse- rimento in opportune celle di alcuni indi- rizzi ricavabili dal BIOS del computer su cui stiamo lavorando, indirizzi che verran- no usati per le routine di gestione della consolle (stato e I/O) e della stampante (stato). Proseguendo nell'analisi troviamo: - a SDEEH viene posta a 256 byte (0080H) la lunghezza del record costituen- te un file generico. - a SEOOH si ottiene l'indirizzo della massima locazione di RAM a disposizione del BASIC. - a SE06H si pone a 3 il valore del nume- ro massimo di file apri bili contemporanea- mente da programma. Prima di prosoguire ci fermiamo per una doverosa pausa di riflessione. I lettori di Pierluigi Panunzi esperti avranno già riconosciuto l'impor- tanza di questi tre parametri citati: in parti- colare questi tre parametri possono venire alterati a piacimento all'atto della chiama- ta dell'MBasic. In particolare la lunghezza del record può essere variata inviando, anzichè il solo "M Basic", la stringa MBASIC/S:nnnn do- ve nnnn rappresenta la nuova lunghezza desiderata. Analogamente si ha se vogliamo abbas- sare l'indirizzo della massima locazione di memoria disponibile oppure se vogliamo avere la possibilità di aprire più di tre file in un programma scritto in Basic: rispettiva- mente si dovrà impostare /M:xxxxx e /F:yy. Da notare che i valori nnnn, xxxxx e yy possono essere indifferentemente deci- mali o esadecimali (se preceduti da &H). Ad esempio si potrà scrivere: A> MBASIC /M:&H8000 /F:S /S: 100 per avere una zona di memoria limitata a 8000H e cinque file aventi record di 100 caratteri. Ecco che tra gli indirizzi SEICH e SEB7H abbiamo appunto una routine che legge la stringa di comando per vedere se ci sono eventuali "1" e in caso affermativo effettuare le modifiche ai valori di default in base ai valori impostati. Dal prossimo numero ci sarà anche il SOFTWARE MBASIC Inviateci i vostri programmi (e routine); come consueto, quelli pubblicati saranno ricompensati. Se inviate il dischetto, non dimenticate di indicare su quale macchina può essere letto; in ogni caso, allegate sempre le spiegazioni e quando possibile il listato. AI prossimo mese! MCmicrocomputer n. 34 - ottobre 1984

Transcript of itrucchi del CP/M di Pierluigi Panunzi · sic con un salto alla locazione iniziale. Tra parentesi...

MBasicPer alcune puntate questa rubrica sarà

dedicata all'M Basic, il Basic della Micro-soft che può ormai essere considerato prati-c~mente uno standard (almeno in ambienteCP/ M), vista la quantità e varietà dellemacchine che ne fanno uso,

Poco importa se ogni singola casa ha ap-portato alcune modifìche o aggiunte di istru-::ioni: il nucleo principale, !'idea di base èsempre la stessa.

Cercheremo, anche con l'aiuto dei lettori,di svelare via via i segreti - e perchè no - itrucchi del mestiere riguardanti questo lin-guaggio veramente alla portata di tutti,esperti programmatori o neojiti.

1/ compito è alquanto arduo: la versione5.21 dell'M Basic è lunf::a qualcosa come24K. ..

Proprio per cominciare proponiamo suhi-to una modi/ìca assolutamente originale allaversione 5.21: non una scopia::::atura da ri-viste americane o inf::lesi, ma/rullo di note-vole impef::no nello studio del sistema opera-tivo CP/M e dell'MBasic stesso.

Basic & Assembler: la soluzionePrima di vedere di cosa si tratta, tornia-

mo per un istante al problema che ha poioriginato la soluzione proposta: leggendo inumeri 19,20 e 21 di MCmicrocomputernella rubrica "I trucchi del CP/M", i lettorisi saranno convinti che il poter lavorarecontemporaneamente in Basic e in lin-guaggio macchina comporta enormi pro-blemi, tutto perchè ci si "ostina" a volercreare un certo spazio di memoria destina-to alle routine in L.M., posto "in fondoalla memoria", creando una barriera op-portuna allo scopo di impedire intrusionida parte del Basic.

La soluzione che proponiamo consisteinvece nel riservarsi uno spazio opportunoproprio alla fine dell'interprete M Basic,"prima" delle zone di buffer e della zonariservata all'utente.

160

itrucchi del CP/M

Ma procediamo con ordine, dall'inizio:alla chiamata dell'interprete, il CCP prov-vede a caricare il programma chiamato(MBASIC.COM per l'appunto) allocan-dolo come al solito a partire dalla locazio-ne esadecimale OIOOH. Terminato il cari-camento il CCP passa il controllo all'M Ba-sic con un salto alla locazione iniziale.

Tra parentesi si può ancora una voltanotare che anche l'MBasic viene trattatocome un qualsiasi programma in linguag-gio macchina ...

Andiamo ora perciò a vedere cosa succe-de a partire da tale locazione: a tale scopoconsigliamo i lettori di tenere sott'occhio illistato.

Tralasciando (per il momento ... ) alcuneparti di non immediata interpretazione,troviamo invece alcuni frammenti di pro-gramma notevolissimi e sui quali ci soffer-meremo in dettaglio.

Innanzitutto alla locazione O100H c'èuna Jp SD71 H e questo già spiega il perchèdell'indirizzo di partenza del disassembla-to: ricordiamo che stiamo trattando la re-lease 5.21 e che quindi ci potranno esserelievi differenze con le altre versioni.

Tra gli indirizzi SDB8H (d'ora in poisottenderemo con la lettera H che si trattadi valori esadecimali) e SDBAH si ha l'inse-rimento in opportune celle di alcuni indi-rizzi ricavabili dal BIOS del computer sucui stiamo lavorando, indirizzi che verran-no usati per le routine di gestione dellaconsolle (stato e I/O) e della stampante(stato).

Proseguendo nell'analisi troviamo:- a SDEEH viene posta a 256 byte(0080H) la lunghezza del record costituen-te un file generico.- a SEOOH si ottiene l'indirizzo dellamassima locazione di RAM a disposizionedel BASIC.- a SE06H si pone a 3 il valore del nume-ro massimo di file apri bili contemporanea-mente da programma.

Prima di prosoguire ci fermiamo per unadoverosa pausa di riflessione. I lettori

di Pierluigi Panunzi

esperti avranno già riconosciuto l'impor-tanza di questi tre parametri citati: in parti-colare questi tre parametri possono venirealterati a piacimento all'atto della chiama-ta dell'MBasic.

In particolare la lunghezza del recordpuò essere variata inviando, anzichè il solo"M Basic", la stringa MBASIC/S:nnnn do-ve nnnn rappresenta la nuova lunghezzadesiderata.

Analogamente si ha se vogliamo abbas-sare l'indirizzo della massima locazione dimemoria disponibile oppure se vogliamoavere la possibilità di aprire più di tre file inun programma scritto in Basic: rispettiva-mente si dovrà impostare /M:xxxxx e/F:yy. Da notare che i valori nnnn, xxxxx eyy possono essere indifferentemente deci-mali o esadecimali (se preceduti da &H).

Ad esempio si potrà scrivere:A> MBASIC /M:&H8000 /F:S /S: 100per avere una zona di memoria limitata a8000H e cinque file aventi record di 100caratteri.

Ecco che tra gli indirizzi SEICH eSEB7H abbiamo appunto una routine chelegge la stringa di comando per vedere se cisono eventuali "1" e in caso affermativoeffettuare le modifiche ai valori di defaultin base ai valori impostati.

Dal prossimo numero ci sarà anche il

SOFTWARE MBASICInviateci i vostri programmi(e routine); come consueto,

quelli pubblicati saranno ricompensati.Se inviate il dischetto,

non dimenticate di indicaresu quale macchina può essere letto;

in ogni caso, allegate semprele spiegazioni e quando possibile il listato.

AI prossimo mese!

MCmicrocomputer n. 34 - ottobre 1984

I trucchi tlel C P/ M

50/'1~;0/4507550/650/9~;O/C5D/O50BO5DB25D855013B~jOOfl50BE~;09'1~5D92~:;D93509ft

50955D'?6~;D995D9C~';l)9F5DAD~'iOA'15DA25DA35DA4~)DA~;50A6:'';l)A9~"iOAA~jDAS50AC~joAD5DAE5DAF5D80~'iDB350B't~';DB~i5DEl6~';l)BI50ElO5DI3'?5D8A~'iDI3D5DBF~:.)OC250C5~jI)C650C950CC5DCF~jDD250055DoB~'iDD950DC:"iOoF50E2~::jDE~.:j

5DElJ::ioEB5DEE:'.'joF·j~50F't~'iDFI5DFA~';D l'' D5EOO:"i[-035Ul6~.'iEOB5[(]El~.'iEOE~)E"I"1~.:i[··l 't~5E"1~5:'jEHl:;["19~'jE'l C5EIF::.:jE;~~()

~"iE;?"1~jE?'t5[;;~7~5[;.:~85[;2(1

2-12-1601"9AF3~!EC08229607E'l2"12~~()B363ACoOfi '.332650A228'10A2AO'100lYID3000900DO00DO226E4~~22't(l't;~!~~2A~~'12ori0000ODODODOD~~~~E[)'t"l09ODOD0000ODOD~~~1AC't'109DO00OD0000002~~~~[lt"1OEDCCD05003;'!'lFOOBI2-1'1 'd d

CA(T~jD~.!·12·1~.~222~~0082'lFEFF~!29001AF3;'!930132640A321"308:3;2EoOEi~J;:.!OAOI;'!'IOODO2:20CDI;2'113000~>~!EAOEl;'~"I/AOt,~>;'~/ODA;:!·1E'.OA~~~.~ftCDB;2AD6IJD~~~.~760A:3EO:3:I;}C',OI2'" B6~:.:jE:2:?9FOA:J!l8/~,,[ElIC;'!B n~;E:3C:]2B/::;I:'.;"10000n:131~!.;29Fn(.~CAI3I3~';E',6:.:!.:3lE

l.. Ol.. OXORl_DL.OL.OLOLOCALLLOLOL.oLOAODNOI"NOI"NOI"NOI"LDLDLDAoON01'NOI"NOI"NOI"NOI:>NOI"LDADDNOI"NOI"NOI'NOI"NOI'NOI"l..DADDNOI"NOI"NOI:>NOI"NOI"NOI"l.. Dl.. DCAI..LLDORLI).!1'l. I)LDLDLDXORLOLOl.D[D1...Dl..Dl.. Dl.. D[Dl_DLDL.D1...DL.DLDl..D[DLDLD1...0Oll,11'INC[DLOl_DOll1...D,.Il"LDINC[D

HL, 602"1 HSI" HLA(OBECH) A(OI'l6H) 1'·11...SI" HLHI_,013;'!2H(HL) ,:lAH4:3ElElH(OA65H),A(OAI3'HI) l-Il..HI... ([)[)0'1H)SC llDOélHHL.,IlC

(4;26EI-I) HI...('.~.~',9H) ,1-11...("1~~A;2H) HI...HI... I3C

(',"IEDH) HI...HI...,BC

(',"1 ACH) H1...HL. I3C

('.··I:?EH) 1·11...C llCHOOO~"iH<DEl'1FH) A

A1-11...1~i1411z., ~jDCFHHL. 222'1 H(OO;WH) 111...HL ,FFFTH(DI'lOH) HI...A(07,',1H) ,A«JA6',I·I) .'A(OfiF3H) ,A(OfJEoH) ,A(078AH) AHL DOOOH(O/13CH) HL.I-IL OOi3CHI(OElFAH) Hl..HL,UA/AI-I(DA/DH) ,HL1-11._OIHAH(ClB4CH) Hl..111.. (OD061-1)(DA76H) HLA U:JH<D/c',I·n AHL., ~'iEB611(DA9r'H) ,1,,11...A, (5EI3/I-1)ANl 5EBBHA(5EEl/H),AHI... ClCIDOHA (1-11...)A(OA',HI) H1...l ~jEBDIIEl (HL.)H I...A OIU

~:5E~~A5[;213~;5E2C5E205E~2E5E~~F~jE3~?5E:3:,~:)E:355E313:"iE:JB5E:lEciE,IF~5[Jt2~:jE't't~iE't7~5E'tB5EJtA~iE4D5E4E~:jE~305E~)3~.;5C~:"j6~:SE~:i7~,:)L~7jA:"iC.iD~::iE ~5V"~:5E6;?~:i[(~)tt

~:.:i[67::.:jE.S9~:SF()lq~:.)EfJD~:.)Eélr··::jE 7;.:!.~:.:j[/~::j

~:iE7i3~::jE/9~:.~FlC:"jE/U:,EBU~:.:jLn··1~:.;jFn;.~~~:.:jEn~.:,~~jFU':J:"iI...UCl~'jLClB~:.:jLU[

~.:,;j['}·i

~:.:jF,};.:.~

~;.~L?~.~j

~;,;jE96~:.;jL9'l

:'.'iF::"A:':;['/D~',;jLI~U

:";[,0"1'.;.';1:"(\'+:"i r::,v~;,;iE.I~(·t

~;jl:.tIU~.'i[m'.~;.;jF (~ll'''

~'j"Il;:.~:)[B3~;:jLH6~iEBI:"iEUO~;jL[)'f

:'.'iEUC~.'iEUD:"j[CCl'5[CI~;.;iEC;?~5EC~:.:j:"j[CB5ECU~j[CI:~.'i[D··1~;:jFD;?~,[D~;:"i[D(;:'iED/!.:,;iLDD~;.;jFD(?

',l'DA:"j[FH;~.i[DC

772~J2:1O~:jC~?295E~!.B,160U2;;'~(fFDA2'I/FOUCDU:j1381CA13fJ~'iEFE;:!FC(.'~~jD:::jE

;'!El~J6 ~.~;;.~;~~~?9FOA~!:JFE;2FCA~jD5ECD05'1:3131c;.:.~'t E ~:jEC:JBU:'iE:J60DCUU:"jI3F'[,'i:'lCA!l'.~.j[FI...'.DF~j

CA7;?~.:ìl::FL't6Ci;;C'IUCCDU:.YI:JCDC/',::!JACU~'j~:;1c1""1CA? 1 ~:.:jLlAIJ?C;?IB'I ,;7nr'L"IOD;:"1 D'1 /.J;,:_~CltClC]9f.)~:;j[

[n;?;;!./60ttLn.:::'DCDU~;,;j'l ::ic!,no~',[CUCI!.::;

c ::l(';'.~~.;.;;LCD()~','I ::lCDC7't~]

: ~l') :;.'i ~5 '-1 ("'[Il;:>;:.![",DElEUCJ9Ò~'.;;LDODD;'U;?A7 \~nA:;::B

~:.nE::;j

JAC'.1I1;?"l ()F~::jl)~:';?A;?n7"1"1A'.DI];.:,:C'tCl!::~c0"1 t,'/DDEU13

[U0'1Ld

DECU)INCINCDEC.!pDECU)LOLOCALL01<.!pCI",11'DECLO1...0INCCI".!pCALl..01<,.lI"..JPL.l)CAL.[CF',.lI"CP1"1.1::;11..11"LP.!pCALI...C ,'\ I.. L.DEFBC!'L.1..POI"../1"L.l)Ol'~.!1'L.I)CT,Il'L.l),.Il"LVL,DLXD[CC",[ L,.lI"C (.~,l...1...D[FD,.lI'CAI...!.CAL.L.ULFnC ,;1 ..1..LXI..UIX,.I PNOI"N ()i"

DI'CI.. DI)[CLDDI'CP 1.1:; HI.. DI.. l)I.. DL.DL.l)INCLDEXLOlNCI.. DINCI::Xm)D1"1.1::;1-1

H l..(HI..) ,AHLHL.pNZ 5[;,~~9HHL(HU OOH(DA9FH) Hl..I··II...,DD/FH'1::lO~jHAZ 5El1UI-I;:!FHl ~jE5DHHL(Hlo) ;!~!I-I(DA'lEH) 1·11..H I..2EHl ~iE5DH"1:'10',";1-1ANl. :jEA [1-1~'iEBOH(1-11..) 0011I ::lCi~jH

~::j::~Hl, ~'iEA4H',Dlitd'Z ~'j(7;:'11'dAINZ CiLe;>;' I II::lO:"jll',::lC/H

'1c~,:"jl-l(4F"

l ~:;;L9"II'1A,DANZ '1 ,','1 UH,'l ['IDH

NC 1i, 1DI:(07C/,I·I) (,~:ir:'?611DI' 111..(U(.ìl61 i) 111..DI' HI..I1I''l':i'"I:,11z ~jEnnllii·JC"l11/

~;.:jr:: (, ;,:':I ,I

l JU:~il-1l~::lC/H

I C ~:;,~;,;;I 'I

DI" 111..',I)eE,;II) IILD[ I-IL.::i[',(,H

1-1L111...(0,;/(;11>Hlo(DA/"'II) 111..111..111.,; (D/CI,I·I)111...:'.jI)61·1-I(O/A;;::II) 111..D[ D/A',II(U/V.!I) t,l~

nc OUt8HDI' ,111.OlI.. > LHL.(HI ) ,D111..DI IILl'IL l3e111..

~SL[)D:.',j[ED~:.:;LE=i~:SEE:'t:;.:jEE~j~.'jE[é~;.;jE[/

::;j[EB:jlEn:";[LC:'iE[C~'i[1'.~,:iC:I"'3~;5LFit

~.'.'iLF ~;.~:"jEI-6~:.;iFFl~'jEI:1~::iLF9~:'}LF'C:i[l'[:'iEII~;.:iFUU:"jF01,';1"0::'-~:;FU:J::.:iFOi~~:iF Cl~:5~.'ir06~:.~r"U9:''iFOA:.;F·oe:'.,1"'01"~:,)r: "1 ~?:.,1'1::1~:)r '1 it

~;,;iI "1~:5~:.:jr "16::.:iF- '"17':";[""113:"iIID:"il'IE:"il"1 l''~:5F ;.:~;.:~~;.:i l'" ;;.: ~:.;~.:iF;?b~;.;jF'" ;,:.~<;~:,;jl ;.:iC~:~F,,:!.[)~,;j! ::iU:."jl-:::I:'.il :1::"

~:.;ir::;6:':jr"3/~'.'jr ~JU~::jI ::)'?~:.JI :JL:.",1 -:::1-:'.'jl\D~,:,'j! t J~:.:jr·li/i

~;jl' 4')

~:,;!r" l're

~.;:iI l, l'

;;?AE:{.ìOflDI n:;DOO',4'.4DE'I3DC ;.:.:D ~s~~~l:i;3;.:.!~~?A07~.~~:::B "1U t~~

DI7B9~:jM"7{:,

?C67D (\1)"1 I. ":.

D(,O:JH?le11'{'IID"1 F'6!"'D:,e;?FE~;.:}FIC1"'1"'(:1:.:.:Dt,"I::!:"j!,";;'1 DDO;;lD9:'.~\~lrlA,?C67D(~D"I 't;?;~~;?760(.1ED;~);?96()7~:.~;?9BD{ì1"'1;.:.~;;.:E.:·'IUA(.~~A'?AU/EDCDDr'·/.i.2in

le:

;:::DL ~'.1

::-:-1 'I::.'.'jleD"I//i/['1

e:Don:::1;..~·'I '/ D ~,:,;jl"[;D l''',,"

;.:1 I l'·;l;..'~."'ICUILD'1 ~,:.'il.t;:,:),:..:I/IOCLJ~:,'.ìU :."j('1

LD1-. DADDL.DL.U1"01'DEC,.I PINCL.DL.Dl:'OF)L.Dnun1...1>I-DEìBLL.D.. Il"L.DonL.DPll,~L.DL.DPll,;L.DDEC,.Il"L.DCF'..JPL.DL.D!;UBL.l)L.D~:)ncL.D.!pL.DLXL.Dl_D

L.DL.DLDIXCAI.L.L. I>~:ìunLDL I,:;ue:L.DDI e:DLCl'U':;IIIUC (Il .. Il·' ~) l"C;\I.L1...1';(Jd IL.DLOe: ,"d.. I...L.I'..JI'

HI.. (DI3LAII)ne DDI3::;HHL. ne:Il,11C 1...IILA~~z~.;:;E[)~·:;11HL.(D/'i'AII) HL.(OM1'IH) 1·11...DE" l:':LI... I~l

(l,D

,; HH. t,e: <>0"111U 0::)1,1(.,

t, 1·1

H AA L.

L. {~nNI :jEI-'['1-It, IlO;.'Hl' ~'jF' 1;:.'11I-IL. O;'UDIIA.FL.

I ... t,A,OA HH ,;(" 4j!DIH(D(~7òH) !-lIUI:': I-IL.(0/9611) ,I·IL.(l:)A'?UII> H 1...

':>1' I11(iMn '110 111..HI (;il'Ndl .•DI 111't:?UV'11t:'-' ILL. l"1A Il(\,OIl AIILIl L.I1II IL.,:",,' /1..: I.:i.7··i /11HL.31 unii111.."il; \.'11',li; Il111. ',i I Il(DD'/::>II) 1-11....,;';'1: ...1111I DC/!' Il",1)"'.;1:111

MCmicrocomputer n. 34 - ottobre 1984 161

A partire dall'ultima locazione citata efino a circa 5F38H c'è la parte riguardanteil problema che ci eravamo posto all'inizio.In particolare, a partire da una certa loca-zione (5D6FH che appare nell'istruzioneall'indirizzo 5EC5H), vengono riservatetante aree di memoria quanti sono i fìle"gestibili" più I: l'indirizzo finale ottenutonella coppia di registri HL è posto (istru-zione a 5EECH e successiva) nelle locazio-ni 079AH e OABIH.Conti alla mano, con ivalori di default (tre file con record di 256byte) troviamo come "Start of Basic" ilvalore 61AEH effettivamente riscontrabilecreando un semplice programmino e an-dando a vedere con lo ZSID dove "sta" inmemOrIa.

Siamo dunque arrivati al punto: voglia-mo liberare IK per alcune routine in lin-guaggio macchina? SEMPLICE! Basta va-riare il valore della locazione iniziale(5D6FH), aumentandolo di OIOOH ed ilgioco è fatto ...

Almeno cosi sembra ...In realtà bisogna fare i conti con un fatto

a prima vista spiacevole: la locazione di cuisopra viene prima della zona che stiamoesaminando.

In parole povere succede questo: nonappena carichiamo un programma da di-schetto o, peggio, abbiamo a che fare condei file, la zona di memoria a partire daquella locazione fatidica viene completa-mente modificata! Addio perciò all'inizia-lizzazione e al bel messaggio di copyrightche appare all'inizio: infatti al contrario diquanto riportato nel n. 13 di MCmicro-computer (sempre nella rubrica "I trucchidel CP/M"), la versione 5.21 non consenteil "recovery automatico" tanto è vero che

uscendo dal Basic con una system o peggioa causa di infelici spostamenti di dischetti,NON si può usare l'artificio del program-ma RECOVERY. COM o X.COM che dirsi voglia, pena un imperterrito inchioda-mento del sistema. Ettecredo (come si dicenella capitale)! Con la X o la RECOVER Yfacciamo saltare all'istruzione OIOOH e finqui va bene: ma dopo non troviamo più ilprogramma di partenza, bensÌ residui difile, byte inutilizzati ed in genere "garba-ge" ...

Tra l'altro in quella zona c'era pure lostack (vedi la primissima istruzione) ...

Allora, armati di pazienza e di quel cac-ciavite chiamato ZSID andiamo a "sma-nettare" il nostro bravo programma da24K ...

L'idea in parole povere è questa: innan-zitutto spostare una volta per tutte la loca-zione fatidica in un punto più sicuro (in talmodo riconquistiamo la possibilità note-volissima del "recovery") e meglio ancoradecidiamo di poter variare a piacere talevalore per lasciar posto alle nostre routinein linguaggio macchina.

Inoltre possiamo addirittura usare quel-le orribili ma provvidenziali istruzioniNOP all'inizio del programma per far sÌche al recovery si abbia solo l'OK e non ilmessaggio di copyright, fatto che ci con-sente in questo caso di salvare il nostroprogramma eventualmente presente in me-mOrIa.

Dicevamo che vogliamo poter variare ilvalore fatidico di cui sopra: ecco che è natacosi una nuova opzione per la stringa dicomando che, in onore all'ideatore, è statachiamata jP:aaaa.

In parole povere aaaa è il numero di byte

I Irucchi del C P(M

che desideriamo usare per le nostre routi-ne.

Vediamo dunque quali sono le modifi-che da apportare all'interprete, modificheche è molto semplice effettuare con loZSID o il DDT: di seguito indicheremo intre colonne l'indirizzo, il valore precedenteed il valore da immettere, tutti e tre espressiin esadecimale. Ovviamente, dopo la chia-mata ZSID MBASIC.COM, introdurre-mo i valori desiderati con l'opzione S, se-guita dall'indirizzo.Ricapitolando abbiamo:a) spostato lo stack pointer in una zona"sicura".b) e ) corretto il salto dell'istruzioneOIOOhin Jp OD87H e cioè alla routine chestampa 'OK'.d) agganciato la nostra routine al pro-gramma esistente.e) modificato il valore della locazione "fa-tidica".f) inserito la nostra routine in L. M.

In particolare il valore immesso al puntoe) è un valore abbastanza "comodo" inquanto già consente di avere a priori dellospazio tra 5FF7H e 60FFH a disposizioneper altre routine.

Se tale spazio non interessa si può inseri-re al punto e) addirittura il valore 5FF7Hin modo tale da non sprecare il minimobyte.

Va da sè che nel messaggio di copyrighte successivamente tramite l'istruzioneFRE(O), compariranno valori di "bytesfree" diversi da quelli che siamo soliti vede-re abitualmente.

Concludiamo perciò questa prima pun-tata dedicata all'MBasic, invitando i lettoriad inviare i propri contributi. Me

<:\ ) ~:;1)7~! ~.)··I B ~~~'.'jD7J 60 63

b ) ~'.';D '~ICi OD ::lE~'m,~·,·100 B7~.)[){I? OD ,:) ...)

,,/c,.

':'jD,~~) UO Cl ··1~':;D"",·ll DO 0··1

c ) ~5[)(.~A OD ::lE

~.':;D,~Bun DD:'5D,~C 00 ~:~;.?~j[) (',0 DD o;:.)~'.';l)i;E 00 01

cl J !:)E70 (~q DO., ,~.'jE7··1 OC ~)F

p ) ~.5EC(j 6F OD~:;EC7 ::'; [) 6·1

f ) 5FDB FE~:jFDC ~5D~':;FDO C?~':;FDE (' (~., 7

162

LI) A,B71-1

LO (0·10·11-1) ,tI

LI) (I, DDI··I

LD (0·1 O;;.~I-I)y (\

CF' y p y

~:iFDF OC ,JP NZ,DCC9H~:5FEO CD:::iFE··1 O~;~:iFE~.) ·I::l CALI... ·1:]D~iH~:iFE~l CD!.::jFE't C7~.:jFE::'i 't3 C,~I...I... 't~lC71-1~jFE6 3A DEFB , ,

"~.)FE7 CD::.'jFEB t::'t::'

•••J ••••l

:~FE9 ·1c CALL.. ·1C551-15FEA r'~- PU;:ìH HL::.-...1!:'jFEB ;;!I~5FEC C6~:jFED :iE LD 1-1L.., (:.;EC61-1 )5FEE ··1'l ADD I-IL,DE::.:jFEF /')")

c,.r. .•

~.'jFFO C6:::iFF·1 ~jE LD ( 5EC610 ,I-IL..~:iFF~:! E··I POP HL::.:iFF~:l F··I POP AF5FF 't C3~:iFF5 96~.'jFFb :iE -lP ~;jE96H

MCmicrocomputer n. 34 - ottobre 1984

IN DURATA

DURARE Al MASSIMO! Resistenza e analisimeticolosa delle risorse necessarie sono in·"dispensabili. la durata è una caratteristicavincente dei nuovi supporti magnetici FUJI"heavy duty", capaci di superare ampiamen·te i 10 milioni di cicli senza scadi menti in pre·cisione e qualità! E ciò si deve a due ragioni:1. lo sviluppo esclusivo di una struttura trio

dimensionale per consentire la distribu·zione uniforme dei dipoli magnetici sulsupporto, che assicura la precisione neltempo.

2. Il dimensionamento dei supporti per velo·cità del 25% più elevate rispetto ai norma-li "drive"; la resistenza è perciò assai su-periore rispetto ai comuni "f1oppy".

Due ragioni per preferire FUJI in durata! •

FLOPPY DISK FUJI

111111C.B.S. CONTROl BYTE SYSTEMVia Comelico, n. 3 - 20135 MilanoTelefoni: 580051·5464060·5451108

CENTRO COMUNICAZIONEDEDICHIAMOIl NUOVOPOCKET COMPUTERCABIC®FX-750PA SilVIO BERlUSCONI

CASIC®Gioielli della microinformatica.

1_j)_mJ:ft_O_NjViale Certosa, 138 Milano - Te!' 0213085645 (5 linee ne. aut.)