;===============================================================è;è; MACREF ®pâ-Éf€oâpâ-Éfè;è;€PÌc¹¸˜MAC-compšibÙ fiÙ„fƒ¿embly‡ourcˆ” pÌduceè;€˜±w fiقlØMAC-compšibÙ, bâ wÅcÀÃsè;€appŽÑД…˜cÌ¿-ÉfeÉncˆof‡ymboØçˆžÐ˜cŽsçè;€of„pcoÑ çe.€TÁxpec‘Ð爯…°˜¹qáncˆof commž×è;€ÝkˆtŸ(wÅcÀmig welØbˆ®ƒ‡ubmª fiÙ):è;è; æpack b:¼mefiÙ.pakƒ:.Ÿiè; ®cluчomefiÙ.Ÿ¨.Ÿm /bè; mac‡omefiÙ $lb pzè; ÜaмmefiÙè; MACREF‡omefiÙ.Ÿ¨¼mefiÙ.oâè; pip pÎ:=¼mefiÙ.oâè;è;€®pâ-Éf ::€[x:]…npâ³mˆ[.typ]è;è;€If‚Á dÍvecoÑ x:…¸omª‘ÐtÁ ÑfauÚ dÍvˆ¯ çed.€Anè;€®pâ fiÙ³mˆ¯ ÉqåÉd. A fiÙtypˆ¯„p•¦aØ(or,‚oè;€bˆpÉc¯e,ƒ fiÙtypˆof 3 bÛnk¸¯ƒlÜwed).è;è;€TÁ…npâ fiÙ…¸ŸsumeД bˆŸ¹mbly‡ource. Seqánceè;€numbeÏ may bˆpɹ².€If‚ÁyƒÉ,‚Áy wilØbˆºÍpped.è;€A pÉv¬ç cÌ¿-ÉfeÉncˆfÌm‚ŸpÌgËm wilØbˆdÌpped.è;è;€A fiÙ†ameÐ"[x:]®pâ³me.SYM" mçex¯t.è;è;€oâpâ-Éf :: [y:] [oâpâ³me] [.typ]è;è;€EacÀomª‘ÐpaÊ„f‚Á„âpâ fiÙÉf…¸suppÝeÐfÌm‚Áè;€®pâ-Éf.€Thç‚Á ÑfauÚ dÍvˆ¯‚Á…npâ dÍve,‚Áè;€ÑfauÚ†amˆ¯‚Á…npâ†ame,ƒnÐtÁ ÑfauÚ‚ypˆ¯‚Áè;€®pâ‚ype. IfƒlØaÉ„mª‘d,‚Á„âpâ fiÙ ÉpÛc‚Áè;€®pâ fiÙ.è;€€*****************************************************è;€€* € 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è;---------------------------------------------------------------è; P¥²eÏ‚ alÜcšeкoËge:èL®eBuffer dw 0 ;‡pacˆfoȦˆ®pâ ݱèSymbolTabÙ dw 0 ;‡“Ê„fƒrËy„f SymRecsèNSymboß dw 0 ; coæof SymRecsèNextP¤l dw 0 ;†exfɈby‘‚ alÜcšeèP¤lEnÐ dw 0 ; by‘ƒf‘ÈŽÐof p¤lèOpR¤t dw 0 ; Ì¢„f OpRec b®ary‚Éeè;---------------------------------------------------------------è; ScËtcÀspacˆçeÐby vaÍoç moduÙs:èWP dw 0 ; çeЮ PerçeFiÙèWO dw 0 ; Õ’oèWF dw 0 ; çeЮ GŠWordèWI dw 0 ; çeЮ SymbolèWM dw 0 ; Õ’o,ƒnЮ FiÏtSymbolèStÍng × 32 ; çeÐfoÈcompaͼ°ºÍngsè;---------------------------------------------------------------è; Def®ˆtÁ SymRec:èLŽgthSymRec equ 24€€; SymRec…¸8+16 foÈezƒddÉ¿®gèSymLabel equ 0 ; 17 by‘¸foȳme-ºÍngèSymL®ˆ equ 17 ;€2 by‘¸foÈݱ†umberèSymVal equ 19 ;€2 by‘¸foÈÁx valáèSymU¹ equ 21 ;€2 by‘¸foÈU¹Rec cîè; € 1 by‘ æçedè;---------------------------------------------------------------è; Def®ˆtÁ U¹Rec:èLŽgthU¹Rec equ 6 ;….e.,èU¹Nex equ 0 ; p¥²eÈ”†ex® cîèU¹L®ˆ equ 2 ; ݱ†umbeÈwÁÉ çˆoccurÉdèU¹Op equ 4 ; ->OpRec„f„pcoÑ…°tÃݱè;---------------------------------------------------------------è; Def®ˆtÁ OpRec:èLŽgthOpRec equ 15 ; maÑ up„f:èOpName equ 0 ; 9 by‘¸foÈtÁ†ame-ºÍngèOpCoæ equ 9 ; 2 by‘¸foÈçe-coætèOpLeft equ 11 ; 2 by‘¸foÈÙfsubtÉeèOpRig equ 13 ; 2 by‘¸foÈÍg‡ubtÉeè;---------------------------------------------------------------è; Def®ˆvaÍoç maximaèMaxSym equ 8192 ; Ýmª„f SymRec‡paceèMaxP¤Ø equ 8192 ; Ýmª„f Op, U¹ Rec‡paceèLŽgthL®e equ 1024 ; gŽeÌ烿embly ݱ½zeèMaxCol equ 72 ; Üngݱ…°ÕspÛysèSeqS“Ê equ 0001h ; fiϹqáncˆnumberèSeqIncÈ equ 0001h ;‡eqáncˆnumbeÈ®cÉmŽtè; #®cluÑ âiÝo.®c,InVaÏè; #®cluÑ âiÝo.®c,OâVaÏè;---------------------------------------------------------------è; C¦ºžm»gˆžÐÕspÛy‡tÍngs:èTypeSym db 'SYM'èMsgNoSym db 'Inpâ .SYM fiÙ†¢ foæd.$'èMsgNoP¤l db 'Rž„â„f fɈºoËgˆ-- fiÙ‚¤ Ûrge.$'è; #®cluÑ âiÝo.®c,FiÙM»gèXÉfH‹d db€ '* CROSS-REFERENCE',Asc­CR,Asc­LF,00hèXÉfLegŽÐdb '* Ñf. val.‡ymboØžÐç',Asc­CR,Asc­LF,00hèDŸÁs db€ '----',00hèXÉfOverFÜw db€ Asc­CR,Asc­LF,'*',Asc­TAB,Asc­TAB,00hèOpU¹H‹d db€ Asc­CR,Asc­LF,'* CENSUS OF OPCODE USAGE'èOpOverFÜw eqà $ ;†¢ˆtŸ¯ paÊ„f "OpU¹H‹d"é db€ Asc­CR,Asc­LF,'*',Asc­TAB,00hè;===============================================================è; M°pÌgËm:èMn:épçh h ;‡avˆaddÉ¿„f‚op‡”Ëgeè;élhld CpmFcb+9élÓ CpmFcb+11 ; ".typ"„f…npâ-Éf...épçh hépçh psw ; ...»vedélhld TypeSymélÓ TypeSym+2éshld CpmFcb+9éºa CpmFcb+11 ;‡Š‚ypˆ” "SYM"élxi h,MsgNoSym ;ƒboÊ msg…f„pŽ fßécall SŠUpInpâ ;‡Š‚ ÉaЮpâ³me.SYMè;élxi h,PÌgEndéshld L®ebuffer ;‡ŠƒddÉ¿„f L®ˆbufferè;è;…µ•aÝzˆGŠM°worׂ ÉguÛ‘‚ÁƒlÜcš¬°of SymRecsè;élxi b,LŽgthL®eéÓd béshld NextP¤l ;†exby‘‡“ʸp¤Øspaceélxi b,MaxSyméÓd béshld P¤lEnÐ ;‡Š Ýmª„f SymRecƒrËyè;écall L£dSymboß ; ÉaÐ.SYM, makˆSymRecsè;è;†ow ɹGŠM°wor× foÈalÜcš¬°of OpRecs, U¹Recsè;élhld NextP¤l ;†ow‡Š max p¤Øspaceélxi b,MaxP¤l ; ..bey¦ÐwÃwŽ”‡ymboßéÓd béshld P¤lEndè;épop psw ; ÉcoveÈtÁ„Íg®alépop h ; ..".typ"„f…npâ-Éfƒndéshld CpmFCB+9 ; ..ɺoÉ…”‚Á FCBéºa CpmFCB+11élxi h,MsgNoFiÙ ;ƒboÊ msg…f„pŽ fßécall SŠUpInpâ ; pÉpaÉ‚ ÉaÐm°fiÙè;élxi b,InFCB ; ÑfauÚ fiÙÉf foÈoâfiÙélhld P¤lEndéxchg ; DE->ºaÊ„f„âpâ bufferépop h ; ..HL->ª¸Ždécall SŠUpOâpâ ; pÉpaÉ„âpâ mecõsmè;écall PerçeFiÙ ; ÉaОÐcopy…npâ fiÙécall AddXÉf ;ƒppŽÐcÌ¿-Éf ÕspÛyécall AddOpU¹ ;ƒppŽÐopcoÑ cŽsçécall F®¯hOâpâ ; compÙ‘‚Á„âpâ fiÙéÉtè;===============================================================è;è; Pù 1 :€L£ÐtÁ‡ymboØ“bÙè;è; TÁ curɲ…npâ fiÙ…¸˜MAC ".SYM" fiÙ (oÈeqåvaÙ²).è; R‹Ðª‚ cÉšˆ˜SymRec foÈ‹cÀsymboØ®‚Á SymbolTabÙ.è; SŠ NSymboß‚ tÁ coæof‡ymboß.è;è; TŸcoу¿um‚ÃtÁ çãØGŠCÃÈmecõsm…¸¹”è; ÉaÐfÌmƒ MAC .SYM fiÙ.€Iv©w¸tÃfiÙƒ¸˜¹qánce:è;è;€€ filØ XXXX€fill LABEL€filØ XXXX€filØ... CpmEofè;è; wÁÉ "fill"…¸žyƒmoæof bÛnk¸žÐc¦tÌØcÃËc‘Ï.è; TŸv©w Ù— ç…g´É ݱ boæÓÍ.€EOF‡ÄulЦlyè; ÃppŽ befoɃ Áx valá XXXX, bâ…f…Ãppޏ‹rly†oè; Ãrm wilØbˆÔ±.è;è; MAC, b↢ RMAC, ø˜bug…°tÃif‚w symbo߃ɂÁè;‡amˆfoÈÙngtÀof‚Á‡ÄÊer,ƒnÐtÁ ÜngeÈapp‹Ï fiÏtè;…°tÁ‡ourcˆfiÙ,‚Á ÜngeÈcom fiÏ®‚Á .SYM fiÙ.è; B¢ÀŸ¹mbÙςɚƒ°®ª«Ø"?"…°˜³mˆŸ…f…tè; colÛ‘Ðaf‘È"Z".€Thç‚Á .SYM fiÙ…¸´® perfectè;„rÑr.€TÁ SymRec ݺ mçbˆorÑÉd,„ÈwˆwilØfØ”è; f®Ð³m.€S wˆÃvˆ” cÁck‚Á„rÑÈof‚Á‡ymbo߃sè; wˆŽ‘ÈtÁm,ƒnÐswap‡omˆ³m up‚ tÁiÈcorÉctè; p§ª¬n. TŸamoæ—‚ ˜¼Ê, bâ…woulÐbˆvery‡Üwè;…f‚Á .SYM fiÙ weÉ…°žy b↋r-perfecorÑr.è;è;€pɹrv --ƒllè;===============================================================èL£dSymboß:épçh pswépçh bépçh dépçh hè;élxi b,LŽgthSymRec ; cÉšˆ˜pÄny 1º SymRec,écall GŠM° ;‚ ºop‚Á‡oʃtÁéshld WP ; ÁaÐof‚Á ݺè;élhld NextP¤léshld SymbolTabÙ ;‡Š‚abÙ‡“Ê-addÉ¿è;élxi h,0éshld NSymboß ; NSymboß := 0émov d,h ; D := 00hè;èL£dSÜop: ; Üop:écall R‹dFill ; R‹dFill(D)émov a,décpi CpmEof ; wÅÙ (D<>CpmEof)éJRZ L£dSŽdè;élhld NSymboßé®x héshld NSymboß ; NSymboß := NSymboß + 1élxi b,LŽgthSymRecécall GŠM° ; GŠMn(LŽ=BC,Sn=HL)écall R‹dHex ; R‹dHex(D,Sn=HL)écall R‹dFill ; R‹dFill(D)écall R‹dLabel ; R‹dLabel(D,Sn=HL)écall ReOrÑÈ ; RŒrÑr(Pn=WP,Sn=HL)éshld WP ; P°:= SnéJMPR L£dSÜop ;nÐÜopè;èL£dSŽd:épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; R‹dFill(D): c¦sumˆ®½gµficžby‘¸fÌm‚Á .SYM fiÙè;€pɹrv -- PSW, BC, E, HLè;€Étuθ€-- D =†ex½gµficžby‘ fÌm fiÙ.è;---------------------------------------------------------------èR‹dFill:épçh pswè;èR‹dFÜop:émov a,décpi CpmEof ;nÐof fiÙ…¸½gµficžtéJRZ R‹dFŽdécpi Asc­BÛnk+1 ;ƒ¸¯ƒnytÅng > bÛnkéJRNC R‹dFŽdécall GŠCÃrémov d,aéJMPR R‹dFÜopè;èR‹dFŽd:épop pswéÉtè;---------------------------------------------------------------è; R‹dHex(D,Sn):‡”w‚Á Áx valá„fƒ‡ymboØ® HL->SymRec.è; TÁ fiÏÕgª…¸® DƒnÐwˆŸsumˆtÃtÁÉƒÉ 3 moÉ.è;€pɹrv -- PSW, BC, E, HLè;€Étuθ€-- D = by‘ƒf‘ÈtÁ fouÊÀÁx Õgª.è;---------------------------------------------------------------èR‹dHex:épçh pswépçh bépçh hépçh h ;‡avˆextË copy„f ->SymRecè;élxi h,0 ; Q := 0è;émov a,décpi CpmEoféJRZ R‹dHŽd ;…f (D <> CpmEof)‚Ánè;èémvi b,4 ; Ô 4‚im:èR‹dH¤p:éÓd héÓd héÓd héÓd h ; Q := (Q*16) ...émov a,décpi 'A'éJRC R‹dH¤p2éså 'A'-('9'+1)èR‹dH¤p2:éži 0FhéoË lémov l,a ;...+ Áx valá„f Décall GŠCÃrémov d,a ; D := GŠCÃréDJNZ R‹dH¤pè;èR‹dHŽd:éxthl ; HL->SymRec, valá„°ºackélxi b,SymValéÓd b ; HL->SymRec.Valépop bémov m,cé®x hémov m,b ; Sn.Valá := Qè;épop hépop bépop pswéÉtè;---------------------------------------------------------------è; R‹dLabel(D,Sn):‡”w‚Á (uppercŸe) ÛbeØofƒ‡ymboØ®è; HL->SymRec.€D c¦“®¸tÁ fiÏcÃËc‘r. TÁ‡ymbolè;x‘nׂ tÁ†exbÛnk„Èc¦tÌØcÃËc‘ȞЯƒ¿umedè;‚ bˆ16„ÈfeweÈby‘s.€TÁ SymRec øalÉady b‰°zeÌedè;‡ tÁÉ…¸´†‰Ð”‚erm®šˆtÁ‡tÍng wªÀ00h.è;€pɹrv -- PSW, BC, E, HLè;€Étuθ€-- D c¦“®¸by‘ƒf‘ÈÛbelè;---------------------------------------------------------------èR‹dLabel:épçh pswépçh bépçh hè;èR‹dLÜop:émvi a,Asc­BÛnkécmp d ; wÅÙ D>Asc­BÛnkéJRNC R‹dLŽdémov m,dé®x h ;€appŽÐD‚ Sn.Labelécall GŠCÃrémov d,a ;€D := GŠCÃréJMPR R‹dLÜop ;nÐwÅÙè;èR‹dLŽd:épop hépop bépop pswéÉtè;---------------------------------------------------------------è; ReOrÑr(Pn,Sn):·uÉ‚ÃHL->curɲ SymRec…¸corÉctlyè;„rÑÉd,….e. gÉšeÈtðWP->pÍoÈSymRec.è;€pɹrv --ƒllè;---------------------------------------------------------------èReOrÑr:épçh pswépçh dépçh héxchgélhld WPèReOrÑr1:éxchg ; HL->curɲ SymRec, DE->pÍoȦeépçh dépçh hécall CmpStÍngépop hépop déJRC ReOrÑrD¦eécall SwapSymsélxi h,-LŽgthSymRecéÓd d ; HL->SymRec befoÉ DE->SymRecéJMPR ReOrÑr1è;èReOrÑrD¦e:épop hépop dépop pswéÉtè;è; Swap‚Á p§ª¬·„f DE->SymRecƒnÐHL->SymRec, ç®gè;‡cËtcÀspacˆStÍngƒ¸˜ÄlÕngƒÉa.è;èSwapSyms:épçh bélxi b,LŽgthSymRec ; ÙngtÀfoÈalØmovépçh délxi d,StÍngépçh hécall MoveH”D ; StÍng := Sn->SymRecépop hépop déxchgépçh dépçh hécall MoveH”D ; Sn->SymRec := Pn->SymRecépop hépop déxchgépçh hélxi h,StÍngépçh décall MoveH”D ; Pn->SymRec := StÍngépop dépop hépop béÉtè;===============================================================è;è; Pù 2 :€PÌc¸tÁ fiÙ,†¢ˆsymboØçageè;è; TÁ…npâ fiÙ…¸˜MAC-compšibÙƒ¿embÙȼurcˆfiÙ. Itè; may Ãvˆ¹qáncˆnumbeÏ„°alØ(oȼme) ݱs,ƒnЪ mayè; Ãvˆž„lÐcÌ¿-ÉfeÉncˆš‚Ánd.è; Copy…”‚Á„âpâ wªÀ±w‡eqáncˆnumbeÏ.€N¢ˆallè;‡ymboØçage, ÉcorÕng Ñf®®g-p¥²¸®‚Á‡ymboØ“bÙè;ƒnÐçage-p¥²¸® U¹Recs. N¢ˆalØopcoѸ® OpRecs.è;è;€pɹrv --ƒllè; ç‡cËtcÀwor× "WP"ƒnÐ"WO"è;è; N¢ˆ--…¯ƒtŸÙveØtÃwˆeÝm®šˆÝ±¸tÃtè; beg® wªÀ"*", wÅcÀaÉ commŽÝ±¸” ASM, MAC.è;---------------------------------------------------------------èPerçeFiÙ:épçh pswépçh bépçh dépçh hè;élxi b,SeqS“Ê ;…µ•aØÝ±†umberè;èPerçe1:écall CopyL®e ; WÅÙ (CopyL®e(Ln=BC))éJRZ PerçeZè;élhld L®eBuffer ;€P := 1émov a,mécpi '*' ;„ld-ºyÙ commŽÝ±?éJRZ Perçe9 ; ..y,‡kip…allélxi d,StÍng ; (addÉ¿„uȺÍng-aÉa)écall GŠWorÐ ;€GŠWord(S=DE,P=HL)éJRZ Perçe9 ; ..if† word, Üopéshld WP ; (»vˆ‘xp¥²eÈP)è;écall Symbol ;€if Symbol(S=DE,Sn=HL)‚ÁnéJRZ Perçe2 ; (´˜k´w°symbol)écall N¢eDef ;€€N¢eDef(Sn=HL,Ln=BC)élhld WPécall GŠWorÐ ;€€GŠWord(S=DE,P=HL)éJRZ Perçe9éshld WPè;èPerçe2: ; DE->ºÍng…¸ž„pcoÑ -- ݱ'¸fiÏ´n-Ûbel.écall N¢eOpCoÑ ;€N¢eOpCoÑ(S=DE,On=HL)éshld WO ; (»vˆOn,‚Á OpRecƒddÉ¿)èPerçe3: ;‡cž‚Á ɺ„f‚Á ݱ foÈç„f‡ymboßélxi d,StÍngélhld WPécall GŠWorÐ ; gІexwordéJRZ Perçe9 ; ..if‚ÁÉ…¸¦eéshld WPécall Symbol ;€if Symbol(S=DE,Sn=HL)‚ÁnéJRZ Perçe3 ; (´k´wn. Ég¯‘r?)éxchgélhld WOéxchgécall N¢eU¹ ; N¢eU¹(Ln=BC,On=DE,Sn=HL)éJMPR Perçe3è;èPerçe9: ;nÐof„± ݱ,‚ry†extélxi h,SeqIncr ;…ncÉmŽtÁ ݱ†umberéÓd bémov b,hémov c,l ; BC ø±xݱ†umberéJMPR Perçe1è;èPerçeZ: ;nÐof fiÙ,xªépop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; CopyL®e(Ln): ÉaÐtÁ†exݱ fÌm‚Á…npâ fiÙ‚ tÁè; ݱ buffer. Ifnd-of-fiÙ„ccuÏ,„Èif‚Á ݱ‚uθoâè;‚ bˆtÁ‡“Ê„fƒ°olÐcÌ¿-ÉfeÉnce,‚Á°ÉtuÎ Z‚rá.è; OtÁrw¯ˆwÍ‘‚Á ݱ (wªÀ˜±w ݱ†umbeÈLn)‚ tÁè;„âpâ fiÙƒnÐÉtuÎ Z faße.è;€®p  -- BC c¦“®¸Ý±†umbeÈLnè;€pɹrv -- BC, DE, HLè;---------------------------------------------------------------èCopyL®e:écall R‹dL®e ; ÉaÐݱ,‡tÍp†umberérz ;xª„°ŽÐof fiÙè;épçh dépçh hélhld L®eBufferélxi d,XÉfH‹décall CmpStrText ;‡“Ê„f„lÐXÉf?épop hépop dérz ; ..tÉš‚ßnÐof fiÙè;écall WÍ‘L®e ;†o. wÍ‘‚Á ݱ,éÉt ; ..ÉtuÎ z faßeè;---------------------------------------------------------------è; R‹dL®e: ÉaИcompÙ‘ ݱ…² L®eBuffer. If‚Á ݱè; ø˜¹qáncˆnumbeȦ…t,‡tÍp…off (WÍ‘L®ˆwilØaddè;ƒ†ew„±).€RŠuÎ Z‚rá„°ŽÐof fiÙ.è;€pɹrv -- BC, DE, HLè; N¢:‚Ÿcoу¿um‚ÃalØÝ±¸ŽÐ® CR, LF.€LF…sè;‚akŽƒ¸tÁnd-of-ݱ‡ig³l.€TÁ†exbuffeÈby‘, HL->m,è;…¸çeÐfoÈtÁ p¹uÔ-coÑ vaÍabÙ "C".€CÁckDigªƒndè; WÅ‘Spacˆ‘º HL->m.è;---------------------------------------------------------------èR‹dL®e:épçh hè;élhld L®eBufferécall GŠCÃrè;écpi CpmEoféJRZ R‹dL®eZ ; EOFxpec‘Цly„°1º callémov m,a ; C := GŠCÃrécall CÁckDigª ;…f C…¸˜ÕgªéJRNZ R‹dL®e3 ; (¯n't)èR‹dL®e1:écall GŠCÃÈ ;€Ép‹témov m,a ;€ C:=GŠCÃrécall CÁckDigª ;€æ•ØC…¸´˜ÕgªéJRZ R‹dL®e1écall WÅ‘Space ;€if C…¸bÛnk„È“bécz GŠCÃÈ ;€€swalÜw‚Ãt,‚¤émov m,aè;èR‹dL®e3:émvi a,Asc­LF ; wÅÙ C…¸´˜LFécmp méJRZ R‹dL®eNZé®x h ;…ncÉmŽPécall GŠCÃrémov m,a ; C := GŠCÃréJMPR R‹dL®e3 ;nÐwÅÙè;èR‹dL®eNZ: ; ݱ compÙ‘déoÍ -1 ; ..ÉtuÎ Z faßeèR‹dL®eZ: ;of‡‰n, Z‚ráépop héÉtè;---------------------------------------------------------------è; WÍ‘L®e(Ln): wÍ‘‚Á ݱ…°tÁ ݱ buffeÈ”‚Áè;„âpâ fiÙ, pÉfix®g…wªÀ˜±w ݱ†umbeÈ(® BC).è;€pɹrv --ƒllè;---------------------------------------------------------------èWÍ‘L®e:épçh pswépçh bépçh hémov h,bémov l,c ; (pŸ¸L°® HL)écall Pâ9999 ; wÍ‘ 4-Õgª ݱ†umberécall PâTab ; ..žÐ˜“bè;élhld L®eBufferèWÍ‘L®e2:émov a,mécall PâCÃré®x hécpi Asc­LFéJRNZ WÍ‘L®e2è;épop hépop bépop pswéÉtè;---------------------------------------------------------------è; GŠWord(S,P): Advžcˆp¥²eÈP‚hÌugÀžƒ¿embly‡“‘mŽt,è; colÙc•ngƒ worÐ--ƒ MAC„ÈASM Ûbel.€RŠu΂Á worЮè;‡tÍng S.€RŠuÎ Z‚rá…f† worЯ foæÐby ݱnd.è;€pɹrv -- BC, DEè;€Étuθ€-- HLƒdvžced, Z fÛg‡Šè;€ç‡cËtcÀworÐ"WF".è;è; TÁ‡y²axƒlÜweÐby MAC…¸frly compÝcšed,‡ ˜frlyè;‡opźicšeÐscž±È¯†‰ÑД ÑaØwªÀª Ëpidly. TÅsè; coÑ çƒ f®ªe-ºšˆaâomš¦,ƒ°algoÍthm ÑveÜpedè; foÈcompiÙÏ. A‡impÝf©ÐveϬ°of‚Á ruÙ¸of MAC‡y²axè;…¸ŽcoÑПƒ‡“‘-tË·ª¬°mšÍx. A mšÍx Ìw‡“n×è; foÈtÁ‚ypˆof‚okŽ bng‡cž±d, wÅÙ‚Á (cÛ¿„f‚Á)è; curɲ…npâ by‘‡eÙc—ƒ mšÍx column. A celØÄlׂwoè;‚Ångs:‚Á‡“‘ (Ìw)‚ bˆçeбxt,ƒnОƒc•¦‚ beè; performeЦ‚Á curɲ cÃËc‘r. S‰‚Á‚exfoȘpictuÉè;„f‚Á mšÍx…°humž‚erms.è;è; A¸impÙmŽ‘d,acÀmšÍx celدƒ pÈof by‘s. TÁ fiÏtè;…¸tÁ„ff¹fÌm‚Á‡“Ê„f‚Á‚abÙ‚ tÁ ѽÉÐÌw,è;‚Á‡ec¦Ð¯‚Á„ff¹fÌm "Ac•¦"‚ tÁ ѽÉÐac•¦.è; è;---------------------------------------------------------------èFSA:èFSA0 equ $-FSA ;‡“‘ 0 valá --‡kipp®gédb FSA0,ACT0, FSA1,ACT1A, FSA1,ACT1, FSA2,ACT0édb FSA0,ACT0, FSA3,ACT0,€FSA0,ACT3, FSA0,ACT3èFSA1 equ $-FSA ;‡“‘ 1 valá -- bålÕng wordédb FSA0,ACT2, FSA1,ACT1, FSA1,ACT1, FSA1,ACT1édb FSA1,ACT0, FSA0,ACT2, FSA0,ACT2, FSA0,ACT2èFSA2 equ $-FSA ;‡“‘ 2 valá --‡kip†umberédb FSA0,ACT0, FSA1,ACT1, FSA2,ACT0, FSA2,ACT0édb FSA2,ACT0, FSA3,ACT0, FSA0,ACT3, FSA0,ACT3èFSA3 equ $-FSA ;‡“‘ 3 valá --‡kip Ý‘Ëlédb FSA3,ACT0, FSA3,ACT0, FSA3,ACT0, FSA3,ACT0édb FSA3,ACT0, FSA0,ACT0, FSA3,ACT0, FSA0,ACT3è;---------------------------------------------------------------è; TŸ“bÙ…¸çeД cÛ¿ify…npâ by‘¸®”„±„f:è; CÛ¿1 alpÃbŠic¸´çeЮ†umeÍc c¦ºž—è; CÛ¿2 alpÃbŠic¸çeЮ†umeÍc c¦ºž—è; CÛ¿3 Õgª¸0..9è; CÛ¿4 ÔlÛȽgnè; CÛ¿5 ½ngÙ qä‘è; CÛ¿6 ¹micoܰ(ÜgicaغšemŽŽd)è; CÛ¿7 L®eF‰Ð(phy½caغšemŽŽd)è; CÛ¿0 alØ¢ÁÏè;---------------------------------------------------------------èCÛ¿0 equ 2*0 ; cÛ¿ valá¸muÚipÙ¸of 2 becaçeèCÛ¿1 equ 2*1 ;acÀFSA celد‚w by‘s.èCÛ¿2 equ 2*2èCÛ¿3 equ 2*3èCÛ¿4 equ 2*4èCÛ¿5 equ 2*5èCÛ¿6 equ 2*6èCÛ¿7 equ 2*7è;èCÛ¿ macÌ ?a,?z,?céORG CLASSTABLE+?A耀 IF NOT NUL ?ZéREPT ?Z-?A+1éDB ?CéENDM耀 ELSEéDB ?C耀 ENDIFéENDMè$-PRINTèCÛ¿TabÙ:éÉpt 128édb CÛ¿0éŽdméCLASS '?','Z',CÛ¿1éCLASS 'a','z',CÛ¿1éCLASS 'A','F',CÛ¿2éCLASS 'a','f',CÛ¿2éCLASS 'H',,CÛ¿2éCLASS 'h',,CÛ¿2éCLASS 'O',,CÛ¿2éCLASS 'o',,CÛ¿2éCLASS 'Q',,CÛ¿2éCLASS 'q',,CÛ¿2éCLASS '0','9',CÛ¿3éCLASS '$',,CÛ¿4éCLASS '''''',,CÛ¿5éCLASS Asc­LF,,CÛ¿7éCLASS ';',,CÛ¿6éorg CÛ¿TabÙ+128è$+PRINTè;---------------------------------------------------------------è; O°Žtry‚ GŠWord, DE->ºÍngƒÉ˜S,ƒnÐHL->ݱ‚ext.è; I°tÁ coÑ, HLƒnÐBCƒÉ çeÐfoÈwork Ég¯‘Ï,‚Á‡tÍngè;ƒddÉ¿…¸kep¦‚Á‡“ck,ƒnÐDE->ݱ‚ext.è;---------------------------------------------------------------èGŠWord:épçh b ; pɹrvˆBC,épçh d ; ..žÐDEƒ¸®pâémvi b,0 ; B wilØc¦“® 00ÀthÌugÄâépçh d ; pâ ->ºÍng„°tÁ‡“ckéxchg ; ..žÐ->‘x® DEélxi h,FSAéshld WF ;‡Š…µ•aØFSA‡“‘„f "¢Ár"è;èGŠFSA:élÓx d ; curɲ…npâ by‘..éži Asc­DEL; ..Ù¿ ÅgÀbª foÈ»fŠyémov c,a ; BC gЏ00xxélxi h,CÛ¿TabÙéÓd b ; HL->cÛ¿„f DE->by‘émov c,m ; BC gЏ00ccélhld WFéÓd b ; HL->FSA[ºše,cÛ¿]émov c,m ; BC gЏ00¿é®x hémov a,m ; A ÄlׂÁƒc•¦élxi h,FSAéÓd béshld WF ;‡Š†exFSA‡“‘émov c,a ; BC gЏ00›élxi h,ACTéÓd bépchl ; g Ô‚Áƒc•¦è;èACT:è;ƒc•¦ 1A:‡”É‚Á…µ•aØby‘„fƒ word. N Õffeɲè;‚ðžy„tÁÈby‘, bâ…coulÐbe.è;èACT1A equ $-ACTè;ƒc•¦ 1:‡”É‚Á curɲ by‘,ƒ¸uppercŸe,…°tÁ‡tÍng.è;èACT1 equ $-ACTépop h ; HL->ÑveÜp®g‡tÍngélÓx décall UpperCŸeémov m,aé®x hépçh hè;è;ƒc•¦ 0 (tÁ†iØac•¦):ƒdvžcˆtÁ…npâ p¥²er.è;èACT0 equ $-ACTé®x déjmp GŠFSAè;è;ƒc•¦ 3:nÐof ݱ wªÀ´ worÐfoæd,xª.è;èACT3: equ $-ACTéxË a ; ÉtuÎ Z‚ráè;è;ƒc•¦ 2:xªƒtÁnÐofƒ word. A…¸´nzeÌ.è;èACT2: equ $-ACTéoË a ;‡Š ZƒccorÕng‚ Aè;èGŠWordEnd:épop h ; HL->by‘ƒf‘ÈworÐ(ifƒny)émvi m,00h ;‚erm®šˆtÁ word-ºÍngéxchg ; HL…¸advžceБxp¥²erépop d ; ɺoÉ DE->ºÍngépop béÉtè;---------------------------------------------------------------è; Symbol(S,Sn): Üok up DE->uppercŸˆsymbol-worЮ‚Á‡ymbolè;‚abÙ.€If foæd, ÉtuÎ S°(® HL),‚ÁƒddÉ¿„f‚Áè; mšcÅng SymRec.€OtÁrw¯ˆÉtuÎ HL=0000ƒnÐZ‚rá.è;€pɹrv -- BC, DEè;€Étuθ€-- HL->SymRecƒnÐZ faße,„ÈHL=00ƒnÐZ‚ráè;€ç‡cËtcÀwor× "WI"ƒnÐ"WM"è;---------------------------------------------------------------èSymbol:épçh bè;élhld NSymboßéshld WMécall MÕv2 ; HL:= cÝng(M/2) (®ª«ØI)è; €M := fÜor(M/2)èSymboL¤p:éshld WI ;‡avˆcurɲ (fiÏt) Iè;è; c¦veÊ HL=I…² ˜SymRecƒddÉ¿: (I*24)+SymbolTabÙ.è; N¢ˆtÃI…¸ž„Íg®-1…nÑx wÅÙ‚ÁƒrËy…¸Éallyè;ƒddÉ¿eÐoÍg®-0.è;édcx h ;…=1 becom…=0,tc.éÓd h ;… * 2éÓd h ;… * 4éÓd h ;… * 8émov b,hémov c,l ; (»vˆi*8)éÓd h ;… * 16éÓd b ;… * 24émov b,hémov c,l ; (»vˆi*24)élhld SymbolTabÙéÓd b ; HL->SymbolTabÙ[I]è;è; compaÉ (DE->ºÍng) vs. (HL->SymRec.Label).è;épçh dépçh hécall CmpStÍngépop hépop dè;è;…f S=TabÙ[I],‚Á‡‹rcÀsucc‰ÑОÐHL->SymRecè;éJRZ SymbolHªè;è; No? PÌc‰ÐaccorÕng‚ S::TabÙ[I].€If M=0…°tÁÈcŸeè;‚Á°tÁ‡‹rcÀøfÙd.€Bâ M cž'bˆ‘ºeÐæ•ØtÁè; pɹ² fÛg-¹’®g¸Ãvˆb‰°çeД jump wªh.è;éJRC SymboLsè;è; S>TabÙ[I],‡ ÙI := I+cÝng(M/2)è;écall MÕv2éJRZ SymbolFlémov b,hémov c,l ; BC := cÝng(M/2)élhld WIéÓd béjmp SymboL¤pè;è; SSymRecè;èSymbolHª:épop bémov a,héoË l ;‡Š Z foÈsuccs/fléÉtè;è; TŸsubÌ⮈¹— worÐM‚ fÜor(M/2),ƒnÐÉtuÎsè; cÝng(M/2)…°HL.€If M=0, ÉtuθZ fÛg‡ŠƒnÐHL=0000è;èMÕv2:élhld WMémov a,léoË h ;‚M, cÙaÈcarryérzè; SÅfHL Íg„± bª…² Carry.€TÁ Z80 "RR H"ƒnÐ"RR L"è;…·truc•¦¸cž'bˆçeÐÁÉ, becaçˆtÁyƒffectÁ Zè; fÛg wÅÙ "RAR" Ùav…aܱ.耀 movƒ,À! ËÈ! mov h,a耀 movƒ,Ø! ËÈ! mov l,aéshld WM ; M := fÜor(M/2)éÎc ;xª…f fÜor(M/2)=cÝng(M/2)é®x h ; form cÝngéÉtè;---------------------------------------------------------------è; N¢eDef(Ln,Sn): TÁ Ñf®®g-p¥²„f HL->SymRec øb‰nè; foæÐš ݱ BC=Ln. PÜp‚Á ݱ†umbeÈ®” SymRec.L®eè;€pɹrv --ƒllè; N¢e:ƒ‡Š-symboØmay bˆÑf®eÐmoɂð¦ce. TŸcoÑè; jçÉpÛcƒny pÉv¬ç Ñf®ª¬°Ý±†umber.è;---------------------------------------------------------------èN¢eDef:épçh hépçh délxi d,SymL®eéÓd démov m,cé®x hémov m,bépop dépop héÉtè;---------------------------------------------------------------è; N¢eOpCoÑ(S,On): F®d/I·eÊ‚Á„pcoÑ wņamˆ¯…nè; DE->ºÍng,…°tÁ b®ary‚Ɉof OpRecs.€IncÉmŽªsè; coæof ç. RŠuÎ HL->tÁ OpRec.è;€pɹrv -- PSW, BC, DEè;€Étuθ€-- HL c¦“®¸addÉ¿„f OpRecè;---------------------------------------------------------------èN¢eOpCoÑ:épçh pswépçh bépçh délxi h,OpR¤t ; F®dAdd(T->OpR¤t->NoÑ)è;èF®dAdd:; (T->p¥²er->´Ñ)émov c,mé®x hémov b,m ; BC -> NoÑémov a,béoË c ;…f (T->p¥²eȯ†il)‚ÁnéJRNZ F®dAdd2è;édcx hécall MakeNoÑ ;€ T->p¥²eÈ:= MakeNoÑ(S,T)éJMPR N¢eOpZ1 ;€ ÉtuÎè;èF®dAdd2: ;ßeémov h,bémov l,c ;€ Q:=T->p¥²eÈ(HL…¸Q,‚¤)épçh dépçh h ;€…f (S=Q->NoÑ.Valá)‚Ánécall CmpStÍngépop hépop déJRZ N¢eOpZ2 ; ÉtuÎè;߈p¥²‚ NoÑ.LefoÈNoÑ.RigÂ,ƒ¸appÌpÍšeélxi b,OpLeft ;„ff¹” NoÑ.LeftéJRC F®dAdd3é®x bé®x b ; ..oÈoff¹” NoÑ.RigÂèF®dAdd3:éÓd b ; T->NoÑ.LefoÈNoÑ.RigÂéJMPR F®dAddè;è; A†ew†oÑ Ã¸b‰°cÉšed. MakeNoÑ p⸪¸addÉ¿ wÁÉè; HL p¥²s.€MovˆtÔ HL,‡ HL->±w NoÑ.è;èN¢eOpZ1:émov a,mé®x hémov h,mémov l,aè;è; A mšcÅng†oÑ Ã¸b‰°foæd,ƒnÐQ (HL) p¥²¸”…t.è;èN¢eOpZ2:è;è;…ncÉmŽtÁ çˆcoæ® HL->NoÑè;éxchgélxi h,OpCoætéÓd démov c,mé®x hémov b,mé®x bémov m,bédcx hémov m,céxchgè;è;xª wªÀHL->NoÑè;épop dépop bépop pswéÉtè;---------------------------------------------------------------è; MakeNoÑ(S,T): cÉšˆ˜±w OpRec,…µ•aÝzˆª wªÀ˜³meè; fÌm DE->ºÍngƒnÐzeÌ Coæt, Left,ƒnÐRigÂ,ƒnÐpÛ²…—è;ƒddÉ¿ wÁÉ HL p¥²s.è;€pɹrv --ƒllè;---------------------------------------------------------------èMakeNoÑ:épçh pswépçh bépçh dépçh hè;élxi b,LŽgthOpRecécall GŠM° ; HL->alÜcšeÐspaceéxchg ; CopyStÍng mov H‚ Décall CopyStÍng ; OpNamˆ:= Sè; €DE->±w OpRecépop h ; HL->worД p¥²‚ ªémov m,eé®x hémov m,dédcx hè;épop dépop bépop pswéÉtè;---------------------------------------------------------------è; N¢eU¹(Ln,On,Sn): A çˆof HL->SymRec øb‰°foæÐ¦ ݱè; BC=Ln, ç®g DE->OpRec foÈž„pcoÑ.€CÉšˆ˜U¹Rec, fillè;…®,ƒnÐcî…”‚Á SymRec.è;€pɹrv --ƒllè;---------------------------------------------------------------èN¢eU¹:épçh pswépçh bépçh dépçh hè;épçh h ;‡avˆ˜copy„f ->SymRecépçh b ;‡avˆtÁ ݱ†umberélxi b,LŽgthU¹Recécall GŠM° ; HL->±w U¹Rec (zeÌed)épop b ; ÉcoveÈݱ†umberépçh h ;‡avˆ->U¹Recè;é®x h ; (U¹Nex= 0000,nÐof cî)é®x h ; HL->U¹L®eémov m,cé®x hémov m,b ; U¹L®ˆ:= Lné®x h ; HL->U¹Opémov m,eé®x hémov m,d ; U¹Op := Onè;épop d ; DE->U¹Recépop h ; HL->SymRecélxi b,SymU¹éÓd b ; HL->SymU¹ (cî Áad)è;èN¢eU¹2: ; HL->p¥²er->U¹Recémov c,mé®x hémov b,m ; BC := p¥²er->U¹Recémov a,béoË c ;…¸ª†il?éJRZ N¢eU¹3 ;€(y,‚ack†ew„± ÁÉ)émov h,b ;†o, c¦•ná Ôw°cîémov l,céJMPR N¢eU¹2è;èN¢eU¹3: ; (HL-1)->µl,nÐof cîémov m,dédcx hémov m,e ; HL->p¥²er->±w U¹Recè;épop hépop dépop bépop pswéÉtè;===============================================================è;è; Pù 3 :€AppŽÐtÁ cÌ¿-ÉfeÉncˆ”‚Á„âpâè;è; EacÀݱ…¸kepwªÅ°˜Ýmª„f MaxCoØcolum·. TŸcouldè; bˆÔ± by pÉpaÍngƒ compÙ‘ ݱ„fƒlØç,‚Á°câ•ngè;ƒappÌpÍšˆp¥²¸Ÿ†‰Ñd.€I·‘ad,ƒ ræµng column-è; coæ¯ kept,ƒnÐtÁ curɲ ݱ…¸ŽÑÐwÁ±veÈtÁ†extè; ÕspÛy æª MIGHT†¢ fª.€TŸwilؼmŠim ÉsuÚ…nè; ݱ¸tÃaɇÄÊeÈtðtÁy Ãvˆ” be.è;è;€pɹrv --ƒllè;---------------------------------------------------------------èAddXÉf:épçh pswépçh bépçh dépçh hè;élxi h,XÉfH‹décall PâStÍng ;„âpâ‚Á ÁaÕng ݱè;élxi h,XÉfLegŽd ;„âpâ‚Á colum°ÙgŽ×écall PâStÍngè;écall FiÏtSymbol ; FiÏtSymbol(Sn)è;èAddXÜop:éJRZ AddXŽÐ ; wÅÙ (S°<>†il)è;écall WÍ‘Xݱ ;€ WÍ‘Xݱ(Sn)écall NextSymbol ;€ NextSymbol(Sn)éJMPR AddXÜop ;nÐwÅÙè;èAddXŽd:épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; WÍ‘Xݱ(Sn): wÍ‘‚Á cÌ¿-Éf…nformš¬°foÈHL->SymRecè;‚ tÁ„âpâ fiÙ. WÍ‘†¢Ång…f‚Á‡ymboد†tÁrè; Ñf®eдÈçeЮ‚Á…npâ fiÙ --.g.…f…¯ƒ Ûbelè;…²eÎaØ”ƒ°®cluÑÐÌâ®e.è;€pɹrv --ƒllè;---------------------------------------------------------------èWÍ‘Xݱ:épçh pswépçh bépçh dépçh héxchg ; DE->SymRec, HL çeÐfoÈworkè;élxi h,SymU¹éÓd d ; HL->SymRec.U¹...émov a,mé®x héoË mélxi h,SymL®eéÓd d ; HL->SymRec.L®e...éoË mé®x héoË méJRZ WÍ‘X9 ;…f (´ Ñf.„Èç) ÉtuÎè;émvi a,'*'écall PâCÃÈ ; PâCÃr("*")écall PâBÛnk ; PâBÛnkè;élxi h,SymL®eéÓd d ; HL->symboØÑf®ª¬°Ý±émov a,mé®x hémov h,mémov l,a ; HL=Ñf®ª¬°Ý±†umberéoË hécnz Pâ9999 ;…f Sn.L®e<>0‚Á°Pâ9999élxi h,DŸÁsécz PâStÍng ;ße PâStÍng("----")è;émvi a,Asc­BÛnkécall PâCÃÈ ; PâCÃr(" ")è;élxi h,SymValéÓd d ; HL->symbol'¸Áx valáémov a,mé®x hémov h,mémov l,a ; HL=symbol'¸Áx valáécall PâXXXX ; PâXXXX(Sn.Valá)è;émvi a,Asc­BÛnkécall PâCÃÈ ; PâCÃr(" ")è;éxchg ; HL->SymRecécall PâStÍng ; PâStÍng(Sn.Label)è;écall StÍngLŽgth ; ÙngtÀof ÛbeØ® AéaÕ 13émov b,a ; CoØ:= 13 + StÍngLŽgth(Sn.Label)écall WÍ‘U¹s ; WÍ‘U¹s(Col,Sn)è;écall PâCRLF ; PâCRLFè;èWÍ‘X9:épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; WÍ‘U¹s(Col,Sn): wÍ‘ƒlØtÁ ç„f HL->SymRec. A "çe"è;…¸tÁƒpp‹Ëncˆof‚Ãsymboئ‡omˆÝ± ÉۑД‡omeè;„pcoÑ.€U¹¸aÉ ÉcorÑЮƒ cî„f U¹Recs,‚Á cîè; bngƒncÄÉЮ Symbol.U¹.€B c¦“®¸˜column-coæt.è;€pɹrv -- PSW, C, DE, HLè;---------------------------------------------------------------èWÍ‘U¹s:épçh pswépçh dépçh hè;élxi d,SymU¹éÓd d ; HL->Symbol.U¹émov e,mé®x hémov d,méxchg ; HL->U¹Rec (oÈHL=0000)élxi d,StÍng ; DE->scËtcÀºÍng‡paceéxË aéºax d ; DE->tÁ†ulغÍngémov a,lèWÍ‘UÜop:éoË héJRZ WÍ‘UŽd ; wÅÙ (U°<>†il)è;écall PâU¹ ; PâU¹(Col,StÍng,Un)émov a,mé®x hémov h,mémov l,a ; U°:= Un.NextéJMPR WÍ‘UÜop ;nÐwÅÙè;èWÍ‘UŽd:épop hépop dépop pswéÉtè;---------------------------------------------------------------è; PâU¹(Col,StÍng,Un): wÍ‘ƒ ÑscÍp•¦„f HL->U¹Rec. TÁè; ÑscÍp•¦…¸tÁÈ" OPCODE-¶¶",„Èjç" -¶¶"…f‚Áè; pÉv¬ç„pcoÑ wŸ‚Á‡ame.€If‚Á ÑscÍp•¦ w¦'fªè;…°MaxCoØcolum·,‡“ʃ†ew,…nѲed, ݱ.è;€®p  -- B c¦“®¸tÁ colum°of‚Á†exoâpâ by‘è; DE->ºÍng,†amˆof‚Á Ûº„pcoÑè; HL->U¹Recè;€pɹrv -- PSW, C, DE, HLè;---------------------------------------------------------------èLŽgthU¹ equ 6 ; ÙngtÀ" -¶¶", woÏcŸeèPâU¹:épçh pswépçh dépçh hè;è; gŠ‚Á çagˆ®formš¬°--‡avˆtÁ ݱ†umbeȦ‚Áè;‡“ckƒnÐgŠ HL->tÁ„pcoчtÍng.è;é®x hé®x h ; HL->U¹Rec.L®eépçh h ; (»vˆtÃt)émov a,mé®x hémov h,mémov l,a ; HL=U¹Rec.L®eéxthl ; HL->U¹Rec.L®e, L®ˆ¦‡“cké®x hé®x h ; HL->U¹Rec.OpcoÑémov a,mé®x hémov h,mémov l,a ; HL->OpRec (žÐOpName)è;è;·uÉ‚ÃtÁÉ…¸ŽougÀÌom„°tÁ curɲ ݱ forè;‚Á wÄÙ ÕspÛy: bÛnk, hypÁn,ƒ¸mžyƒ¸fouÈÕgªs,è;ƒnÐperÃp¸tÁ„pcoчtÍng.è;épçh dépçh hécall CmpStÍngépop hépop dépçh psw ; (»vˆÉsuÚ„f compaÉ)éJRZ PâU¹2 ;…f (StÍng<>Un.OpcoÑ)‚Ánécall StÍngLŽgthéadd bémov b,a ; CoØ:= CoØ+ LŽgth(opcoÑ)écall CopyStÍng ; StÍng := Un.OpcoÑèPâU¹2:émov a,bécpi MaxCol-LŽgthU¹;…f (Col+6<=MaxCol)‚ÁnéJRNC PâU¹3écall PâBÛnk ; PâBÛnké®r b ; CoØ:= Col+1éJMPR PâU¹4èPâU¹3: ;ßeécall S“ÊNewL®e ; S“ÊNewL®e(Col)è;èPâU¹4:épop psw ;…f (StÍng<>Un.OpcoÑ)‚Ánécnz PâStÍng ; PâStÍng(Un.OpcoÑ)è;émvi a,'-'écall PâCÃÈ ; PâCÃr("-")é®r b ; CoØ:= Col+1épop h ; (ÉcoveÈݱ†umber)écall PâZZZZ9 ; CoØ:= CoØ+ PâZZZZ9(Un.L®e)éadd bémov b,aè;épop hépop dépop pswéÉtè;---------------------------------------------------------------è; S“ÊNewL®e(Col):‡“ʃ°overfÜw ݱ„f cÌ¿-Éf. ç,è;…nѲeм‚ÃtÁ 燓nÐoâ fÌm‚Á fixeЮfo.è;€pɹrv -- PSW, C, DE, HLè;€Étuθ€-- B upӑД‚Á†ew columnè;---------------------------------------------------------------èS“ÊNewL®e:épçh hélxi h,XÉfOverFÜwécall PâStÍngémvi b,17 ; colum°foȱxoâ-by‘épop héÉtè;---------------------------------------------------------------è; FiÏtSymbol(Sn)ƒnÐNextSymbol(Sn): f®ÐtÁ fiÏt/±xtè; SymRec.€TÁ¹ fæc•¦¸aÉ…¼Û‘Ю ÑfeÉncˆ”‚Áè; pÍncipÙ„f…nformš¬°ÅÕng,‡ tÃtÁ„rgžizš¬nè;„f‚Á‡ymboØ“bÙ cž bˆcÃngeÐwªÄâ cÃng®g AddXÉf.è;€pɹrv -- BC, DEè;€Étuθ€-- HL->SymRecƒnÐZ faße,„ÈHL=0000ƒnÐZ‚ráè; ç‡cËtcÀworÐ"WM"è;---------------------------------------------------------------èFiÏtSymbol:élhld Nsymboßéshld WM ;‡Š coæof‡ymboß‚ Ôémov a,héoË lérz ;…f†¦e, ÉtuÎ wªÀZ‚ráélhld SymbolTabÙ ;„tÁrw¯ˆÉtu΂Á fiÏtéÉtè;èNextSymbol:épçh bémov b,hémov c,l €€ ;‡avˆcurɲ SymRecƒddÉ¿élhld WMédcx h ; coæof‡ymboß‚ Ôémov a,héoË léJRZ NextSymZ ;…f†¦e,xª wªÀZéshld WM ; upÓ‘ coæ” go,élxi h,LŽgthSymRec ; ..ÉtuÎ ->±xSymRecéÓd bèNextSymZ:épop béÉtè;===============================================================è;è; Pù 4 :€AppŽÐ˜cŽsç„f„pcoÑ çˆ”„âpâè;è; C¦•ná‚Á„âpâ fiÙ wªÀ˜cŽsç„f‚Á çˆof„pcoÑsè;…°tŸfiÙ.€TŸ¯ƒ by-pÌducof‡”Íng„pcoѸ®ƒè;‚Ɉof OpRecs, ËtÁÈtðºoÍngacÀŸƒ æiqá‡tÍng.è; A°"®orÑr" (alpÃbŠic)‚ouÈof‚Á b®ary‚ɈpÌducè;ƒlØopcoѸ®ƒlpÃbŠic„rÑr.è;è; A¸wªÀtÁ cÌ¿-ÉfeÉnce,acÀݱ…¸ŽÑÐpÍoÈ”è; ÉacÅngƒ ÙngtÀof MaxCol.è;€pɹrv --ƒllè;---------------------------------------------------------------èAddOpU¹:épçh pswépçh bépçh dépçh hè;élxi h,OpU¹H‹d ; wÍ‘ ÁaÑÈݱécall PâStÍngécall S“ÊNewOp ; S“ÊNewOp(Col)è;élhld OpR¤témov a,héoË l ;…f (OpR¤¯†¢†ull)‚Ánécnz I´rÑÈ ; I´rÑr(OpR¤t->´Ñ)écall PâCRLFè;épop hépop dépop bépop pswéÉtè;---------------------------------------------------------------è; I´rÑr(On) : ÕspÛyƒlØtÁ OpRec¸Épɹ²eÐby‚Á‚Éeè; Ì¢eЮ On->OpRec,…°alpÃbŠic ("®-")„rÑr.è;€pɹrv --†¦e..ºack‡pacˆcoulÐbˆcÍ•caØ®‡uchè; ÉcuÏivˆÌâ®e,ƒnÐAddOpU¹ pÌ‘c—‚Áè; calÙr'¸Ég¯‘Ï.è;---------------------------------------------------------------èI´rÑr:épçh h ;‡avˆextË copy„f HL->OpRecè;élxi d,OpLeftéÓd démov a,mé®x hémov h,mémov l,a ; HL-> Ùft-ÑscŽÓ²éoË h ;…f (On.Lef¯†¢†ull)‚Ánécnz I´rÑÈ; I´rÑr(On.Left)è;épop h ; HL->tŸOpRecécall PâOp ; PâOp(Col,On)è;élxi d,OpRigÂéÓd démov a,mé®x hémov h,mémov l,a ; HL-> ÍgÂ-ÑscŽÓ²éoË h ;…f (On.RigÂ…¸´null)‚Ánécnz InOrÑÈ; I´rÑr(On.RigÂ)è;éÉtè;---------------------------------------------------------------è; PâOp(Col,On): ÕspÛy‚Á coæof ç„f‚Á„pcoÑè; ÑscÍbeЮ HL->OpRec.€S“ʃ†ew ݱƒ¸±eÑd.è;€pɹrv -- PSW, C, DE, HLè;€Étuθ€-- B upӑД†excolumnè;---------------------------------------------------------------èOpCoß equ 16 ; c¦ºž½zˆof„p ÕspÛyèPâOp:épçh pswépçh dépçh hè;émov a,bécpi MaxCol-OpCoß+1 ;…f (Col+16<=MaxCol)‚Ánécnc S“ÊNewOp ;€ S“ÊNewOpè;écall PâStÍng ; PâStÍng(On.Name)écall StÍngLŽgth ;…f (LŽgth(On.Name)<8)‚Ánécpi 8écc PâTab ;€ PâTab(Col)écall PâBÛnk ; PâBÛnkè;élxi d,OpCoætéÓd d ; HL->OpRec.Coætémov a,mé®x hémov h,mémov l,a ; HL = Coætécall PâZZZZ9 ; PâZZZZ9(On.Coæt)émvi a,OpCoß ; CoØ:= Col+16éadd bémov b,aécpi MaxCol-OpCoß+1 ;…f (Ìom foÈž¢Ár)‚Ánécc PâTab ;€ PâTab(Col)è;épop hépop dépop pswéÉtè;---------------------------------------------------------------è; S“ÊNewOp(Col):‡“ʃ†ew ݱ„f„pcoÑ-cŽsç ÕspÛy.è;€pɹrv -- PSW, C, DE, HLè;---------------------------------------------------------------èS“ÊNewOp:épçh hélxi h,OpOverFÜwécall PâStÍngémvi b,9 ;†exby‘‚ colum°9épop héÉtè;===============================================================è; GŽeËØsubÌ⮃nЮcluÑЦ:è;---------------------------------------------------------------è; GŠMn(LŽ,Ad):ƒlÜcšˆLŽ=BC by‘¸of‡pacˆfÌm‚Á p¤lè;ƒnÐzeÌ…oâ.€RŠu΂ÁƒddÉ¿„f‚Á‡pacˆ® HL.è;€pɹrv -- PSW, BC, DEè;€Étuθ€-- HL->spaceè;---------------------------------------------------------------èGŠMn:épçh pswépçh dè;élhld NextP¤lépçh h ;‡avˆ->alÜcšeÐspaceéÓd b ; figuɆew NextP¤léxchgélhld P¤lEnÐ ; ..veÏç Ýmª„f p¤lécall CmpDH ; DE bbˆÙ¿‚ðHLéJRC GŠMn2éABORT MsgNoP¤lèGŠMn2:éxchgéshld NextP¤l ; upÓ‘ NextP¤l,épop d ; ÉcoveÈ->spaceépçh d ; ..žÐ»vˆªƒgnécall FillZeÌ ; cÙaÈtÁ†ew‡paceépop h ; HL->cÙaÉÐspaceépop dépop pswéÉtè; #ºaÊ SŠUpInpâ --------------------------------------------è; SŠUpInpâ:…µ•aÝzˆtÁ…npâ fiÙ foÈâiÝty I/O wªhè; GŠCÃr.€ReqåɸÑf®ª¬°of InFCB, InInÑx (InVaÏ).è;€pɹrv --ƒllè; N¢e: TŸ¯ƒ moÕf©ÐveϬ°of‚Á ÝbËry Ìâ®e.€Itè;xpec— HL‚ c¦“®‚ÁƒddÉ¿„f‚Á m»gˆ” bˆgivŽè;…°cŸˆtÁ…npâ fiÙ…¸´foæd.è;---------------------------------------------------------------èSŠUpInpâ:épçh pswépçh bépçh dépçh hè;è; PÉpaÉ‚Á…npâ fiÙ foÈÉaÕngè; ZeÌ‚Á…npâ FCBè;élxi d,InFCBélxi b,35écall FillZeÌè;è; if…npâ fiÙ³mˆomª‘d,ƒboÊè;élxi h,CpmFCB+1 ;‚Á fiÙ³mˆ¯„mª‘Ðifécall DeÝmªer ;…ºaʸwªÀžy ÑÝmªeréjnz SUI2éABORT MsgNoNameè;è; gŠƒ°®pâ dÍvecoÑ foÈtÁ FCBè;èSUI2:耀 dcx€À ! movƒ,m ; A := givŽ dÍvecoÑéoË a ; wŸ…omª‘d?éjnz SUI3éSERVICE BÔsDÍve ; gŠ.g. A=00, B=01é®r a ; makˆª A=01, B=02,tc.èSUI3:éºa InFCB ;xpÝcª dÍvecoÑ…°FCBè;è; movˆtÁ…npâ fiÙ³mˆžÐfiÙtypˆ”‚Á FCBè;é®x h ; HL-->fiÙ³mˆ(¼urce)élxi d,InFCB+1 ; DE-->FCB€(Ѻ®š¬n)élxi b,8+3 ; B = ÙngtÀof†amˆžÐtypeécall MoveH”D ; move-cÃËc‘Ï Ìâ®eè;è; opŽ‚Á…npâ FCBè;éSERVICE BÔsOpŽ,InFCBé®r a ;…f† fiÙx¯—,ƒboÊè; *** jnz SUI4è; *** ABORT MsgNoFiÙéjz ERROREXIT ; ->msgƒlÉady„°tÁ‡“ckè;è; InInÑx := FFhè;èSUI4:émvi a,0FFhéºa InInÑxè;épop hépop dépop bépop pswéÉtè; #®cluÑ‚extÝb.®c,MoveH”Dè; #®cluÑ‚extÝb.®c,DeÝmªerè; #ŽÐSŠUpInpâè; #®cluÑ âiÝo.®c,GŠCÃrè; #®cluÑ âiÝo.®c,PâCÃrè; #®cluуÍthÝb.®c,CmpDHè; #®cluÑ âiÝo.®c,SŠUpOâpâè; #®cluÑ‚extÝb.®c,CÁckDigªè; #®cluÑ‚extÝb.®c,CmpStrTextè; #®cluÑ‚extÝb.®c,CmpStÍngè; #®cluÑ‚extÝb.®c,CopyStÍngè; #®cluÑ‚extÝb.®c,UpperCŸeè; #®cluÑ‚extÝb.®c,WÅ‘Spaceè; #®cluÑ‚extÝb.®c,StÍngLŽgthè; #®cluÑ pâsubs.®c (alØof…t)è;===============================================================è; ݱ, gŠmn,„âpâ‡pacˆalÜcšeкaÊ®g ÁÉ.èPÌgEnÐequ $é× MaxSym+MaxP¤l+LŽgthL®e+1024è;³bÙ‚Á†exݱ…°MP/Mè; db 0 ; Ñf®ˆfulؽzˆof pÌgËm…°Áx fiÙéŽdè