Tàáëèöà 3. HEX : IMMEDIAT ' I - DUP CR 40 OR SWAP C! ; : [COMPILE] CD C, ' , ; IMMEDIAT [COMPILE] : (" HERE " ; IMMEDIAT (" : ) HERE ALLOT ; IMMEDIAT ) : ") DUP TYPE DROP [COMPILE] ) ; IMMEDIAT ") : .. SPACE SPACE SPACE SPACE ; ("ÏÅ×ÀÒÜ ×ÅÒÛÐÅÕ ÏÐÎÁÅËÎÂ") .. (" ÈÄÅÒ ÊÎÌÏÈËßÖÈß ÄÅÌÎÍÑÒÐÀÖÈÎÍÍÎÉ ÏÐÎÃÐÀÌÌÛ") : WHILE [COMPILE] IF ; IMMEDIAT WHILE : UNTIL [COMPILE] IF [COMPILE] ELSE [COMPILE] REPEAT ; IMMEDIAT UNTIL : DUMP CR BEGIN DUP DUP [ 78 C, CD C, F815 , (" òàê ìîæíî âñòàâèòü êóñîê ïðÿìî â êîäàõ àññåìáëåðà, ýòî ñîîòâåòñòâóåò MOV A,B CALL 0F815H Èëè â êîäàõ 78 CD 15 F8 ") ] DROP [ 79 C, CD C, F815 , ] DROP SPACE SPACE (" ÏÅ×ÀÒÜ ÄÂÓÕ ÏÐÎÁÅËΠ") DUP DUP E + SWAP 2 (" ÑÅÉ×ÀÑ Â ÑÒÅÊÅ ÊÎÍÅ×ÍÎÅ È ÍÀ×ÀËÜÍÎÅ ÇÍÀ×ÅÍÈß ÏÀÐÀÌÒÐÀ ÖÈÊËÀ ÑÎ Ñ×ÅÒ×ÈÊÎÌ, À ÍÀ ÂÅÐØÈÍÅ - ØÀà ÏÐÈÐÀØÅÍÈß ÏÀÐÀÌÅÒÐÀ ") +DO (" ÝÒÎ ÊÀ×ÀËÎ ÖÈÊËÀ ÑÎ Ñ×ÅÒ×ÈÊÎÌ ") I (" À ÝÒÎ ÏÀÐÀÌÅÒÐ ÖÈÊËÀ ") @ [ 79 Ñ, ÑD Ñ, F815 , 78 Ñ, ÑD Ñ, F815 , ] DROP SPACE REPEAT (" ýòà êîíåö öèêëà, ÅÑËÈ ÄÎÑÒÈÃÍÓÒÎ ÐÀÂÅÍÑÒÂÎ ÍÀ×ÀËÜÍÎÃÎ È ÊÎÍÅ×ÍÎÃÎ ÇÍÀ×ÅÍÈÈ ") SPACE DUP DUP F + SWAP 1 +DO I C@ DUP 20 < OVER 7F > OR IF DROP 5F (" ÏÅ×ÀÒÜ ÏÐÎ×ÅÐÊÀ (5F) ÂÌÅÑÒÎ ÑÈÌÂÎËÀ Ñ ÊÎÄÎÌ ÌÅÍÜØÅ 20H èëè ÁÎËÜØÅ 7FH ") THEN EXIT REPEAT CR 10 + OVER OVER > IF REPEAT DROP DROP ; ÑR .. (" ÒÀÊ ÐÀÁÎÒÀÅÒ DUMP ÐÀÑÏÅ×ÀÒÊÀ ÎÒ ÀÄÐÅÑÀ 1100 ÄÎ ÊÎÍÖÀ ÊÎÄÎÔÀÉËÀ, Ò. Å. ÄÎ HERE "") HERE 1100 DUMP CR .. (" ÊÎÌÏÈËßÖÈß ÇÀÌÅÄËÅÍÀ ÈÇ-ÇÀ ÌÍÎÆÅÑÒÂÀ ÊÎÌÌÅÍÒÀÐÈÅÂ, ÊÎÒÎÐÛÅ ÒÎÆÅ ÊÎÌÏÈËÈÐÓÞÒÑß, À ÇÀÒÅÌ ÓÍÈ×ÒÎÆÀÞÒÑß "") CR .. (" ÓÁÅÐÈÒÅ ÂÑÅ ÊÎÌÅÍÒÀÐÈÈ, ÎÃÐÀÍÈ×ÅÍÍÛÅ ÑÊÎÁÊÀÌÈ È ÏÐÎÃÐÀÌÌÀ ÑÒÀÍÅÒ ÏÐÎÑÒÎÉ È ÏÎÍßÒÍÎÉ "") CR : 1+ 03 Ñ, ; IMMEDIAT 1+ (" ÊÎÌÏÈËÈÐÓÅÒ INX BC ") : 2+ 0303 , ; IMMEDIAT 2+ (" ÒÀÊ ÊÀÊ ÏÀÐÀ BC ÝÒÎ ÂÅÐØÈÍÀ ÑÒÅÊÀ ") : 1- 08 Ñ, ; IMMEDIAT 1- (" ÊÎÌÏÈËÈÐÓÅÒ DCX BC ") : 2- 08008 , ; IMMEDIAT 2- : R0 1040 ; CR . . R0 . (" ÝÒÎ ÑÒÅÊ ÂÎÇÂÐÀÒ0Â, ÈÌÅÍÍÎ ÝÒÎ ÇÍÀ×ÅÍÈÅ ÇÀÏÈÑÛÂÀÅÒÑß Â SP â ÑËÎÂÀÕ COLD è QUIT "") : $0 R0 3E + ; ÑR CR . . $0 . (" .., À ÝÒÎ ÓÊÀÇÀÒÅËÜ ÀÐÈÔÌÅÒÈ×ÅÑÊÎÃÎ ÑÒÅÊÀ, ÇÀÏÈÑÛÂÀÅÒÑß Â ÏÀÐÓ HL ÓÑÒÀÍÀÂËÈÂÀÅÒÑß ÒÎËÜÊÎ ÑËÎÂÎÌ COLD "") : ÒI$ $0 2+ ; CR CR . . (" AÄÐÅÑ ÍÀ×ÀËÀ ÊÎÌÀÍÄÍÎÉ ÑÒÐÎÊÈ "") TI$ . ÑR : (KEY) R0 1+ ; ÑR .. (ÊÅÒ) @ . (" ÌÀØÈÍÍÎ ÇÀÂÈÑÈÌÛÉ ÀÄÐÅÑ ÏÎÄÏÐÎÃÐÀÌÌÛ ÂÂÎÄÀ = F803 "") CR : (ENIT) R0 2+ 2+ ; CR .. (ENIT] @ . (" ÌÀØÈÍÍÎ ÇÀÂÈÑÈÌÛÉ ÀÄÐÅÑ ÏÎÄÏÐÎÃÐÀÌÌ ÂÛÂÎÄÀ F809 "") CR : (LAGT) (ENIT) 2+ ; CR CR .. (" ÀÄÐÅÑ ÍÀ×ÀËÀ ÏÎÑËÅÄÍÅÃÎ ÑËÎÂÀ  ÑËÎÂÀÐÅ ÍÀÕÎÄÈÒÑß Â ß×ÅÉÊÅ "") (LAST) . : (H) (LAST) 2+ ; CR CR .. (" ÀÄÐÅÑ ÏÅÐÂÎÉ ÑÂÎÁÎÄÍÎÉ ß×ÅÉÊÈ, Ò. I. KOHÖA ÊÎÄÎÔÀÉËÀ ÍÀÕÎÄÈÒÑß Â ß×ÅÉÊÅ "") (Í) . CR .. (" (H) @ ÀÍÀËÎÃÈ×ÍÎ ÍERE "") : (ÂÀSE) (H) 2+ ; CR CR .. (" ÁÀÉÒ Ñ ÀÄÐÅÑÎÌ (ÂÀSE) ÕÐÀÍÈÒ ÎCHOBAÍÈÅ ÑÈÑÒÅÌÛ Ñ×ÈËÅÍÈß "") .. (" ÏÐÈÌÅÐ : 55 2 (BASE) C! . ") 55 2 {BASE) Ñ! . HEX (" -ØÅÑÒÍÀÄÖÀÒÈÐÈ×ÍÀß ÑÈÑÒÅÌÀ, A DECIMAL ÄÅÑßÒÈ×ÍÀß ") : BINARY 2 (BASE) C! ; (" BIMARY ÓÑÒÀÍÎÂÈÒ ÄÂÎÈ×ÍÓÞ ÑÈÑÒÅÌÓ Ñ×ÈÑËÅÍÈÉ ") : OCTAL 2 (BASE) C! ; (" OCTAL ÓÑÒÀÍÎÂÈÒ ÂÎÑÜÌÈÐÈ×ÍÓÞ ÑÈÑÒÅÌÓ Ñ×ÈÑËÅÍÈß ") : (?STAT) (ÂÀSE) 1+ ; ÑR CR .. ("  ÁÀÉTE Ñ ÀÄÐÅÑÎÌ (?STAT) ÏÐÈÇÍÀÊ ÐÅÆÈÌÀ 00 - ÇÍÀ×ÈÒ ÈÍÒÅÐÏÐÅÒÀÖÈß FF ÇÍÀ×ÈÒ ÊÎÌÏÈËßÖÈß ""} : (IN) (BASE) 2+ ; (*  ß×ÅÈÊÅ (IN) ÀÄÐÅÑ ÎÁÐÀÁÀÒÛÂÀÅÌÎÃÎ Â ÄÀÍÍÛÉ ÌÎÌÅÍÒ ÑÈÌÂÎËÀ ÏÐÎÃÐÀÌÌÛ ") : (OUT) (IN) 2+ ; ("  ß×ÅÉÊÅ (OUT) ÀÄÐÅÑ,  ÊÎÒÎÐÛÉ ÁÓÄÅÒ ÇÀÏÈÑÀÍ ÑËÅÄÓÞÙÈÉ ÂÂÅÄÅÍÍÛÉ Ñ ÓÑÒÐÎÉÑÒÂÀ ÂÂÎÄÀ ÑÈÌÂÎË Ò. Å Ñ ÊËÀÂÈÀÒÓÐÛ, ÅÑËÈ Â (KEY) ÀÄÐÅÑ F803 ") : EDIT (" ñëîâî : ÊÎÌÏÈËÈÐÓÅÒ ÇÀÃÎËÎÂÎÊ ÑËÎÂÀ EDIT ") 0 (" ÊËÀÄÅÌ Â ÑÒÅÊ 0 ") EXECUT (" ÈÑÏÎËÍÈÒÜ ÏÐÎÃÐÀÌÌÓ ÏÎ ÀÄÐÅÑÓ, ËÅÆÀÙÅÌÓ Â ÑÒÅÊÅ ") ; (" ; ÊÎÌÏÈËÈÐÓÅÒ ÊÎÌÀÍÄÓ RET È ÓÑÒÀÍÀÂËÈÂÀÅÒ ÐÅÆÈÌ ÈHTÅPÏPETAÖÈÈ ") : ?TERM DUP [ ÑD Ñ, F812 , 4F47 , ] ; (" ÒÀÊ ÌÎÆÍÎ ÎÁÐÀÒÈÒÑß ê ÌÎÍÈÒÎÐÓ ïî ÀÄÐÅÑÓ F812 ") : ?ÊÅY 0 [ CD Ñ, F81B , 4F Ñ, ] ; (" ., À ÒÀÊ ÏÎ ÀÄÐÅÑÓ F81B ") : CMOVE 1 1 +DO OVER C@ OVER C! 1+ SWAP 1+ SWAP REPEAT DROP DROP ; (" CMOVE È CMOVE> ÝTO ÑÒÀÍÄÀÐÒÍÛÅ ÑËÎÂÀ ßÇÛÊÀ ÔÎPT ") : CMOVE> ROT OVER + -ROT DUP ROT + SWAP 1 1 +DO 1- SWAP 1- SWAP OVER C@ OVER C! REPEAT DROP DROP ; : PRINT 1 1 +DO DUP C@ ENIT 1+ REPEAT DROP ; CR ÑR (IN) @ DECIMAL 1048 PRIHT (" ÐÀÑÏÅ×ÀÒÀÒÜ 1048 ÂÀÉÒ ÈÇ ÂÕÎÄÍÎÃÎ ÂÓÔÅÐÀ ") CREAT BUFF HEX 40 ALLOT (" ÒÀÊ ÑÎÇÄÀÞÑß ÌÀÑÑÈÂÛ ÐÀÇÌÅÐÎÌ 64 ÁÀÉÒÀ ") : INPUT CR . " # ÆÄÓ? " (" ÑËÎÂÎ INPUT ÂÂÎÄÈÒ ×ÈÑËÎ ÈËÈ ÑËÎÂÎ ÁÅÇ ÂÛÕÎÄÀ  CUIT ") (" ÈÑÏÎËÜÇÓß ÑÂÎÉ ÁÓÔÅÐ ÐÀÇÌÅÐÎÌ Â 64 ÁÀÉÒÀ ") BUFF QUERY (IN) @ [ C5 Ñ, ] DROP BUFF INTERPRET DUP [ C1 Ñ, ] (IN) ! ; (" ÄÎÏÓÑÒÈÌ Ó ÍÀÑ ÎÒÄÅËÜÍÛÉ ÒÅÐÌÈÍÀË, Ñ ÊÎÒÎÐÛÌ ÅÑÒÜ ÑÂßÇÜ ×ÅÐÅÇ 580ÂÂ55 ÊÀÍÀË À  PEÆÈÌÅ 2 ") : PPAINI -1 A003 C! 0D A00Ç C! 9 À00Ç C! AOOO C@ DROP ; PPAINI (" ÈÍÈÖÈÀËÈÇÀÖÈß ÏÎÐÒÀ ") : INT7 BEGIN A002 C@ 8 AND IF ELSE REPEAT ; (" ÎÆÈÄÀÍÈÅ ÁÈÒÀ ÏÐÅÐÛÂÀÍÈß ") TRMO INT7 BEGIN A002 C@ 80 AND IF A000 C! ELSE REPEAT ; (" ÏÎÄÏÐÎÃÐÀÌÌÀ ÂÛÂÎÄÀ ÁÀÉÒÀ  ÊÀÍÀË À ") : TRMI INT7 BEGIN A002 C@ 20 AND IF AOOO C@ 7F AND ELSE REPEAT ; (" ÏÎÄÏÐÎÃÐÀÌÌÀ ÂÂÎÄÀ ÁÀÉÒÀ èç ÊÀÍÀËÀ À ") (" ÑÅÉ×ÀÑ ÄÎÑÒÀÒÎ×ÍÎ ÇÀÏÈÑÀÒÜ ÀÄÐÅÑÀ ÏÎÄÏÐÎÃÐÀÌÌ TRMI  (ÊÅY), A TRMO  (ENIT) ÍÀÏÐÈÌÅÐ, ÒÀÊ ' ÒRMI (KEY) | ' TRMO (ENIT) | È ÂÀØÀ ÌÀØÈÍÀ ÁÓÄÅÒ ÐÀÁÎÒÀÒÜ ÁÅÇ ÌÎÍÈÒÎÐÀ ÄÈÑÏËÅß È ÊËÀÂÈÀÒÓÐÛ ") : ÊÎNST1 12 ; ("ÒÀÊ ÎÎÇÄÀÞÒÑß ÊÎÍÑÒÀÍÒÛ ") CREAT VAR1 13 , (" À ÒÀÊ - ÏÅÐÅÌÅÍÍÛÅ ") CREAT VAR$ " ABRACADABRA" (" À ÒÀÊ ÌACCÈÂÛ ÇÀÏÎËÍÅÍÛÅ ËÈÒÅÐÀÌÈ ") ÑREAT ÀRR1 1 , 2 , 3 , (" À TÀÊ ÌÀÑÑÈ ÈÇ ÒÐÅÇÕ ÑËΠ") CREAT ARR2 4 Ñ, 5 C, 6 Ñ, (" ÒÀÊ ÌÀÑÑÈ ÈÇ ÒÐÅÕ ÁÀÉÒ ") (" ÈÌß ÌÀÑÑÈÂÀ ÈËÈ ÏÅÐÅÌÅÍÍÎÉ ÂÎÇÂÐÀÙÀÅÒ â Àðèôìåòè÷åñêîì ÑÒÅÊÅ ÅÃÎ AÄPEC ") : := ' 2+ 2+ ! ; (" ýòî ñëîâî ìîæåò èçìåíèòü ÇÍÀ×ÅÍÈÅ ÊÎÍÑÒÀÍÒÛ Â ÐÅÆÈÌÅ ÈÍÒÅÐÏÐÅÒÀÖÈÈ ïðàìåð ") 18 := KONST1 : TO DUP [C1 C, 3 C, 3 C, 3 C, C5 C, B C, B C, ] @ [ 3 Ñ, 3 Ñ, 3 Ñ, 3 Ñ ] ! ; (" À ÝÒÎ ÑËÎÂÎ ÌÎÆÅÒ ÈÇÌÅÍÈÒÜ ÇÍÀ×ÅÍÈÅ ÊÎÍÑÒÀÍÒÛ, ÅÑËÈ ÅÃÎ ÑÊÎÌÏÈËÈÐÎÂÀÒÜ ÂÍÓÒÐÈ ÄÐÓÃÎÃÎ ÑËÎÂÀ, ÍÀÏÐÈÌÅÐ: ") : PRIMER1 19 TO KONST1 ; (" ÑËÎÂÎ ÐRIMER1 ÇÀÏÈØÅÒ 19  ÊÎNST1 ") : PICK DUP [ C1E5 , ] OVER + SWAP + 2+ @ ; (" PICK ÑÍÈÌÀÅÒ ÈÇ ÑÒÅÊÀ ÍÎÌÅÐ ÝËÅÌÅÍÒÀ ÑÒÅÊÀ È ÊËÀÄÅÒ Â ÑÒÅÊ ÊÎÏÈÞ ÝÒÎÃÎ ÝËÅÌÅÍÒÀ ") (" ÍÈÆÅ ÎÏÈÑÀÍÛ ÍÅÊÎÒÎÐÛÅ ÊÎÌÀÍÄÛ ÀÑÑÅÌÁËÐÀ, ÊÎÒÎÐÛÅ ÌÎÆÍÎ ÏÐÈÌÅÍßÒÜ ÂÍÓÒÐÈ ÎÏÈÑÀÍÈÉ ÄÐÓÃÈÕ ÑËΠÂMÅTO ÊÎÄÎÂ, ÝÒÎÒ ÑÏÈÑÎÊ ÌÎÆÍÎ ÓÂÅËÈ×ÈÒÜ ÎÍ ÇÀÌÅÍÈÒ ÔÎPT-ÀÑÑÅÌÁËÅÐ ÊÎÃÄÀ ÍÅÎÁÕÎÄÈÌÎ ÍÀÏÈÑÀÒÜ ÏÐÎÃÐÀÌÌÓ ÌÀÊÑÈÌÀËÜÍÎÃÎ ÁÛÑÒÐÎÄÅÉÑÒÂÈß ") : OUT 79 Ñ, D3 Ñ, NUMBER Ñ, ; IMMEDIAT OUT (" ïîëåçíîå ñëîâî åñëè íåîáõîäèìî âûâåñòè ÁÀÉÒ â ÏÎÐÒ ÍÀÕÎÄßÙÈÉÑß Â ÏÐÎÑÒÐÀÍÑÒÂÅ ÂÂÎÄÀ/ÂÛÂÎÄÀ ") : IN DB C NUMBER ñ, 4F ñ, ; IMMEDIAT IN (" IN è OUT ìîæíî ïðèåíÿòü òîëüêî ÂÍÓÒÐÈ ÄÐÓÃÈÕ ñëîâ êàê è âñå ÑËÎÂÀ Ñ ÏÐÈÇÍÀÊÎÈ IMMEDIAT ") (" ÏÐÈÌÅÐ: ") : OUIA0 OUT À0 ; (" ÂÛÂÎÄ Â ÏÎÐÒ À0 ÑÒÅÊ ÁÅÇ ÈÇÌÅÍÅÍÈÉ ") : INÀ0 IN À0 ; (" ÂÂÎÄ ÈÇ ÏÎÐÒÀ À0  ÌËÀÄØÈÉ ÁÀÉÒ ×ÈÑËÀ, ËÅÆÀÙÅÃÎ Â APÈÔÌÅÒÈ×ÅÑÊÎÌ ÑÒÅÊÅ ") : A,# 3E Ñ , NUMBER Ñ, ; (" A,#11 ÊÎÌÏÈËÈÐÓÅÒ MVI À,11 ") IMMEDIAT A,# : À,0 AF C , ; (" ÊÎÌÏÈËÈÐÓÅÒ ÕRA A Î×ÈÑÒÊÀ ÀÊÊÓÌÓËßÒÎÐÀ ") IMMEDIAT A,0 : A,C 79 C , ; (" ÊÎÌÏÈËÈÐÓÅÒ MOV A,C ") IMMEDIAT À,Ñ ; Ñ,À 4F C , ; (" ÊÎÌÏÈËÈÐÓÅÒ MOV Ñ,À ") IMMEDIAT Ñ,À : A,B 78 C , ; IMMEDIAT A,B WORDS HERE LAST) & DUMP CR .. (" A,B ÑÎÎÒÂÅÒÑÒÂÓÅÒ ÒÅÊÑÒÓ ÍÀ ÀÑÑÅÌÁËÅÐÅ ") CR CR .. (" DW @AB "") CR .. (" DW 'À,Â' ,83H+40H; 40H = IMMEDIAT "") CR .. (" CALL 0882H, DUP "") ÑR .. (" LXI B,78H ; Çàìåíà êîäà â âåðøèíå ñòåêà íà 78H "") ÑR .. (" CALL ODO9H ; C, "") CR .. (" RET "") CR .. (" @AB: "") CR .. (" è êîìïèëèðóåò ÊÎÌÀÍÄÓ MOV À, èëè 78H "") QUIT