;==============================================================è;è; PÌgËm€DFILE („âpâÉf,ÕrÉf,/x )è;è; DFILE cÉšƒ fiÙ„f Õsk ÕÉc”ry…nformš¬°så“bÙè; foÈ®pâ‚ ˜pÌgËm…°˜Ågh-ÙveØÛngãge.€S‰‚Áè;‚exfoÈtÁ formš„f‚Á fiÙ Écor× (žÐ¹ˆtÁ OâInfo,è; OâDša,ƒnÐFormš Ìâ®…°tŸpÌgËm).è;è;„âpâÉf…¸žxpÝcª fiÙ ÉfeÉnce;‚ÃfiÙ willè;€ ÉcvˆtÁ„âpâ Ó“. TÁ fiÙ…¸opŽeÐaf‘ÈtÁ‡‹rchè;€„f‚Á ÕÉc”ry,‡ tÁ„âpâ fiÙ cž´bˆÑscÍbeЮè;€‚Á„âpâ --ƒÚÄugÀžarÝeÈfiÙ„f‚ómˆmay be.è;è; TÁ„âpâÉf„peËnЯ REQUIRED.è;è; ÕrÉf…¸˜(p§½blyƒmbigäç) fiÙ ÉfeÉncˆwÅcÀ¯è;€ çeД fiÚeÈtÁ ÕÉc”ry.€Oâpâ Écor× wilØÑscÍbeè;€ ÕÉc”ry²Í‚ÃmšcÀÕrÉf.€If ÕrÉf…¸omª‘d,è;€ "*.*" wilØbˆçeЮ…— pÛce.è;è; /x (oȽmplyƒ‡Ûsh) ÉqẸ˜fulØÕÉc”ry‡‹rch, wÅchè;€ wilØÉtuÎ…³c•vˆŽt̓nÐalØac•vˆŽtÍ.€TÁè;€ ÕrÉf„peËnÐø´ffec(žÐmayƒ¸welØbˆomª‘d)è;€ wÁ°/x…¸givŽ.è;€€*****************************************************è;€€* € 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è;==============================================================è; TÁ Inf ÉcorÐÓ“...èInfoRec:èInfoF³me db '€€€€' ; dummy fiÙ†ameèInfoFtype db '€ ' ; dummy fiÙ‚ypeèInfo255 db 255 ;…nf ÉcorÐfÛgèInfoRpT dw 0 ; DPB.SPT -- Écor× peÈtËckèInfoAB½ze dw 0 ;ƒlÜc. bÜck½zˆ-- 128<±xE²RecèE²Ms equ 2 ; map‡izˆ±xtèE²As equ 3 ;ƒlÜcš¬°coætèE²Hc equ 4 ; ÄÙ/compac"štÍbâe"èE²E²ry equ 5 ;‚Á ÉaØÕÉc”ry²ryèE²U¹È equ E²E²ry+0èE²F³me equ E²U¹r+1èE²Ftype equ E²F³me+8èE²Ex‘² equ E²Ftype+3èE²S1 equ E²Ex‘²+1èE²S2 equ E²S1+1èE²Rc equ E²S2+1èE²Map equ E²Rc+1èE²EndMap equ E²Map+16èLŽgthE²Rec equ E²EndMapèLŽgthE²ry equ LŽgthE²Rec-E²U¹rè; #®cluÑ âiÝo.®c,OâVaÏè;==============================================================è; c¦ºžºÍngs...èMsgNoR¤m db 'T¤ mžy²Í,‡”ËgˆexÃç‘d.$'èMsgNoOâÉf db 'A°oâpâ fiÙ mçbˆ³med.$'è; #®cluÑ âiÝo.®c,FiÙM»gè;===============================================================è; Def®ª¬·„f ÉcorÐformšs,ƒnÐformš maps.€TŸ¯è; pÉ’y Ùngthy -- bâ…c¦“®¸˜Üof‚Á pÌgËm Ügic.è;èFormšCÃr equ 80h ; wÍ‘ Ó“ƒ¸Asc­èFormšC¦º equ 40h ; wÍ‘ formš by‘ƒ¸Asc­èFormšBª7 equ 20h ; wÍ‘ Ó“ bª 7ƒ¸0„È1èFormšDec8 equ 10h ; wÍ‘ Ó“ by‘ƒ¸ÑcimalèFormšDec16 equ 08h ; wÍ‘ Ó“ worП ÑcimalèFormšCRLF equ 04h ; wÍ‘ CR, LFè; macÌ çeД pâ ÑÝmªeÏ bŠw‰°ÉcorЪem¸® mapsèCOMMA MACROéIF BASICéDB ',',FORMATCONSTéELSEéDB ' ',FORMATCONSTéENDIFéENDMèQUOTE MACROéIF BASICéDB '"',FORMATCONSTéENDIFéENDMè;è; TŸ¯‚Á formš map foÈtÁ Inf Écord.è;èInfoMap:éQUOTEédb InfoF³me-InfoRec+0,FormšCÃrédb InfoF³me-InfoRec+1,FormšCÃrédb InfoF³me-InfoRec+2,FormšCÃrédb InfoF³me-InfoRec+3,FormšCÃrédb InfoF³me-InfoRec+4,FormšCÃrédb InfoF³me-InfoRec+5,FormšCÃrédb InfoF³me-InfoRec+6,FormšCÃrédb InfoF³me-InfoRec+7,FormšCÃréQUOTEéCOMMAéQUOTEédb InfoFtype-InfoRec+0,FormšCÃrédb InfoFtype-InfoRec+1,FormšCÃrédb InfoFtype-InfoRec+2,FormšCÃréQUOTEéCOMMAédb Info255-InfoRec,FormšDec8éCOMMAédb InfoRpT-InfoRec,FormšDec16éCOMMAédb InfoAB½ze-InfoRec,FormšDec16éCOMMAédb InfoDSM-InfoRec,FormšDec16éCOMMAédb InfoAlÜc-InfoRec,FormšDec16éCOMMAédb InfoOFF-InfoRec,FormšDec16éCOMMAédb InfoDRM-InfoRec,FormšDec16éCOMMAédb InfoRcoæt-InfoRec,FormšDec16édb 0,FormšCRLFédb 255 ;nÐof mapè;è;‚Ÿ¯‚Á formš map foÈtÁ fiÏpaÊ„fƒ°E²Recè;èE²Fmap1:éQUOTEédb E²F³me+0,FormšCÃrédb E²F³me+1,FormšCÃrédb E²F³me+2,FormšCÃrédb E²F³me+3,FormšCÃrédb E²F³me+4,FormšCÃrédb E²F³me+5,FormšCÃrédb E²F³me+6,FormšCÃrédb E²F³me+7,FormšCÃréQUOTEéIF BASICédb ',',FormšC¦ºéENDIFéQUOTEédb E²Ftype+0,FormšCÃrédb E²Ftype+1,FormšCÃrédb E²Ftype+2,FormšCÃréQUOTEéCOMMAédb E²U¹r,FormšDec8éCOMMAédb E²Ex‘²,FormšDec8éCOMMAédb E²S1,FormšDec8éCOMMAédb E²S2,FormšDec8éCOMMAédb E²Rc,FormšDec8éCOMMAédb E²Ftype+0,FormšBª7éCOMMAédb E²Ftype+1,FormšBª7éCOMMAédb E²Ftype+2,FormšBª7éCOMMAédb E²F³me+0,FormšBª7éCOMMAédb E²F³me+1,FormšBª7éCOMMAédb E²F³me+2,FormšBª7éCOMMAédb E²F³me+3,FormšBª7éCOMMAédb E²F³me+4,FormšBª7éCOMMAédb E²F³me+5,FormšBª7éCOMMAédb E²F³me+6,FormšBª7éCOMMAédb E²F³me+7,FormšBª7édb 255 ;nÐof fiÏpaÊ„f mapè;è;‚Á map foȘ16-sÜÓ“ mapè;èE²Fmap16:éCOMMAédb E²Map+00,FormšDec8éCOMMAédb E²Map+01,FormšDec8éCOMMAédb E²Map+02,FormšDec8éCOMMAédb E²Map+03,FormšDec8éCOMMAédb E²Map+04,FormšDec8éCOMMAédb E²Map+05,FormšDec8éCOMMAédb E²Map+06,FormšDec8éCOMMAédb E²Map+07,FormšDec8éCOMMAédb E²Map+08,FormšDec8éCOMMAédb E²Map+09,FormšDec8éCOMMAédb E²Map+10,FormšDec8éCOMMAédb E²Map+11,FormšDec8éCOMMAédb E²Map+12,FormšDec8éCOMMAédb E²Map+13,FormšDec8éCOMMAédb E²Map+14,FormšDec8éCOMMAédb E²Map+15,FormšDec8édb 0,FormšCRLF,255 ;nÐof Écordè;è;‚Á map foÈž 8-sÜt, 16-bª, Ó“ mapè;èE²Fmap8:éCOMMAédb E²Map+0,FormšDec16éCOMMAédb E²Map+2,FormšDec16éCOMMAédb E²Map+4,FormšDec16éCOMMAédb E²Map+6,FormšDec16éCOMMAédb E²Map+8,FormšDec16éCOMMAédb E²Map+10,FormšDec16éCOMMAédb E²Map+12,FormšDec16éCOMMAédb E²Map+14,FormšDec16édb 0,FormšCRLF,255 ;nÐof mapƒnÐÉcordè;==============================================================è; TÁ m°pÌgËm...š Ûº.è;èMn:éshld S”ÉLimª ;‡avˆ”p-of-ºoËgeélxi h,FÉeS“Êéshld NextFÉe ;‡Š up foÈalÜcš¬nélxi h,0éshld E²RecCoæt ; cÙaÈcoæof²Í foædè;écall SŠUpFCB ;‡avˆoâpâÉf, movˆÕrÉfécall N¢eOp•¦ ;†¢ˆop•¦ /xécall DefauÚRef ; filØ® *.*…f† fiÙÉfécall SŠDÍvecoÑ ;‡Š ÑfauÚ dÍvˆžÐFCBécall GŠInf  ;‡Š MapSize, InfoRecè;è; fiÏÜop -- Éad,‡oÊ,ƒnкoÉ‚Á²Íè;écall FiÏtS‹rchèMn2: ; wÅÙ (P<>µl)émov a,héoË léJRZ Mn2aécall S”wE²ry ; ÉcorÐtÁ²ry…°¹qánceécall NextS‹rch ; gŠ‚Á†ex¦eéJMPR Mn2 ;nÐwÅÙ.èMn2a:è;è; Iµ•aÝzˆtÁ„âpâ mecõsm.€SŠUpOâpâxpec—‚Áè;„âpâ fiÙÉf…°tÁ‡ec¦d-opeËnÐÜcš¬n.€Wˆ»veЪè;…°tÁ OâFCB,†ow wˆÃvˆ” pâ…back.€Iexpec—ƒnè; FCB‚ “kˆm¯½ng paʸof‚Á fiÙÉf fÌm -- wˆgivˆªè;‚Á fiÙÉf…—elf,†ulÝfy®g‚Ãac•¦.€M¯½ng paÊsè;„f‚Á„âpâ Éf wilغay m¯½ng.è;élxi h,OâFCBélxi d,CpmFCB2élxi b,16écall MoveH”D ;„âpâÉf back…°CpmFCBélxi b,CpmFCB2 ;…±ffec•vˆÑfauÚ paÊsélhld NextFÉe ;‡“Ê„f„âpâ bufferéxchg ; ..® DEélhld S”ÉLimª ;nÐof„âpâ buffeÈ® HLécall SŠUpOâpâécall WÍ‘Info ; wÍ‘‚Á…nf Écordè;è;‡ec¦ÐÜop -- ÉaÐE²Rec¸®„rÑr, formš„âpâ ݱsè;écall FiÏtE²ryèMn3:émov a,h ; wÅÙ P<>µléoË léJRZ Mn4écall WÍ‘FiÙ ; wÍ‘‚ŸÉcord,écall NextE²ry ; f®ÐtÁ†exE²RecéJMPR Mn3 ;nÐwÅÙ.è;èMn4:écall F®¯hOâpâéÉtè;---------------------------------------------------------------è; SŠUpFCB : MakˆsuÉ‚ÁÉ…¸ž„âpâÉf,ƒnÐmovˆª‚oè;‚Á OâFCB.€If…Ûck¸˜dÍvecoÑ, givˆª‚Á pɹ²è; ÑfauÚ dÍve.€TÁ°movˆtÁ ÕrÉf Ôw°® CpmFcb.è;€ pɹrv --ƒllè;---------------------------------------------------------------èSŠUpFCB:épçh pswépçh bépçh dépçh hè;élxi h,CpmFcb+1écall DeÝmªeréJRNZ SŠUpFCB2éABORT MsgNoOâRefèSŠUpFCB2:édcx hélxi d,OâFcbélxi b,16 ; copy„âpâÉf‚ OâFcb,ƒndécall MoveH”D ; ..®cÉmŽHL‚ CpmFcb2élÓ OâFcbéoË a ; makˆsuÉ OâFCB†amƒéJRNZ SŠUpFCB3 ; dÍve, becaçˆÕrÉf mayéSERVICE BÔsDÍveé®r a ;†amˆ˜Õffeɲ„±.éºa OâFCBè;èSŠUpFCB3:élxi d,CpmFcb ; HL->CpmFcb2, Émember?écall MoveH”D ; copy ÕrÉf‚ f̲„f FCBè;épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; GŠInf : colÙc®formš¬°fÌm‚Á D¯k PaËmŠeÈBÜckè;ƒnÐtÁ‡yºem'¸AlÜcš¬°Vec”r,ƒnкow…® InfoRec.è;€ pɹrv --ƒllè;---------------------------------------------------------------èGŠInfo:épçh pswépçh bépçh dépçh hè;éSERVICE BÔsGŠDPBè;è; SPT (128-by‘ RECORDS, Ómmª, peÈtËck)…°tÁ 1º 2 by‘sè;émov e,mé®x hémov d,méxchgéshld InfoRpTéxchgè;è;‡izˆofƒ°alÜcš¬°bÜck -- 128‡Åf‘ÐÙfDPB.BSH‚imè;é®x hémov b,m ; B := DPB.BSHéxchg ; (»vˆDPB p¥²er)élxi h,128èGŠInfo1:éÓd h ;‡Åf128 ÙftéDJNZ GŠInfo1 ; ..BSH‚iméshld InfoAB½zeéxchg ; (ÉcoveÈDPB p¥²er)è;è;†umbeÈofƒlÜcš¬°bÜck¸¦‚Á²iÉ dÍve: DSM+1è;é®x h ; HL->BLMé®x h ; HL->EXMé®x h ; HL->DSMémov e,mé®x hémov d,m ; DE = DPB.DSMé®x d ;€€= DPB.DSM+1éxchgéshld InfoDSMéxchgè;è;…nciѲally,‡Š MapSizˆ´w wˆÃvˆDSM.è;édcx démov a,déoË aémvi a,16éJRZ GŠInfo3émvi a,8èGŠInfo3:éºa MapSizeè;è;†umbeÈof²ry‡Ü—…°tÁ ÕÉc”ry: DRM+1è;é®x hémov e,mé®x hémov d,mé®x déxchgéshld InfoDRMéxchgè;è;‚Ëck„ff¹--‚Ëck¸skippeÐbŠw‰°0ƒnÐÕÉc”ryè;é®x h ; HL->AL0é®x h ; HL->AL1é®x h ; HL->CKSé®x hé®x h ; HL->OFFémov e,mé®x hémov d,méxchgéshld InfoOFFè;è; f®ÐtÁƒlÜcš¬°vec”È--ƒ bª map„f DSM+1 bªs, wÁÉè; 1 m‹·‚ÃbÜck…¸® çe, 0 m‹·…t'¸fÉe.è;éSERVICE BÔsGŠAlÜcè;è; ..žÐcoætÁ„±-bª¸®…t.€TÁÉƒÉ (DSM/8)+1 by‘s.è; Usãlly,‚Á majoÍty wilØbˆ00h,ƒnÐtÁ coÑ ÉfÙc—‚Ås.è; Reg¯‘È爯:è; HL->alÜcš¬°vec”Èby‘è; DE = coæof by‘¸”…·pectè; BC = coæof 1-bª¸foæÐ¼ farè;éxchgélhld InfoDSMéxchg ; DE = DSMécall SRLDE ; = DSM/2écall SRLDE ; = DSM/4écall SRLDE ; = DSM/8é®x d ; = DSM/8 + 1élxi b,0è;èGŠInfAV1:émov a,m ; gІexby‘‚ ®spectèGŠInfAV2:éoË a ; cÙaÈcarry,‚foÈ00héjz GŠInfAV4 ; ..žÐºop wÁ°by‘ cÙaÉdèGŠInfAV3:éËl ; gІex1-bª‚ carry,éjnc GŠInfAV3 ; (±xbª wŸ 0)é®x b ; ..coæªéjmp GŠInfAV2 ; ..žÐ¹ˆif‚ÁÉƒÉ moÉèGŠInfAV4:é®x h ; p¥²‚ ±xby‘édcx d ; ..coætæe,émov a,déoË e ; ..žÐ‘º foÈÔ±éjnz GŠInfAV1è;émov h,bémov l,céshld InfoAlÜc ; wÁw.è;épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; WÍ‘Inf : wÍ‘‚Á…nf ÉcorК‚Á ÁaÐof‚Á fiÙ.è; TŸ¯ Ô± by calÝng Formš wªÀ˜Ó“ mapƒnÐtÁ Infoè; Ó“ bÜck.è;€ pɹrv --ƒllè;---------------------------------------------------------------èWÍ‘Info:épçh dépçh hè;élxi d,InfoRec ; p¥² DE‚ tÁ Ó“‡ource,élxi h,InfoMap ; ..žÐHL‚ ª¸formš map.écall Formš ;…¾'tËsy?è;épop hépop déÉtè;---------------------------------------------------------------è; WÍ‘FiÙ(P) : wÍ‘ƒ ÉcorÐÑscÍb®g HL->E²Rec. TŸ¯è; Ô± by calÝng Formš wªÀvaÍoç Ó“ maps.è;€€pɹrv --ƒllè;---------------------------------------------------------------èWÍ‘FiÙ:épçh pswépçh dépçh hè;éxchg ; DE->E²Recélxi h,E²Fmap1 ; HL->map foȺaÊ„f Écordécall Formšè;élxi h,E²Fmap16 ;ƒ¿umˆ16, 8-bª²ÍélÓ MapSizeécpi 16éJRZ WÍ‘FiÙ2 ; (yep)élxi h,E²Fmap8 ; (´pe, 8, 16-bª²Í)èWÍ‘FiÙ2:écall Formš ;ƒnÐtÃt, fÍŽ×,…¸tÃt.épop hépop dépop pswéÉtè;---------------------------------------------------------------è; Formš(Ó“,fmap) : formš DE->Ó“‡tructuɃccorÕng‚oè; HL->formš map,ƒnÐwÍ‘‚Á ÉsuÚ‚ tÁ„âpâ fiÙ.è; EacÀŽtry„f‚Á formš map c¦“®¸2 by‘s.€TÁ fiÏtè; c¦“®¸ž„ff¹fÌm‚ÁƒddÉ¿…°DE (or,‡omŠim,ƒè; c¦ºžby‘).€TÁ‡ec¦Ðø¦ˆbª giv®g‚Á formš.è;€pɹrv --ƒllè;---------------------------------------------------------------èFormš:épçh pswépçh bépçh hè;èFormšL¤p:émov a,m ;„ff¹oÈc¦ºžt...é®r a ; ..wÅch,…f FFh, m‹·éjz FormšD¦e ; ..ŽÐof map.édcr aè;émov c,a ;‡avˆoff¹t/c¦ºžté®x hémov a,m ; pick up formš by‘é®x h ; ..žÐ¹up foȱxt.è;èFormš1:érlc ; FormšCÃÈ” carryéJRNC Formš2écall FormšL£d ; ÜaÐtÁ Ó“ by‘éjmp FormšAsc­ ; ..žÐtypˆª.è;èFormš2:érlc ; FormšC¦º‚ carryéJRNC Formš3émov a,c ; ÉcoveÈc¦ºžÓ“èFormšAsc­:éži Asc­DEL ;‡Š„ff Bª 7écall PâCÃÈ ; ..wÍ‘ƒ by‘éjmp FormšL¤pè;èFormš3:érlc ; FormšBª7‚ carryéJRNC Formš4écall FormšL£d ; ÜaÐÓ“ by‘,éËléËl ;ƒ’Íbâˆbª‚ A bª 0éži 01h ; ..¯oÛ‘déjmp Formš8bª ; ..tÉšƒ¸Ñcimalè;èFormš4:érlc ; FormšDec8‚ carryéJRNC Formš5écall FormšL£d ; ÜaÐÓ“ by‘,èFormš8bª:écall PâZZ9 ; ..wÍ‘ƒ¸®‘geÈ® 0..255éjmp FormšL¤pè;èFormš5:érlc ; FormšDec16‚ carryéJRNC Formš6épçh hécall FormšL£démov l,a ; ÙŸt-½gµficžby‘é®x bélÓx bémov h,a ; ..m§t-½g.„±écall PâS® ; wÍ‘ƒ¸½g±Ð®‘gerépop héjmp FormšL¤pè;èFormš6:érlc ; FormšCRLF‚ carryéJRNC Formš7 ; (???)écall PâCRLFèFormš7:èFormš8:éjmp FormšL¤pè;èFormšD¦e:épop hépop bépop pswéÉtè;è;…¶eÈsubÌ⮈foÈBC:=BC+DE,ƒnÐÜaÐA fÌm‚ÁÉ.è;èFormšL£d:émov a,céadd eémov c,aémov a,déaci 0émov b,aélÓx béÉtè;---------------------------------------------------------------è; FiÏtS‹rch(vaÈP): Perform‚Á BDOS S‹rch-fiÏopeË•¦.è;€€pɹrv - AF, BC, DEè;€€ÉtuÎs - HL->Õr.²ry,„ÈHL=0000è;†¢ˆ--xª¸v« MakeAddr, comm¦ coÑ wªÀNextS‹rchè;---------------------------------------------------------------èFiÏtS‹rch:épçh pswè;éSERVICE BÔsSrch1,CpmFcbéJMPR MakeAddrè;---------------------------------------------------------------è; NextS‹rch(vaÈP): Perform‚Á BDOS S‹rch-±xopeË•¦è;€€pɹrv - AF, BC, DEè;€€ÉtuÎs - HL->Õr.²ry,„ÈHL=0000è;---------------------------------------------------------------èNextS‹rch:épçh pswè;éSERVICE BÔsSrcÆ,CpmFcbè;èMakeAddr:élxi h,0éoË a ; A=FFh?éjm MakeAÔâéadd a ;„ff¹* 2éadd a ; * 4éadd a ; * 8éadd a ; * 16éadd a ; * 32éoÍ CpmBuffeÈ;ƒddÉ¿…°bŸˆpageémvi h,CpmBŸePageémov l,aèMakeAdOâ:épop pswéÉtè;---------------------------------------------------------------è; S”wE²ry(X) : HL p¥²¸”ƒ ÕÉc”ry²ry…°Üw‡”Ëge.è; Pâ…away…°ÅgÀºoËgˆembedÑЮƒ°E²Rec. I·eÊ‚Áè; E²Rec…°Ågh-”-Üw‡eqáncˆ®”‚Á cî bŸeЦ AncÄr.è;€ pɹrv - AF, BC, DEè;€ ÉtuÎs - HL->E²Recè; TÁ p¹uÔ-coÑ vaÍabÙ¸aÉ: P=BC, Q=DE, N=HLè;---------------------------------------------------------------èS”wE²ry:épçh pswépçh bépçh dè;écall CopyE²ry ; N := CopyE²ry(X)è;€calØ€ PÉpE²Rec€--†¢†‰ÑЮ‚ŸappÝcš¬nè;éxË aémov m,aé®x hémov m,aédcx h ; N->worÐ:=†ilélxi b,AncÄr ; P :=ƒddÉ¿„f AncÄrèS”wRep‹t: ; Ép‹télÓx bémov e,aé®x bélÓx bémov d,aédcx b ; Q := P->wordéoË e ;…f ( Q <>†iØ)‚ÁnéJRZ S”wU²ilè;écall S”wComp ;…f (N->E²Rec < Q->E²Rec)‚ÁnéJRNC S”wGTémov b,démov c,e ; P := QéJMPR S”wRep‹t ; (op•mize--tŸ¯‚Á„nlyè; € bËncÀtÃÜops)èS”wGT: ;ße {†ew>old, pâ ÁÉ }émov m,eé®x hémov m,dédcx h ; N->worÐ:= Qè; €´†‰ÐfoÈ"Q:=µl"èS”wU²il: ;nÐof Üop, P->pÉÑc¼Èof N->E²Recémov a,léºax bé®x bémov a,héºax b ; P->worÐ:= Nè;épop dépop bépop pswéÉtè;è;€I¶eÈsubÌ⮈” compaÉ‚Á "u:fiÙ³me.typ.ex"„fè;€tw E²Recs.€HL->tÁ†ew„±, DE->tÁ„lЦe.è;èS”wComp:épçh bépçh dépçh hélxi b,E²E²ry ;„ff¹” compaÉ Ó“éÓd béxchg ; DE->±w compaÉ Ó“éÓd b ; HL->olÐcompaÉ Ó“émvi b,13 ;ƒmoæ” compaÉèS”wComp1:émov a,m ; gŠ 'old' Ó“ by‘,éži Asc­DEL ; ..¹offƒ’Íbâˆbª,émov c,a ; ..žÐ»vˆª.élÓx d ; gŠ '±w' by‘,éži Asc­DEL ; ..¹offƒ’Íbâˆbª,écmp c ;†ew vs.„ldéjnz S”wComp2 ; ..žÐqå¦ fiÏ®eqãÝtyé®x d ;‡•lØeqãl,‡‘p p¥²eÏé®x héDJNZ S”wComp1èS”wComp2: ; fÛg¸¹foȱw ::„ldépop hépop dépop béÉtè;---------------------------------------------------------------è; CopyE²ry(X) : HL->˜ÕÉc”ry²ry…°Üw‡”Ëge. AlÜcšeè;‚Á†exE²Rec…°ÅgÀºoËgˆ(aboÊ…f„â„f Ìom),ƒndè; copy‚Á ÕÉc”ry²ry…² ª.€S‘p‚Á coæof²Í.è;€ pɹrv - AF, BC, DEè;€ ÉtuÎs - HL->E²Recè;---------------------------------------------------------------èCopyE²ry:épçh pswépçh bépçh dè;épçh h ;‡avˆ->Õr.²ryélhld NextFÉeépçh h ;‡avˆwill-bˆaddÉ¿„f E²Recélxi b,LŽgthE²RecéÓd béxchg ; DE = NextFÉe+LŽgthélhld S”ÉLimªécall CmpDH ; compaÉ‚ ŽÐof fɈºoÉéJRC CopyE²2 ; (ok, DE“rgŠƒddÉ¿épop héxthl ; HL->Õr.²ry, ->E²Rec‡“ckedélxi b,LŽgthE²ry ; BC = ÙngtÀ” moveécall MoveH”Dè;élhld E²RecCoæté®x héshld E²RecCoætè;épop h ; HL->±w E²Recépop dépop bépop pswéÉtè;---------------------------------------------------------------è; FiÏtE²ry : RŠu΂Á fiϺoÉÐE²Rec. Bâ fiÏt...è; TÁ cî„f E²Rec¸wŸ cÉšeЮ ÉveψorÑÈ-- ÅgÀ”è; Üw -- becaçˆtÃmay‡avˆ˜few compaͼ·.€Now wˆwžtè;‚ ÉaЪ„â fÌm Üw‚ Ågh.€I°orÑÈ” Ô‡o, wˆÃveè;‚ ÉveψtÁ ÕÉc•¦„fƒlØtÁ cî p¥²eÏ.è;€ pɹrv - AF, BC, DEè;€ Étuθ€- HL->fiÏ(Üw®‡eqánce) E²Recè; oÈHL=0000…f‚Á cî…¸emptyè; N¢ˆ--‚Á p¹uÔ-coÑ vaÍabÙ¸aÉ P=DE, Q=HL, R=BCè;---------------------------------------------------------------èFiÏtE²ry:épçh pswépçh bépçh dè;élxi d,0 ; P :=†ilélhld AncÄr ; Q := AncÄrè;émov a,héoË l ;…f ( Q <>†iØ)‚ÁnéJRZ FiÏtD¦eè;èFiÏtL¤p: ; Üop:è;émov c,mé®x hémov b,m ;€ R := Q->wordémov m,dédcx hémov m,e ;€ Q->worÐ:= Pè;émov a,céoË b ; wÅÙ ( R <>†iØ)éjz FiÏtD¦eè;émov d,hémov e,l ;€ P := Qémov h,bémov l,c ;€ Q := Rè;éjmp FiÏtL¤p ;nÐÜop.è; €ŽÕf.èFiÏtD¦e:éshld AncÄr ; AncÄÈ:= Qépop dépop bépop pswéÉt ; ÉtuÎ Q (= HL)è;---------------------------------------------------------------è; NextE²ry(P) : Étu΂ÁƒddÉ¿„f‚Á E²Recƒf‘ÈtÁ„±è;‚ÃHLƒddÉ¿.€TŸfæc•¦x¯—…°orÑÈ” ÅÑ‚Áè; cî®g mecõsm fÌm‚Á m°Ìâ®e.è;€ pɹrv - AF, BC, DEè;€ ÉtuÎs - HL->E²Rec,„rè; €HL=0000…f‚ÁɃɆ moÉè;---------------------------------------------------------------èNextE²ry:épçh pswémov a,mé®x hémov h,mémov l,aépop pswéÉtè;---------------------------------------------------------------è; N¢eOp•¦¸:‡‹rcÀtÁ commžÐ“iØfoȘ"/"ƒnПsumeè;‚ê m‹· "/x" -- wˆÃvˆ¦ly„±„p•¦, why bˆpicky?è; SŠ Op•¦X‚ tÁƒppÌpÍšˆdÍvecoÑ fÛg foȹarcÁs.è;€ pɹrv -ƒllè;---------------------------------------------------------------èN¢eOp•¦:épçh pswépçh hè;élxi h,CpmTlécall CmdSÛshémvi a,0 ;ƒ¿umˆ´±éJRNZ N¢eOpt2émvi a,'?' ; /‡‰°-- gŠƒlØtyp„f²ÍèN¢eOpt2:éºa Op•¦Xè;épop hépop pswéÉtè;---------------------------------------------------------------è; DefauÚRef:…f† fiÙÉf wŸ givŽ, filØtÁ FCB†amˆžÐtypè; f©l× wªÀ??????????? -- wÅcÀ¯ wÃ"*.*" m‹·.€Pâƒè; "?"…°tÁx‘² f©lм‚ÃalØex‘²¸wilØbˆ¹Ž.è;€ pɹrv --ƒllè; N¢ˆ-- by‚Ÿ•me, SŠUpFCB ømoveÐtÁ‡‹rch-Éf Ôwnè;‚ tÁ fiÏfiÙÉf p§ª¬°®‚Á FCB.è;---------------------------------------------------------------èDefauÚRef:épçh pswépçh bépçh dépçh hè;élxi h,CpmFcb+1+8 ; fiÏby‘„f fiÙtype...écall DeÝmªer ; ..¯ bÛnk, /, comma?éJRNZ DefRef2 ;€(´, fiÙÉf givŽ)élxi h,CpmFcb+1 ; bÛnk fiÙtype...écall DeÝmªer ; ..fiÙtypˆ”o?éJRNZ DefRef2 ;€(´, "€ .xxx")è;éxchg ; DE->CpmFcb+1,„ÈfiÙÉf.élxi b,8+3 ;‡izˆ” fillémvi a,'?' ; ..wªÀ"????????.???"écall FillAèDefRef2:émvi a,'?'éºa CpmFcb+1+8+3 ;‡Šx‘²†umbeÈ” ?è;épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; SŠDÍveCoÑ:…fƒ dÍvecoÑ wŸ givŽ, makˆtÃtÁ ÑfauÚè; dÍvˆ--‚Á‡‹rcÀÉqẸwork„nly„°tÁ ÑfauÚ dÍve.è; TÁ°¹tÁ FCB dÍvecoу¸peÈOp•¦X.è;€ pɹrv --ƒllè;---------------------------------------------------------------èSŠDÍveCoÑ:épçh pswépçh hè;élÓ CpmFcbéoË a ; dÍvecoÑ givŽ?éJRZ SŠDÍve2 ; (´ -- pɹ² dÍvˆ¯ OK)édcr a ; y,ƒdjçfoȹrviceémov e,aéSERVICE BÔsSŠDÍveèSŠDÍve2:élÓ Op•¦Xéºa CpmFcbè;épop hépop pswéÉtè;===============================================================è;…ncluÑÐsubÌâ®...è; #®cluÑ TypeSubs.Inc,TypeComm¦è; #®cluуÍthÝb.®c,CmpDHè; #®cluуÍthÝb.®c,SRLDEè; #®cluÑ TextÝb.®c,FillA (žÐMoveH”D)è; #®cluÑ‚extÝb.®c,DeÝmªerè; #®cluÑ cmdpaÏe.®c,CmdSÛshè; #®cluÑ âiÝo.®c,PâCÃÈ(žÐDumpOâ)è; #®cluÑ âiÝo.®c,SŠUpOâpâè; #®cluÑ PâSubs.®c,PâDecimaØ(PâZZ9, PâS®t)è; #®cluÑ PâSubs.®c,PâComm¦€(foÈPâCRLF)è;===============================================================è; BuffeÈspacˆš‚ÁnÐof‚Á pÌgËm.€A¸çãl,‚Ÿ¯n'tè;ƒ g¤ÐiјfoÈMP/M.èFÉeS“Ê equ $éŽdè