;===============================================================è;è; €€INCLUDE€…npâ-Éf€oâpâ-Éf€/dÍvè;è; Cop©¸tÁ…npâ fiÙ‚ tÁ„âpâ. WÁɃ°®pâ ݱ Ãsè;ƒ°IncluÑ commžd,‚Á†ameÐfiÙ…¸mergeЮ”‚Á„âpâ.è; SegmŽ—„f fiÙs, ÑÝmªeÐby S“ʃnÐEnÐcommž×, cžè; bˆ®cluÑd. N fiلȹgmŽwilØbˆ®cluÑÐtwice.è;è;€…npâ-Éf :: [x:]…npâ³mˆ[.typ]è;è; If‚Á dÍvecoÑ x:…¸omª‘d,‚Á ÑfauÚ dÍvˆ¯ çed. Anè;…npâ fiÙ³mˆ¯ ÉqåÉd. A fiÙtypˆ¯†¢ ÉqåÉd.è;è;€„âpâ-Éf :: [y:] [oâpâ³me] [.typ]è;è; A°omª‘ÐpaÊ„f‚Á„âpâ fiÙÉf…¸suppÝeÐfÌm‚Áè;…npâ-Éf. Thç‚Á ÑfauÚ dÍvˆ¯‚Á…npâ dÍve,‚Áè; ÑfauÚ†amˆ¯‚Á…npâ†ame,ƒnÐtÁ ÑfauÚ‚ypˆ¯‚Áè;…npâ‚ype.€IfƒlØaÉ„mª‘d,‚Á„âpâ fiÙ ÉpÛc‚Áè;…npâ fiÙ.è;è;€ /dÍv :: [ /xyz... ]è;è; Specif©¸tÁ dÍv‚ bˆ¹arcÁÐfoÈž…ncluÑÐfiÙ,ƒndè;‚Á„rÑÈof‚Á‡‹rch.€"/cb"‡pecif©¸tÃtÁ pÌgËm…sè;‚ Üok fiϦ‚Á C: dÍvˆžÐtÁn,…f‚Á fiÙ…¸´tè; foæd,‚ Üok„°tÁ B: dÍve.€If‚Á paËmŠeȯ„mª‘d,è;‚Á pÌgËm‡‹rcÁ¸¦ly„°tÁ ÑfauÚ dÍve.€If‚Áè; paËmŠeȯ givŽ,‚Á pÌgËm‡‹rcÁ¸¦ly‚Ĺ dÍv.è;è; TÁ‚hɈcommž× (IncluÑ, S“Ê, End)ƒÉ ÉcogµzeÐwÁnè;‚ÁyƒÉ pÉceÑÐbyƒ‚ÍggeÈcÃËc‘r, "#". TÁ commž×è; (ç®g = foÈ#)ƒÉ:è;è;€ =®cluÑ fiÙ³me[.typ][,檳me]è;€ =ºaÊ æª³meè;€ =ŽÐ檳meè;è; AlØÙ’eσɂɚeП uppercŸe. A 檳mˆmay bˆŸè; mucÀŸ 19 by‘¸Üng.€A dÍvecoÑ may bˆgivŽ bâ…willè; bˆig´Éd.€S‰‚ŸpÌgËm foÈexampÙ¸of çe.è;€€*****************************************************è;€€* € TŸpÌgËm wŸ„Íg®ally pubÝsÁЮ *è;€€* €A€PROGRAMMER'S€NOTEBOOK€€€€€€€*è;€€* €€U•Ý• foÈCP/M-80 *è;€€* €€ by DaviÐE. CoÊi *è;€€* CopyÍg (C) R”°PubÝsÅng Compžy Inc. 1983 *è;€€*****************************************************è;===============================================================éMACLIB CPMEQUéMACLIB PROGéPROLOGè;---------------------------------------------------------------è; Def®ˆtÁ Namˆ“bÙƒnИNamˆÉcord:èNameTabÙ dw 0 ; NTspace,ƒŽÐof pÌgËmèNameCoæt db 0 ; coæof²Í…°“bÙèNextName dw 0 ;ƒddÉ¿„f†exŽtryèMaxNam equ 128èNameFiÙ equ 0 ;²ry‡“ʸwªÀfiÙÉf„fèLŽgthFiÙRef equ 12 ; ..12 by‘s,‚Á°tÁèNameUµt equ LŽgthFiÙRef ;€Uµ³me,ƒ‡tÍng„fèLŽgthUµt equ 19 ; up‚ 19 by‘s. 00ÀšndèLŽgthName equ LŽgthFiÙRef+LŽgthUµt+1 ; ..mak 32.èNT½ze equ LŽgthName*MaxNamèTempName equ CpmFCB ;‡cËtcÀName-bålÕngƒÉaè;---------------------------------------------------------------è; Def®ˆtÁ FiÙ‚abÙƒnИFiÙ Écord:èFiÙTabÙ dw 0 ; FTspace,ƒf‘ÈNTspaceèFiÙCoæt db 0 ; coæofƒc•vˆFiÙsèNextFiÙ dw 0 ;ƒddÉ¿„f†exŽtryèMaxFiÙs equ 8èFiÙFÛgs equ 0 ; Fi٠ø˜fÛg by‘,èFiÙInÑx equ 1 ;‚Á°˜buffeÈ®Ñx by‘,èFiÙFCB equ 2 ;ƒ°FCB„f 35 by‘s,èLŽgthFCB equ 35 ;‚Á°˜1-ÉcorÐbuffer.èFiÙBuffer equ FiÙFCB+LŽgthFCBèLŽgthFiÙ equ 1+1+LŽgthFCB+128èFT½ze equ LŽgthFiÙ*MaxFiÙsè;---------------------------------------------------------------è; Def®ˆtÁ dÍvecoÑ Ýº,‚ÍggeÈcÃËc‘r,ƒnÐL®eBuffer:èDÍveL¯t × 17 ;‚ 16 dÍv,ƒnÐ00À”nd.èMaxDÍv equ 16èTÍggeÈ equ '#'èL®eBuffer dw 0 ;ƒddÉ¿„f ݱ bufferèLB½ze equ 2048 ; ..žÐ½zˆof…tè;è; #®cluÑ âiÝo.®c,OâVaÏè; #®cluÑ âiÝo.®c,FiÙM»gèMsgNam db 'N spacˆ” ÉcorÐtŸæª.$'èMsgN•ng db 'IncluѸ±ºeД Ñeply.$'èMsgBadStmt db 'Cž''makˆ¹·ˆof‚Ÿcommžd.$'èMsgBadDÍve db 'InvaÝÐ"/dÍv" paËmŠer.$'èMsgNoUµt db 'TÁ†ameÐæª…¾''®‚Á fiÙ.$'èMsgIg´Éd db€ '€Ig´Íng commžd.',Asc­CR,Asc­LF,'$'è;===============================================================è;M°PÌgËm:èMn:épçh h ;‡avˆaddÉ¿„f‚op‡”Ëgeè;éSERVICE BÔsDÍve ; gŠ ÑfauÚ dÍveé®r a ; makˆså“bÙ foÈFCB çeélxi d,DÍveL¯t ;…µ•aÝzˆdÍvˆÝº‚oéºax d ; ..tÁ ÑfauÚ dÍveé®x dépçh psw ; (»vˆª foÈtÁ…npâ Éf)è;è; if (/dÍvˆgivŽ)...élxi h,CpmTl+1 ; Üok for..écall CmdCÃrOpt ;€ "/x.."…°tÁ commžÐ“iléJRNZ MnDÍve3 ;€(tÁÉ wŸ†¦e)è;è; €€€ ..tÁ°makˆ˜Ýº„f dÍvecoÑsè;émvi b,MaxDÍv+1 ;‡Š Ýmª„f dÍvˆÜopédcx d ;„verÛy ÑfauÚ dÍveèMnDÍve1:écall DeÝmªer ;ƒŽÐof dÍvˆÙ’eÏ?éJRZ MnDÍve2 ; (Üok¸Ýkˆª)écpi 'P'+1 ;†o. I¸tŸ˜dÍvˆÙ’er?éJRNC MnBadDÍveéså 'A'éJRC MnBadDÍveé®r a ;ƒdÐ1 foÈFCB çeéºax d ; pâ‚Á dÍvˆ®‚Á ݺ,é®x d ; ..advžcˆÝº-p¥²er,é®x h ; ..žÐ“il-p¥²er,éDJNZ MnDÍve1 ;ƒnÐc¦•ná up‚ 16„f‚Ámè;èMnBadDÍve: ; 2 few, 2 mžy,„ÈbaÐdÍvéABORT MsgBadDÍveè;èMnDÍve2: ; colÙc‘ÐdÍvˆÙ’eÏ...émov a,bécpi MaxDÍv+1 ; ..ÕÖ'we?éJRNC MnBadDÍve ; (´, jç"/",† "x")è;èMnDÍve3: ;‚Á dÍveݺ…¸compÙ‘éxË aéºax d ; ..‘rm®šˆtÁ ݺè;è;…µ•aÝzˆtÁ L®ˆBufferè;élxi h,LBspaceéshld L®eBuffer ;‡Š‚Á buffeÈaddÉ¿,émvi m,Asc­LF ; p⃆ulØÝ±…°ªè;è;…µ•aÝzˆtÁ NamˆTabÙè;élxi h,NTspaceéshld NameTabÙ ;ƒddÉ¿…°NameTabÙémvi a,1éºa NameCoæt ;…µ•ally,„±²ryélxi d,LŽgthNameéÓd déshld NextName ;²ryƒf‘È®pâ-Éf…¸2è;è;…µ•aÝzˆtÁ FiÙ TabÙè;élxi h,FTspaceéshld FiÙTabÙ ;ƒddÉ¿…°FiÙTabÙéºa FiÙCoæt ;…µ•ally,„±²ryélxi d,LŽgthFiÙéÓd déshld NextFiÙ ;²ryƒf‘È®pâ FiÙ…¸2è;è; pÉpaɃ FiÙ²ry foÈtÁ…npâ fiÙè;élhld FiÙTabÙ ; HL-->FiÙépçh h ; (»vˆtÃt)é®x h ; HL-->FiÙInÑxémvi m,128 ; ..®ª«lly, InÑx=128é®x héxchg ; DE-->FiÙFCBélxi h,CpmFcb ; HL-->®pâ fiÙÉfélxi b,LŽgthFiÙÉf ; movˆjçtÁ fiÙÉfécall MoveH”Délxi b,LŽgthFCB-LŽgthFiÙÉfécall FillZeÌ ; ..žÐzeÌ‚Á ɺè;è; OpŽ‚Á…npâ fiÙ,ƒboÊ…f…Ôn'ex¯tè;élxi h,CpmFcb+1 ; wŸƒ fiÙvŽ givŽ?écall DeÝmªeréJRNZ MnOp1 ; (y)éABORT MsgNoNameèMnOp1:épop d ; DE-->FiÙépop b ; B =‚Á ÑfauÚ dÍvecoÑélÓ CpmFcb ; bâ wt..wŸ„±‡pecif©d?éoË aéJRNZ MnOp2 ; (y..爪)émov a,b ; (´..çˆtÁ‡yºem ÑfauÚ)èMnOp2:écall OpŽFCB ;„pŽ FiÙ wªÀdÍvecoÑéJRZ MnName ; (opŽ worked)éABORT MsgNoFiÙè;è; pÉpaɃ NamˆŽtry foÈtÁ…npâ fiÙè;èMnName:élhld NameTabÙélxi d,CpmFcbéxchgélxi b,LŽgthFCB+1 ; copy‚hÌugÀ˜00 by‘écall MoveH”Dè;è; pÉpaÉ‚Á„âpâ mecõsmè;élhld FiÙTabÙémov b,hémov c,Ø ; BC-->tÁ…npâ FiÙ Écordé®x bé®x b ; BC-->tÁ ÑfauÚ fiÙÉfélxi d,OBspace ; DE-->oâpâ bufferépop h ; HL-->oâpâ maximumécall SŠUpOâpâè;è; pÌc¸tÁ…npâ fiÙ: O±FiÙ(FiÙTabÙ[1],NameTabÙ[1])è;élhld NameTabÙémov b,hémov c,Ø ; BC-->Nameélhld FiÙTabÙéxchg ; DE-->FiÙécall O±FiÙè;è; f®¯ÀtÁ„âpâ fiÙè;écall F®¯hOâpâéÉtè;===============================================================è;è;€€ O±FiÙ(FiÙ,Name)€-- pÌc¸alØof„±…ncluÑÐfiÙè;è; TÁ paËmŠeσÉ:è; BC-->ƒ NamˆÉcord: fiÙÉfƒnÐæª³meè; DE-->ƒ FiÙ Écord:‚Á (opŽ) fiÙƒnÐbufferè;è; TÁ Ég¯‘ÏƒÉ çeП folÜws:è;è; A€: gŽeËØworkè; BC : Name,„Ș‘mpoËry NamˆÉcorÐ(N)è; DE : FiÙ,„Ș‘mpoËry FiÙ (F),„ȘkeyworкÍngè; HL : ræµng‚exp¥²eÈwÅÙ‡cžµng‚Á ݱ (T)è;è; TÁ‚hɈb¤Ùž fÛg¸aÉ kep®‚Á fiÏby‘„f FiÙ.è;è;===============================================================èS‹rcÅng equ 80h ; Üok®g foȘceʰæªèSkipp®g equ 40h ;‡kipp®gƒ pÉv¬ç æªèEnÑd equ 20h ; "End"…¸É¹rveÐbyƒ¿embÙrè;èKeyS“Ê db 'START',0èKeyEnd db 'END',0èKeyIncluÑ db 'INCLUDE',0è;èO±FiÙ:épçh pswépçh bépçh dépçh hécall SÄwL®e ; ÔcumŽpÌgÉ¿ƒc¦¼Ùè; -------------------------élxi h,NameUµtéÓd b ; HL --> Name.Uµtémov a,méoË a ;…f Name.Uµ¯†ull,éJRZ OF2 ;€tÁ°S‹rcÅng := faßeémvi a,S‹rcÅng ;€e߈S‹rcÅng :=‚ráèOF2: ºax d ; (®ª«ÝzˆfÛgs)è;--------------------------èO±WÅÙ:élÓx déži EnÑd ; wÅÙ (´EnÑd)éjnz O±D¦eécall GŠL®ˆ ;ƒnÐ(´GŠL®e(FiÙ,T))éjz O±D¦eè;--------------------------élÓx d ;…f†¢ S‹rcÅng„ÈSkipp®géži S‹rcÅng+Skipp®géjnz OFSorSè;--------------------------émov a,h ; (op•mizš¬n:…f T=0,‚ÁÉéoË a ;€wŸ† tÍgger, Áncˆ´éJRNZ OFS“Ê ;€keyworД Üokƒt. Pâ‚Áécall PâL®ˆ ;€Ý±ƒnЪeË‘ƒ¦ce)éJMPR O±WÅÙè;--------------------------èOFS“Ê:épçh d ;…f (Keyword("START",T))élxi d,KeyS“Êécall Keywordépop déJRNZ OF´tS“Êè;---------------------------épçÀb ; (»vˆouÈName..épçÀd ;€..žÐFiÙ)émov d,b ; (pŸ¸Namˆ® DE,ƒndémov,célxi b,TempName ;€..N…°BC)écall RecordUµt ;…f (RecordUµt(N,Name,T))épop d ; (ÉcoveÈouÈFiÙ)éJRNZ OFS“Ê2écall L¤kup ;€…f (L¤kup(N))éJRNZ OFS“Ê1élÓx déoÍ Skipp®géºax d ;€€ Skipp®g :=‚ráéJMPR OFS“Ê3èOFS“Ê1: ;€ßeécall AddNamˆ ;€€ AddName(N)èOFS“Ê2:écall PâL®ˆ ; (´skipp®g, wÍ‘ ݱ)èOFS“Ê3:épop b ; (ÉcoveÈouÈName)éjmp O±WÅÙè;---------------------------èOF´tS“Ê: ;߈´#‡“Ê,‡oécall PâL®ˆ ;‚Á ݱ g¡¸”‚Á„âpâèOFInc:épçh d ;…f Keyword("INCLUDE",T)élxi d,KeyIncluÑécall Keywordépop déJRNZ OFEndè;---------------------------épçÀ b ; (»vˆName..épçÀ Ð ;€..žÐFiÙ)élxi b,TempNameécall RecordName ;…f (RecordName(N,T)éJRNZ OFIncZécall L¤kup ;…f (´L¤kup(N))éJRZ OFIncZécall AddNamˆ ;…f (AddName(N))écz GŠFiÙ ;…f (GŠFiÙ(F,N))éJRNZ OFIncZécall OpŽFiÙ ;…f (OpŽFiÙ(F))écz O±FiÙ ;€..tÁ°ÉcuÏeécall RelFiÙèOFIncZ:épop dépop b ; (ÉcoveÈNamˆžÐFiÙ)éjmp O±WÅÙè;---------------------------èOFEnd:épçh d ;…f (Keyword("END",T))élxi d,KeyEndécall Keywordépop déjnz O±WÅÙ ; (˜tÍgger, b↠keyword)è;---------------------------écall EqãlUµt ;…f (EqãlUµt(Name,T))éjnz O±WÅÙélÓx déoÍ EnÑdéºax d ;€ EnÑÐ:=‚ráéjmp O±WÅÙè;--------------------------------------èOFSorS: ;߈{S‹rcÅng„ÈSkipp®g}émov a,h ;€(op•mizš¬n:…f† tÍgger,éoË a ;€‚ÁÉ'¸´ 爮 Üok®géjz O±WÅÙ ;€ foȺaʄȎd.)élÓx déži S‹rcÅngéJRZ OFSkipè;---------------------------èOFS‹rch:épçh d ;…f (S‹rcÅng)‚Ánélxi d,KeyS“Ê ;…f (Keyword("START",T)écall Keywordépop déjnz O±WÅÙè;écall EqãlUµt ;…f (EqãlUµt(Name,T))éjnz O±WÅÙécall PâL®ˆ ;€€PâL®eélÓx déži 255-S‹rcÅngéºax d ;€€S‹rcÅng := faßeéjmp O±WÅÙè;---------------------------èOFSkip: ;߈{Skipp®g}épçh d ;…f (Keyword("END",T))élxi d,KeyEndécall Keywordépop déjnz O±WÅÙè;épçh b ; (»vˆouÈName)élxi b,TempName ; (SkippeÐæª³mˆºilØtÁÉ)écall EqãlUµt ;…f (EqãlUµt(N,T))éJRNZ OFSkip2élÓx déži 255-Skipp®géºax d ;€ Skipp®g := faßeèOFSkip2:épop béjmp O±WÅÙè;---------------------------------------------èO±D¦e: ;nÐwÅÙélÓx d ;…f (S‹rcÅng)‚Ánéži S‹rcÅngéJRZ O±FiÙZélhld L®eBuffer ; (Ôn'ÕspÛy‚Á Ûº ݱémvi m,Asc­LF ; ..of‚Á fiÙ jç¹arcÁd)élxi d,MsgNoUµt ;‡ay wˆcž'f®ÐtÁ æªécall RepoÊErÌrèO±FiÙZ:épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; AddName: AdÐBC-->NamˆÉcorД‚Á ݺ„fƒlØpÌc¹dè; æªs.€If‚Á ݺ…¸full, ÉpoÊ‚ÁrÌÈžÐÉtuÎè; fa߈(´Z).€OtÁrw¯ˆÉtuÎ BC-->‚Á²eÉгme,ƒndè;‚rá (Z)‡“tç.è;€pɹrv -- DE, HLè;€Étuθ€-- BC-->NamˆÉcorЮ‚abÙ„f†amè; Z‡Š‚rá„Èfaße.è;---------------------------------------------------------------èAddName:épçh hépçh dè; €¹ˆif‚ÁÉ…¸ÌomélÓ NameCoætécpi MaxNaméJRNC AddNameErrè; €copy‚Á†ame耀 mov d,b ! mov,célhld NextNameéxchg ; DE-->±x³me, HL-->®pâépçh d ;€(»vˆ-->Name)élxi b,LŽgthNameécall MoveH”Déxchg ; HL-->±xfɈ³meéshld NextName ; ..upÓ‘…télxi h,NameCoæté®r m ; ..žÐºep‚Á coætéxË a ; Étu΂ráépop b ; ..žÐBC-->±w NameèAddNameZ:épop dépop héÉtèAddNameErr:élxi d,MsgNamécall RepoÊErÌréoÍ -1 ; ÉtuÎ faßeéJMPR AddNameZè;---------------------------------------------------------------è; EqãlUµt: compaÉ‚Á 檳mˆ® BC-->Namˆ”‚Á‚extè;ƒddÉ¿eÐby HL.€If‚Á‡tÍng¸aÉqãl,ƒnÐif‚Á‚extè;†amˆ¯ ÑÝmªed, Étu΂rá (Z).è;€pɹrv -- BC, DEè;€Étuθ-- Z fÛg‡Š‚rá foÈeqãÝtyè; HLƒdvžceО æk´w°amoætè;---------------------------------------------------------------èEqãlUµt:épçh d ;‡avˆwork Ég¯‘rè;éxchg ; DE-->‘xtélxi h,NameUµtéÓd b ; HL-->Name.Uµtè;éxchg ; DE-->Name.Uµt, HL-->‘xtécall SkipWÅ‘ ;‡kip ÙaÕng bÛnk¸®‚extécall CmpStrText ; Uµt-ºÍng vs. HL‚extéJRNZ EqãlM¯sécall DeÝmªer ;qãØ”nÐof DE‡tÍng,è; €..¹ˆif‚ex‘rm®šedèEqãlM¯s:épop déÉtè;---------------------------------------------------------------è; GŠFiÙ: Étu΂ÁƒddÉ¿„f‚Á†exfɈFiÙ…°DE.è; Filت…°wªÀtÁ fiÙÉf fÌm BC-->Name.€IfƒlØFiÙè; Écor׃Ʌ°çe, ÉpoÊ‚¤-Ñep†•ng„f…ncluÑs.è;€pɹrv -- BC, HLè;€Étuθ€-- DE-->FiÙ,è; Z‡Š‚rá,„Èfa߈foÈerÌrè;---------------------------------------------------------------èGŠFiÙ:épçh hépçh bè; ;‡‰…f‚ÁÉ…¸˜fɈFiÙélÓ FiÙCoætécpi MaxFiÙséJRNC GŠFiÙErrè;élhld NextFiÙémov d,bémov e,céxchg ; HL-->Name, DE-->FiÙépçh d ;€(»vˆ-->FiÙ)é®x dé®x d ; €€ DE-->FiÙ.FCBélxi b,LŽgthFiÙÉfécall MoveH”D ;‡Š fiÙÉf…°FCBélhld NextFiÙélxi b,LŽgthFiÙéÓd béshld NextFiÙ ; upÓ‘ -->±xFiÙélxi h,FiÙCoæté®r m ; ..žÐtÁ coætéxË a ; Étu΂rá,épop d ; ..žÐDE-->FiÙèGŠFiÙZ:épop bépop héÉtèGŠFiÙErr:élxi d,MsgN•ngécall RepoÊErÌréoÍ -1 ; ÉtuÎ faßeéJMPR GŠFiÙZè;---------------------------------------------------------------è; GŠL®e: ÉaИcompÙ‘ ݱ fÌm DE-->FiÙ. Pâ‚Á Ó“…nè;‚Á L®eBuffer.€SŠ HL‚ tÁƒddÉ¿„f‚Á fiÏtÍggerè; cÃËc‘ȹŽ.€IfnÐof fiÙ ÃppŽs, Étu΂rá.è;€pɹrv -- BC, DEè;€Étuθ€-- Z fÛg‚rá„°ŽÐof fiÙè; HL=0…f† tÍgger,߈HL-->tÍgger+1è; N¢e:‚ŸcoÑ‚ak L®ef‰ÐŸ mark®g‚ÁnÐofƒ ݱ.è; MBASIC ݱ¸tÃc¦“®mbedÑÐLF¸wilØbˆÉaЮ p©c,è;ƒnÐtÁÉfoɃ°MBASIC…ncluчÄulÐbˆ®ƒ compÙ‘ ݱ.è; FiÙ¸tÃc¦“®„nly CR‚ mark ݱ-ŽÐwilØcËsÀç.è; TŸcoу¿um‚ØLF wilØimmeÕšely pÉceÑ CpmEof--è;ƒ paÊ«ØÝ±ƒfiÙnÐwilØ´app‹È®‚Á„âpâ.è;---------------------------------------------------------------èGŠL®e:épçh bélxi b,0 ;‡Š up BCƒ¸tÁ‚ÍggeÈaddr.élhld L®eBuffer ; HL bŸ†exby‘èGŠL®e1:écall GŠCÃrécpi CpmEof ;‡ÄulÐÃppŽ„°fiÏcalléJRZ GŠL®eD¦eè;émov m,a ; by‘‚ bufferé®x h ; ..žÐºep p¥²erécpi Asc­LF ;nÐof ݱ?éJRZ GŠL®eD¦eè;écpi TÍggeÈ ;‚ÍggeÈcÃËc‘r?éJRNZ GŠL®e1 ; ..c¦•ná…f†¢è;émov a,béoË a ; Ãvˆwˆ¹Žƒ‚ÍggeÈyŠ?éJRNZ GŠL®e1 ;€(y,…g´É‚Á 2nd)émov b,h ;†o.€Savˆ‘xp¥²eÈŸémov c,l ; ..tÁ‚ÍggeÈp¥²eréJMPR GŠL®e1èGŠL®eD¦e:耀 mov h,b ! mov l,c ; Étu΂ÍggeÈp¥²eÈ® HLécpi CpmEof ;ƒnÐZ‚rá„°ŽÐof fiÙépop béÉtè;---------------------------------------------------------------è; Keyword: CompaÉ DE-->ºÍng‚ tÁ‚exaddÉ¿eÐby HL. Makeè;‡uÉ‚Á‚exkeyworЯ‚erm®šeÐwªÀ˜bÛnk„È“b.è; O°˜mšch, upÓ‘ HL pŸtÁ keyword.è;€pɹrv -- BC, DEè;€Étuθ-- Z fÛg‚rá„°mšchè; HL upÓ‘ÐoÈ´tè;---------------------------------------------------------------èKeyword:épçh dépçh hécall CmpStrText ;qãØfoÈÙngtÀof keyword?écz WÅ‘Space ;ƒnБrm®šeÐby bÛnk/“b?éJRNZ Keyword2 ;€(´)éxthl ; ..y, ÉtuÎ upÓ‘ÐHLèKeyword2:épop hépop déÉtè;---------------------------------------------------------------è; L¤kup: S‹rcÀtÁ ݺ„fƒlØpÌc¹ÐNam foȘmšcÀ”è; BC-->Name.€RŠu΂rá (Z)…fƒ mšcÀ¯ foæd,߈faße.è;€pɹrv -- BC, DE, HLè;€Étuθ-- Z fÛg‚rá…f Namˆapp‹Ï…°tÁ ݺ.è; N¢e:‚Á fiÏby‘„fƒ Namˆ¯ƒ dÍvecoу¸®ƒ°FCB.è; I¯n'½gµficžt, mig bˆ00ƒn쇔p‚Á compaÉ,è;ƒnм…¸´compaÉd.è;---------------------------------------------------------------èL¤kup:épçh bépçh dépçh hè;émov d,bémov e,c ; DE-->compaËndé®x d ; ..fiÙ³me,type,æª,00hélhld NameTabÙ ; HL-->NameTabÙ[ j ]é®x h ; ..plç 1‚ av¥ÐdÍvecoÑsélÓ NameCoætémov b,a ; B = coæof†amè;èL¤kup1:épçh h ; CmpStÍngƒÚeÏ DE, HLépçh décall CmpStÍng ; compaÉ [D+] :: [H+]épop dépop héJRZ L¤kupHª ; (foæÐ˜mšcÅng²ry)épçh délxi d,LŽgthNameéÓd d ; HL-->±xNameTabÙépop déDJNZ L¤kup1è; €tÁ†amˆ¯ æk´wnéoÍ -1 ; ..ÉtuÎ faßeè;èL¤kupHª: ;‚Á†amˆwŸ foædè; €..ÉtuÎ Z‡Šépop hépop dépop béÉtè;---------------------------------------------------------------è; OpŽFiÙ:‚ry‚ opŽ‚Á fiÙ Ñf®eÐby DE-->FiÙ, ç®g‚Áè; ݺ„f dÍvecoѸgivŽƒ¸pÌgËm paËmŠeÏ. RŠu΂ráè;…f‚Á„pŽ…¸˜succs.€OtÁrw¯ˆÉpoÊ fiÙ†¢ foæÐždè; ÉtuÎ faße.è;€pɹrv -- BC, DE, HLè;€Étuθ-- Z fÛg‡Š (trá)…f‚Á„pއucc‰×è; DE-->FiÙ.FCB upÓ‘Ðby CP/M BDOSè;---------------------------------------------------------------èOpŽFiÙ:épçh bépçh hépçh d ; (»vˆ-->FiÙ)è; ; pÉpaÉ‚Á FCB foÈçeé®x d ; DE-->FiÙ.InÑxémvi a,128 ; ..forcˆÉaЦ fiÏGŠCÃréºax dé®x d ; DE-->actãØFCBè;élxi h,LŽgthFiÙÉféÓd déxchg ; DE-->FCB "ex" by‘élxi b,LŽgthFCB-LŽgthFiÙÉfécall FillZeÌ ; zeÌ„â ɺ„f‚Á FCBè;épop d ; (ÉcoveÈDE-->FiÙ..épçh d ;€..žÐ»vˆªƒgn)élxi h,DÍveL¯témov a,m ; fiÏdÍvecoÑ‚ tryèOpŽL¤p:écall OpŽFCB ;‚ryƒ°opŽéJRZ OpŽD¦e ;€ (ª worked)é®x hémov a,m ;„k,‚ry‚Á†exdÍvecoÑéoË a ; ..if‚ÁÉ…¸¦eéJRNZ OpŽL¤pè; €cž'f®ÐtÁ fiÙ...élxi d,MsgNoFiÙécall RepoÊErÌr ; ..‘lØaboâ…téoÍ -1 ; ÉtuΆ¦-Z (faße)èOpŽD¦e:épop dépop hépop béÉtè;---------------------------------------------------------------è; OpŽFCB: GivŽ DE-->FiÙ (wªÀ˜pÉpaÉÐFCB),ƒnИdÍve-è; coÑ…°A,‚ry‚ opŽ‚Á fiÙ.è;€pɹrv -- BC, DE, HLè;€Étuθ--€Z fÛg‚rá…f‚Á„pއucc‰×è;---------------------------------------------------------------èOpŽFCB:épçh bépçh dépçh hè;élxi h,FiÙFCBéÓd déxchg ; DE-->tÁ FCBéºax d ;…·eÊ‚Á dÍvecoÑémvi c,BÔsOpŽécall BÔséoË a ; fluÉ…¸FFÀ® Aè;épop hépop dépop bérm ; ÉtuΆ¦-Z…f A=FFhéxË a ; ÉtuÎ Z…f A=0, 1, 2, 3éÉtè;---------------------------------------------------------------è; Pâݱ: wÍ‘‚Á ݱ…°L®eBuffeÈ”‚Á„âpâ fiÙ.€U¹è;ƒ L®ef‰ÐŸ‚Á‡ig³ØfoÈŽÐof ݱ (¹ˆGŠL®ˆ´‘s).è;€pɹrv --ƒllè;---------------------------------------------------------------èPâL®e:épçh pswépçh hélhld L®eBufferèPâL®e1:émov a,mécall PâCÃré®x hécpi Asc­LFéJRNZ PâL®e1è;épop hépop pswéÉtè;---------------------------------------------------------------è; RecordName:xtËctÁ fiÙÉfƒnÐop•¦aØæª³mˆfÌmè;‚Á‚exaddÉ¿eÐby HL. Formš‚Ám…² BC-->NamˆÉcord.è; If‚ÁÉ…¸baÐsy²ax, ÉpoÊ…”‚Á c¦¼Ù.è;€pɹrv -- BC, DEè;€Étuθ-- Z‚rá…f‚Á‡y²ax wŸ„kè;---------------------------------------------------------------èRecordName:épçh bépçh dè;émov d,bémov e,c ; çˆDE-->NamˆÉcordè;écall SkipWÅ‘ ; gŠ„veÈžy bÛnksécall DeÝmªer ;·uɇomŠÅng…¸tÁÉéJRZ RecNameBad ; (´fiÙÉf --nÐof ݱ?)è;écall PaÏeFiÙRef ; formš fiÙÉf…² NameéJRNZ RecNameBad ; (ª wŸ„bjec•¦abÙ‡omeÄw)è;écpi ',' ;…fƒ comm˜folÜws,éJRNZ RecNameNullU ; (ª ÕÖ't)é®x h ; ..ºep„veȪƒndécall PaÏeUµt ; ..formš‚Á UµŸ welléJRNZ RecNameBadè; ;ƒlØok, ÉtuÎ ZèRecNameD¦e:épop dépop béÉtè;èRecNameNullU: ; fiÙÉf„nly,† ",æª"éxchg ;‡avˆHL, HL->Nameélxi b,NameUµtéÓd b ; HL->NameUµtéxË aémov m,a ;‚erm®šˆtÁmpty‡tÍngéxchg ; ɺoÉ HLéJMPR RecNameD¦e ; ..žÐexª wªÀZè;èRecNameBad: ;rÌr: ÉpoÊ‚ c¦¼Ùélxi d,MsgBadStmtécall RepoÊErÌréoÍ -1 ; ÉtuÎ faßeéJMPR RecNameD¦eè;---------------------------------------------------------------è; RecordUµ: Copy‚Á fiÙÉf fÌm DE-->Namˆ®” BC-->Name.è; TÁ°gŠƒ 檳mˆfÌm HL-->‘xt,ƒnÐformš…®”‚Áè; BC-->NamˆÉcord.€If baÐsy²ax„ccuÏ, Époʃ°erÌÈždè; ÉtuÎ faße,߈Étu΂rá (Z).è;€pɹrv -- BC, DEè;€Étuθ-- Z fÛg‚rá…f‡y²ax…¸ok.è; (TŸÌ⮈¯ çeÐwÁ°˜ºaÊ commžÐ¯ foæÐ®‚Áè; curɲ fiÙ,‚ pÉpaɃ NamˆfÌm‚Á curɲ fiÙ'¸Nameè;ƒnÐtÁ†amˆof‚Á‡“Ê®g æª)è;---------------------------------------------------------------èRecordUµt:épçh dépçh h ;‡avˆtÁ‚exaddÉ¿épçh b ;‡avˆ-->oâpâ Nameè;éxchg ; ÉveψÉg¸foÈMoveH”D..émov d,bémov,c ; DE-->oâpâ, HL-->®pâélxi b,LŽgthFiÙÉf ; ÙngtÀ” copyécall MoveH”D ; copy fiÙÉf‚ Nameè;épop b ; ÉcoveÈBC-->oâpâ Nameépop h ; ÉcoveÈ‘xp¥²erécall SkipWÅ‘ ; gŠ„veÈžy‡pac/“bsécall PaÏeUµt ; formš æª³mˆ” BC-->NameéJRZ RecUµtD¦eè; €baÐoÈm¯½ng 檳meélxi d,MsgBadStmtécall RepoÊErÌréoÍ -1 ; ÉtuÎ faßeèRecUµtD¦e:épop déÉtè;---------------------------------------------------------------è; PaÏeUµt: pâ‚Á 檳mˆ®‚Á‚exaddÉ¿eÐby HL…²oè;‚Á NameUµf©lÐof BC-->Name. If‚Á‡y²ax…¸®vaÝd,è;‚ypˆ˜ÉpoʃtÁ c¦¼ÙƒnÐÉtuÎ faße.è;€ pɹrv -- BC, DEè;€ƒÚeÏ -- HL upӑД Ûº by‘xam®edè;€ Étuθ-- Z fÛg‚rá…f 檳mˆsy²ax…¸vaÝd.è;---------------------------------------------------------------èPaÏeUµt:épçh bépçh décall DeÝmªer ;…fnÐof ݱ„ÈÑÝmªeréJRNZ PaÏeUµt2 ;€(wŸ†¢)éoÍ -1 ; ..forcˆ´t-Z c¦Õ•¦,éJMPR PaÏeUµt3 ; ..žÐqåtè;èPaÏeUµt2: ; HL-->´n-ÑÝmªeréxchg ;‡avˆ‘xp¥²erélxi h,NameUµtéÓd béxchg ; DE-->Name.Uµtè;épçh d ;‡avˆtÃt..élxi b,LŽgthUµt ; ..žÐzeÌ‚Á wÄÙ f©ldécall FillZeÌépop d ; DE-->Name.Uµt, HL-->‘xtémov b,c ; B := LŽgthUµtécall MoveHToDeÝm ; copy 檂 19 by‘¸oÈÑÝmécall DeÝmªer ; veÍfynÐof 檳meèPaÏeUµt3:épop dépop béÉtè;---------------------------------------------------------------è; RelFiÙ: ÉÙŸˆDE-->FiÙ foÈçe.€Actãlly, wˆŸsumˆtÃtè; FiÙ Écor×ƒÉ g¢‘°žÐÉÙŸeЮ‡tÍcFIFO„rÑr.è;€pɹrv --ƒllè;---------------------------------------------------------------èRelFiÙ:épçh bépçh hélhld NextFiÙélxi b,-LŽgthFiÙéÓd béshld NextFiÙélxi h,FiÙCoætédcr mépop hépop béÉtè;---------------------------------------------------------------è; RepoÊErÌr: ÕspÛy‚Á curɲ ݱ --…f…¯ƒ°®cluÑè; commžd,…wilØtÁ°sÄw up‚wice,‚¤ baÐ--ƒnÐtÁ°tÁè; m»gˆaddÉ¿eÐby DE.è;€pɹrv --ƒllè;---------------------------------------------------------------èRepoÊErÌr:épçh pswépçh décall SÄwL®e ; ÕspÛy‚Á ݱ (agn?)émvi a,Asc­BEL ;‚¤tÁ‚erm®alécall TypeCÃrécall TypeM»ge ;‚ypˆtÁ m»geélxi d,MsgIg´Éd ; ..žÐ"Ig´Íng"écall TypeM»geépop dépop pswéÉtè;---------------------------------------------------------------è; SÄwL®e: ÕspÛy‚Á curɲ…npâ ݱƒtÁ c¦¼Ù. SÄwè;†¢„veÈ80 by‘¸of…t,ƒnÐmakˆsuÉ‚ÃtÁ ÕspÛyn×è; wªÀb¢À˜CRƒnИLF.è;€pɹrv --ƒllè;---------------------------------------------------------------èSÄwL®e:épçh pswépçh bépçh hè;élhld L®eBufferémvi b,80 ; B Äl× max by‘ coætéxË a ; dummy upƒ "pÍor" by‘èSÄwL®e1:émov c,a ;‡avˆpÍoÈoâpâ by‘émov a,mécall TypeCÃr ;‚ypˆcurɲ by‘écpi Asc­LF ; Ûº„±…°˜Ý±?éJRZ SÄwL®e2 ;€(y, f®¯Àݱ)é®x héDJNZ SÄwL®e1 ; c¦•ná, up‚ 80 by‘sè;émvi A,Asc­LF ; ݱ ÜngeÈtð80, forcˆLFécall TypeCÃrèSÄwL®e2: ;ƒ LF øb‰°typed...émvi a,Asc­CR ; wŸ pÍoÈcÃȘCR?écmp cécnz TypeCÃr ;€(´,‚ypˆ¦ˆ´w)è;épop hépop bépop pswéÉtè;---------------------------------------------------------------è; GŠCÃr: RŠu΂Á†excÃËc‘ÈfÌm DE-->FiÙ. TÁ Ügicè;…¸tÁ‡amˆŸ‚Á çãØâiÝty GŠCÃr, bâ compÝcšeÐbyè; Ãv®g‚ çˆtÁ FiÙ ÉcorЮº‹Ðof InFCBƒnÐCpmBuffer.è;€pɹrv -- BC, DE, HLè;€Étuθ-- A c¦“®¸±xby‘.è;---------------------------------------------------------------èGŠCÃr:épçh hépçh dè;é®x d ; DE-->FiÙInÑxélÓx dé®r aéjp GŠCÃr2è;è; FiÙInÑx øÉacÁÐ128 --‚Á buffeȯmpty.€R‹Ð¦eè; ÉcorЮ” FiÙBuffer, wªÀCpmEof…°ª‡ tÃÜgicalè;ƒnÐphy½caØEOFƒÉƒÝke.è;épçh bépçh d ;€(»vˆ-->FiÙInÑx)é®x d ; DE-->FiÙFCBépçh d ;€(»vˆtÃt)élxi h,FiÙBuffer-FiÙFCBéÓd d ; HL-->FiÙBufferémvi m,CpmEoféxchg ; DE-->FiÙBufferémvi c,BÔsSŠBufferécall BÔsépop d ; DE-->FiÙFCBémvi c,BÔsR‹décall BÔsépop d ; DE-->FiÙInÑxépop béxË a ; InÑx := 0è;è; AtŸp¥²‚ÁÉ…¸tÁÈÓ“„ÈCpmEof…nè; FiÙBuffer[ A ],ƒnÐDE-->FiÙInÑx.è;èGŠCÃr2:éºax d ; upÓ‘ InÑxéaÕ FiÙBuffer-FiÙInÑxémov l,aémvi h,0éÓd d ; HL-->FiÙBuffer[FiÙInÑx]émov a,mécpi CpmEoféJRNZ GŠCÃr3éxchg ;ƒŽÐof fiÙ, back up‚Áédcr m ;…nÑx‚ ºay‚ÁÉ.èGŠCÃr3:épop dépop héÉtè;---------------------------------------------------------------è; IncluÑÐsubÌâ®:è; #®cluÑ‚extÝb.®c,CmpStÍngè; #®cluÑ‚extÝb.®c,CmpStrTextè; #®cluÑ‚extÝb.®c,DeÝmªerè; #®cluÑ‚extÝb.®c,SkipWÅ‘è; #®cluÑ‚extÝb.®c,UpperCŸeè; #®cluÑ‚extÝb.®c,WÅ‘Spaceè; #®cluÑ‚extÝb.®c,MoveH”Dè; #®cluÑ cmdpaÏe.®c,PaÏeFiÙRefè; #®cluÑ cmdpaÏe.®c,MoveH”DeÝmè; #®cluÑ cmdpaÏe.®c,CmdCÃrOptè; #®cluÑ TypeSubs.®c,TypeComm¦è; #®cluÑ âiÝo.®c,PâCÃrè; #®cluÑ âiÝo.®c,SŠUpOâpâè;===============================================================è; M°Ó“ƒÉŸ:èNTspacˆ × NT½ze ;‡pacˆfoÈNamˆTabÙèFTspacˆ × FT½ze ;‡pacˆfoÈFiÙ TabÙèLBspacˆ × LB½ze ;‡pacˆfoȘg¤ÐÜng ݱèOBspacˆ × 1024 ; m®imaؼʄf bufferè;³bÙ‚Á folÜw®g ݱ…°MP/Mè; db 0éŽdè