* * нед -- спед ии * * а TEXT EDITOR LACKING THE TOTAL LAMENESS OF спед. * дESIGNED FOR USE WITH мUSE (OR бLAHTUNE IF YOU LIKE). * * тHIS VERSION IS FOR USE WITH еL цHEAPO аSSEMBLER. * * слй 12/27/98 * * 1/00 уSE сUPERрам, EDIT MULTIPLE FILES, ETC. * * дск '@0:NED' ═рел ═пут 'DISKIO.EXT.S' ластлен═еьтЮ;сHOULD BE IN DISKIO.EXT.S цхроут═=═$ффд2 гетин═=═$ффе4 плот═=═$ффф0 стоп═=═$ффе1 бордер═еьт бацкгнд═еьт теьтцолор еьт хипаге═еьтЮ;хIGHEST POINT FOR TEXT. ассерр═еьт асслине═еьт басиц═еьт ассембле═еьт монитор═еьт цодефлаг═еьт *цлип еьт ;нOW цлип IS AT $е000 ацц═=═$69 блнсв═=═$цц блнцт═=═$цд блнон═=═$цф поинт═=═$фд темп═=═$фц маьбуф═=═240Ю;мAXIMUM NUMBER OF CHARS IN BUFFER цлипбуф═=═$008000 цлипсизе═да═$фффф теьт═ент ═дла═$040000Ю;сTART OF TEXT буфенд═ент ═дла═$040001Ю;еND OF BUFFER теьтенд═ент ═дла═$040001Ю;END OF алл TEXT цурбуф═дфб 00 цурбуфлине ═да═1 ═да═1 ═да═1 ═да═1 ═да═1 ═да═1 ═да═1 ═да═1 цурбуфпос дс═8 цурбуфцол дс═8 цурадр═дла═$6000Ю;аDDRESS OF CURRENT LINE ров1═дла═$6000Ю;аDDRESS OF LINE ON ROW 1 цурлине═дв═0Ю;CURRENT TEXT ROW цурпос═дфб 0Ю;CURRENT POSITION WITHIN THE ROW яуоте═дфб═00Ю;вITHIN QUOTES едитмоде═дфб═$80Ю;еDITING MODE едитор═ент нединит═ент ═лдь цурбуф ═инь ═йср гобуф2 * лда теьт * ста цурадр * ста ров1 * лда теьт+1 * ста цурадр+1 * ста ров1+1 * лда теьт+2 * ста цурадр+2 * ста ров1+2 * лда #00 ;еND OF LINE * йср сетенд * йср децпоинт * лда #13 * ста [поинт] ═лда═#$фф ═ста═темпровЮ;фOR CLIPPING TEXT * лдь #00 * сть цурлине * сть цурлине+1 * сть цурпос * лды #00 * йср плопьы хинед ═лда═#14Ю;LOWER CASE ═йср═цхроут ═лда═#1 ═ста═$цфЮ;лAST BLINK нед═лда бордер ═ста═$д020 ═лда бацкгнд ═ста═$д021 ═лда теьтцолор ═ста═цолор ═йср редрав ═йср лине2буф недит═йср═статбар ═лда теьтцолор ═ста═цолор ═йср═гетцхар ═бне═:цонтЮ;р/с PRESSED? ═йср═сеттаб ═ймп═недит :цонт═йср═исцтрлЮ;цтрл CHARS ═бне═:ц1 ═йср═проццтрл ═цлц ═йср═буф2теьт ═ймп═нед :ц1═йср исфунцЮ;фUNCTION KEYS ═бне═:ц2 ═йср═процфунц ═ймп═нед :ц2═йср═иседитЮ;аN EDITING COMMAND? ═бне═:нормал ═йср процедит ═бцс═недит ═ймп═:невймпЮ;рEDRAW SCREEN :нормал═цмп═#29Ю;CRSR RT ═бея :рт ═цмп═#157 ═бея═:лф ═цмп═#145 ═бея═:уп ═цмп═#17 ═бне═:цонт1 ═ймп═:дн :цонт1═цмп═#141 ═бне═:цонт2 ═ймп═:схцр :цонт2═цмп═#13 ═бне═:цхар ═ймп═:цр :цхар═ста═модбуф ═бит═едитмоде ═бпл═:ноинс ═йср═инсерт ═инц═цолумн ═бне═:адж :ноинс═лды═цурпос ═ста═буффер,ы ═йср═цхароут :адж═инц═цурпос ═лда═цурпос ═цмп═#маьбуфЮ;нO MORE THAN маьбуф CHARS ═бцс═:офлов ═лда═цолумн ═цмп═#40Ю;пAST COLUMN 39, SO REDRAW ═бцц═:йнедитЮ;SCREEN ═лдь═#00 :невсцр═сть═цолумн :невймп═йср═редрав ═йср═дравбуфф ═ймп═недит :офлов═дец═цурпосЮ;оVERFLOWED PAST маьбуф ═дец═цолумн :йнедит═ймп═недит :рт═инц═цолумн ═бне═:адж :лф═лды═цурпос ═бея═:йнедит ═дец═цурпос ═дец═цолумн ═бпл═:йнедит ═лдь═#39 ═бне═:невсцр :уп═цлц ═йср═буф2теьт ═йср═релине ═йср═прежлинеЮ;гO TO PREVIOUS LINE ═бцс═:ймпн2Ю;аT BEGINNING OF FILE ═йср═п2цурлнЮ;сET CURADR ═йср═деццур ═дец═ров ═бпл═:ймпн2 ═инц═ров ═йср═п2ров1Ю;сET ROW1 ═йср═сцреенднЮ;мOVE SCREEN DOWN ═ймп═:релинеЮ;пRINT ROW1 / CURRENT LINE :дн═цлц ═бцц═:цр2 :схцр═лдь═#$ффЮ;сHIFTED-цр -- INSERT NEW LINE :схлооп═лда═буффер-1,ь ═ста═буффер,ь ═деь ═бне═:схлооп ═сть═цолумн ═сть═цурпос ═лда═#13 ═ста═буффер ═ста═модбуф ═цлц ═йср═буф2теьт ═ймп═нед :цр═лда═#00 ═ста═цолумн ═ста═цурпос ═сецЮ;иNSERT AN EXTRA цр :цр2═пхп ═йср═буф2теьт ═йср═релинеЮ;фOR CRSR DN ═йср═неьтсетЮ;гO TO NEXT LINE ═бцс═:црймпЮ;аT еоф ═йср═п2цурлнЮ;сET CURADR ═йср═инццур ═инц═ров ═лда═ров ═цмп═#24 ═бцц═:црймп ═плп ═дец═ров ═йср═сетров1 ═йср═неьтлине ═йср═п2ров1Ю;уPDATE ROW1 ═йср═сцреенупЮ;мUCH FASTER :релине═йср═релине :ймпн2═йср═лине2буфЮ;дON'T REDRAW FOR CRSR DN ═ймп═недит :црймп═плп ═бцц═:ймпн2 ═ймп═нед инццур═инц═цурлине ═бне═:ц1 ═инц═цурлине+1 :ц1═ртс деццур═лда═цурлине ═сец ═сбц═#1 ═ста═цурлине ═лда═цурлине+1 ═сбц═#00 ═ста═цурлине+1 ═ора═цурлинеЮ;сET FLAGS ═ртс * * сеттаб * * COLUMN 0-8 LABEL * 9-12 OPCODE * 13-21 ARG * 22- COMMENT * сеттаб ═лды═цурпос ═лда═$028д ═анд═#1 ═бне═:бацк ═цпы═#9 ═бцц═:ц9 ═цпы═#13 ═бцц═:ц13 ═цпы═#22 ═бцс═:ртс :ц22═лдь═#22 ═дфб═$2ц :ц13═лдь═#13 ═дфб═$2ц :ц9═лдь═#9 ═дфб═$2ц :ц0═лдь═#00 ═сть═цурпос ═сть═цолумн :ртс═ртс :бацк═цпы═#10 ═бцц═:ц0 ═цпы═#14 ═бцц═:ц9 ═цпы═#23 ═бцц═:ц13 ═бцс═:ц22 ═до═0 ═сть═темп ═лда═#160 :ста═ста═буффер,ы ═лда═#32 ═йср═цхароут ═ины ═цпы═темп ═бцц═:ста ═сты═цурпос :ртс═ртс ═фин * * цHECK FOR EDITING COMMAND * иседит ═цмп═#20Ю;DEL ═бея═:ртс ═цмп═#148Ю;INS ═бея═:ртс ═цмп═#19Ю;HOME ═бея═:ртс ═цмп═#147Ю;CLEAR :ртс═ртс хомелине═да═01 хомепос═дфб 00 хомецол═дфб═00 процедит ═ста═модбуф ═цмп═#147 ═бея═:цлр ═цмп═#20 ═бея═:дел ═цмп═#148 ═бея═:инс ═лда═цурлине ═адц═#1Ю;ц CLEAR ═ста═хомелине ═лда═цурлине+1 ═адц═#00 ═ста═хомелине+1 ═лда═цурпос ═ста═хомепос ═лда═цолумн ═ста═хомецол ═сец ═ртс :инс ═лда═$028д ═анд═#2 ═бне═:иц ═ймп═инс2 :иц═лда═#$80 ═еор═едитмоде ═ста═едитмоде ═сец ═ртс :дел═ймп═делете :гохоме ═цлц ═йср═буф2теьт ═лда═хомелине ═ста═ацц ═лда═хомелине+1 ═ста═ацц+1 ═йср сажепос ═йср═готолине ═йср═лине2буф ═лда═хомепос ═ста═цурпос ═лда═хомецол ═ста═цолумн ═цлц ═ртс :цлр═лда═$028д ═анд═#2 ═бне═:гохоме ═цлц ═йср═буф2теьт ═йср═сажепос ═йср═реаллы ═цмп═#'Y' ═бне═:нопе ═пла ═пла ═лда═теьт ═цлц ═адц═#1 ═ста═буфенд ═лда═теьт+1 ═адц═#00 ═ста═буфенд+1 ═лда═теьт+2 ═адц═#00 ═ста═буфенд+2 ═лда═теьт ═цлц ═адц═#2 ═ста═блдест ═лда═теьт+1 ═адц═#00 ═ста═блдест+1 ═лда═теьт+2 ═адц═#00 ═ста═блдест+2 ═йср теьт2п ═йср═п2цурлн ═йср═неьтбуф ═йср═сетбл2 ═йср═п2теьт ═йср═сетможе ═йср теьт2п ═лда #$0д ═ста [поинт] ═лды #1 ═лда #00 ═ста [поинт],ы ═ймп нединит :нопе═йср═гетпос ═сец ═ртс инсцхар═дфб═32Ю;иNSERT CHARACTER инс2═лда═#32 инсерт═ста═инсцхар ═лды═#маьбуфЮ;INSERT :лооп═лда═буффер-1,ы ═ста═буффер,ы ═деы ═цпы═цурпос ═бне═:лооп ═лда═инсцхар ═ста═буффер,ы ═бне═дравбуфф делете ═лды═цурпос ═бея═дравбуфф ═деы ═сты═цурпос :лооп2═лда═буффер+1,ы ═ста═буффер,ы ═ины ═цпы═#маьбуф-1 ═бцц═:лооп2 ═лда═#32 ═ста═буффер+1,ы ═дец═цолумн ═бпл═дравбуфф ═лда═#39Ю;бACK UP A SCREEN ═ста═цолумн ═цлц ═ртс * дRAW FROM BUFFER дравбуфф═йср═сажепос ═лдь═ров ═лды═#00 ═йср═плопьыЮ;сET SCREEN ROW/COLUMN ═лдь═сажецолЮ;фIND POSITION IN BUFFER ═лды═цурпос :лооп═деы ═деь ═бпл═:лооп ═ины прбуффЮ;пRINT FROM BUFFER ═лдь═#39 :лооп═лда═буффер,ы ═йср═цхароут ═ины ═деь ═бне═:лооп ═лдь═буффер,ы ═ины :лооп2═лда═буффер,ыЮ;пRINT SLASH? ═цмп═#32 ═бне═:сласх ═ины ═цпы═#маьбуф ═бцц═:лооп2 ═тьаЮ;нO EXTRA CHARS ═дфб═$2ц :сласх═лда═#'/' ═йср═цхароутЮ;пRINT LAST CHAR ═йср═гетпос ═сец ═ртс * хоме (аLSO USED BY LOAD) хоме═цлц ═йср═буф2теьт хоме2═лда═#00 ═ста═ров ═ста═цолумн ═ста═цурпос ═ста═цурлине ═ста═цурлине+1 хоме3═лда теьт ═ста═поинт ═лда═теьт+1 ═ста═поинт+1 ═лда═теьт+2 ═ста═поинт+2 ═йср═п2цурлн ═йср═п2ров1 ═цлцЮ;рEDRAW ═ртс * пROMPT FOR Y/N RESPONSE реаллы═лда #13 ═йср═сетбар ═йср═плопстр ═тьт═'>>> REALLY?',00 ═йср═спаце ═лдь═#24 ═лды═#11 реаллы2═сть═ров ═сты═цолумн ═ймп═гетцхар * * цHECK FOR цтрл-CHAR * исцтрл═пха ═лда═$028д ═анд═#4 ═таь ═пла ═цпь═#4 ═ртс еьит═пла ═пла еьит2═йср═сажеаллЮ;сEE-YA! ═лда═#147 ═йср═цхроут ═ймп═монитор проццтрл ═ьба ═лда═$цб ═лдь═#8 :лооп═цмп═:нумтаб,ь ═бея═:иснум ═деь ═бне═:лооп ═таь ═ьба ═цпь═#48Ю;CTRL-\ ═бея═:дасх ═цпь═#54Ю;CTRL-^ ═бея═:стар ═цпь═#53Ю;CTRL-= ═бея═:еяу ═цпь═#57Ю;CTRL-_ ═бея═:басиц ═цмп═#7Ю;G ═бея═:гото ═цмп═#3Ю;C ═бея═:цлип ═цмп═#24Ю;X ═бея═:цлип ═цмп═#16 ═бея═:пасте ═цмп═#4Ю;CTRL-D ═бея═:дел ═цмп═#2Ю;CTRL-B ═бея═:беглн ═цмп═#14Ю;CTRL-N ═бея═:ендлн ═цмп═#10Ю;CTRL-J ═бея═:лф ═цмп═#11Ю;CTRL-K ═бея═:рт ═цмп═#13Ю;CTRL-M ═бея═:дн ═цмп═#9Ю;CTRL-I ═бея═:уп ═цмп═#26Ю;CTRL-Z ═бея═:формат ═цмп═#1Ю;CTRL-A ═бея═:зап ═цмп═#15Ю;CTRL-O ═бея═:оопс ═цмп═#12Ю;CTRL-L ═бея═:лаб ═цмп═#6Ю;CTRL-F ═бея :финд ═цмп #18Ю;CTRL-R ═бея :финдоп :ртс═ртс :еяу═лда═#'=' ═дфб═$2ц :стар═лда═#'*' ═дфб═$2ц :дасх═лда═#'-' ═ймп═буфцом :басиц═лда═$028д ═анд═#1Ю;SHIFT-CTRL ═бея═:ртс ═пла ═пла ═йср═сажеалл ═ймп═басиц :иснум═ймп═гобуф :формат═ймп═формат :цлип═ймп═цлиптьт :пасте═ймп═пасте :гото═ймп═гото :уп═ймп═гоуп :дн═ймп═годн :лф═ймп═голф :рт═ймп═гортЮ;кLAATU :дел═ймп═делине :беглн═ймп═беглн :ендлн═ймп ендлн :финдоп═ймп финдоп :лаб═лда═$028д ═анд═#1 ═бея═:фл2 ═ймп═нлаб :фл2═ймп═финдлаб :финд═лда═$цбЮ;цтрл-F AND цтрл-_ THE SAME ═цмп═#57 ═бея═:басиц ═лда═$028д ═анд═#$01 ═бея═:ф2 ═ймп═нфинд :ф2═ймп═финд :оопс═йср═лине2буф ═ймп═дравбуфф :зап═ста═модбуф ═лдь═цурпос ═ймп═филлбуф :нумтаб═дфб═35,56,59,8,11,16,19,24,27 беглн═лда═$028дЮ;бEGINNING OF LINE ═анд═#1 ═бея═:бег2 ═ймп═хомеЮ;фIRST LINE :бег2═ста═цурпос ═ста═цолумн :ртс═ртс ендлн═цлц ═йср═буф2теьт ═лда═$028дЮ;мOVE TO END OF LINE ═анд═#1 ═бея═:енд2 ═лда═#$фф ═ста═ацц ═ста═ацц+1 ═ймп═готолине :енд2═лды═#маьбуф :лооп3═лда═буффер-1,ы ═цмп═#32 ═бне═:доне3 ═деы ═бне═:лооп3 :доне3═сты═цурпос ═тыа ═сец :лооп3б═сбц═#40 ═бцс═:лооп3б ═адц═#40 ═ста═цолумн ═ртс горт═лда═цурпос ═цлц ═адц═#40 ═цмп═#маьбуф ═бцц═голфста ═ртс голф═лда═цурпос ═сец ═сбц═#40 ═бцц═голфртс голфста═ста═цурпос голфртс═ртс годн═цлц ═йср═буф2теьт ═йср═сетцурлн ═лдь═#24 ═сть═темп :л2а═йср═неьтлине ═бцс═:атенд ═йср═п2цурлн ═дец═темп ═бне═:л2а :атенд═лда═#24Ю;тHIS LETS US MOVE TO THE BOTTOM ═сец ═сбц═темп ═таь ═бея═голфртс ═цлцЮ;IF LESS THAN 24 LINES LEFT. ═адц═цурлине ═ста═цурлине ═бцц═:ц2а ═инц═цурлине+1 :ц2а═йср═сетров1 ═цпь═#24 ═бея═:ц2б ═тьаЮ;оNLY A PARTIAL MOVE ═цлц ═адц═ровЮ;дID WE MOVE OFF THE SCREEN? ═ста═ров ═цмп═#23 ═бцц═голфртсЮ;иF NOT, THEN PUNT ═сбц═#23 ═таь ═лда═#23 ═ста═ров :ц2б═сть═темп :л2б═йср═неьтлинеЮ;оTHERWISE, UPDATE ROW1 ═дец═темп ═бне═:л2б ═ймп═п2ров1 гоуп═цлц ═йср═буф2теьт ═лда═цурлинеЮ;аLREADY ON FIRST SCREEN? ═сец ═сбц═#24 ═таь ═лда═цурлине+1 ═сбц═#00 ═бцц═:зеро ═бне═:ц1аЮ;иF NEAR FIRST SCREEN, NEED TO ═цпь═#24Ю;UPDATE ров ═бцс═:ц1а ═сть═ров :ц1а═ста═цурлине+1 ═сть═цурлине ═лда═#24 ═ста═темп ═йср═сетров1 :л1а═йср═преж2 ═дец═темп ═бне═:л1а ═йср═п2ров1 ═лда═#24 ═ста═темп ═йср═сетцурлн :л1б═йср═преж2 ═дец═темп ═бне═:л1б ═ймп═п2цурлн :зеро═лдь═#00Ю;мOVE TO TOP OF SCREEN ═сть═ров ═сть═цурлине ═сть═цурлине+1 ═ймп═хоме3 делине═цлц ═йср═буф2теьт ═лда═поинт ═ста═блдест ═лда═поинт+1 ═ста═блдест+1 ═лда═поинт+2 ═ста═блдест+2 ═лда═$028д ═анд═#1 ═бне═:мулти ═йср═сетблоцк ═ймп═сетможе :мулти═йср═сажепос ═лда═#13Ю;цOLOR ═йср═сетбар ═йср═плопстр ═тьт═'>>> # LINES TO DELETE:',00 ═йср═спаце ═лдь═#24 ═лды #22 ═цлц ═йср═плот ═лдь═#5 ═йср═инпут ═бея═:ртс ═лда═#<стрбуф ═лдь═#>стрбуф ═лды═#10 ═йср═асцтонум ═бцс═:ртс ═лда═ацц ═ора═ацц+1 ═бея═:ртс :лооп═йср═неьтлине ═дец═ацц ═бне═:лооп ═дец═ацц+1 ═бпл═:лооп :доне═йср═сетбл2 ═йср═сетможе :ртс═ймп═гетпос буфцом═пхаЮ;сET COMMENT ═лда═#'*' ═ста═буффер ═ста═модбуф ═лда═#32 ═лдь═#маьбуф :л2═ста═буффер,ь ═деь ═цпь═#31 ═бне═:л2 ═пла :лооп═ста═буффер,ь ═деь ═бне═:лооп ═ймп═дравбуфф формат═лда═$028д ═анд═#1Ю;SHIFT-CTRL ═бне═:ц1 ═ртс :ц1═йср═сажеаллЮ;рE-FORMAT ALL TEXT ═йср═хоме3 :лооп═йср═п2цурлн ═йср═лине2буф ═инц═модбуф ═инц═$д020 ═цлц ═йср═буф2теьт ═йср═неьтсет ═бцц═:лооп ═ймп═хоме2 * * бUFFER ROUTINES * * гO TO бUFFER .ь гобуф ═пхь ═йср сажебуфстуф ═цлц ═йср буф2теьт ═пль гобуф2═лда #$04 ═ста═теьт+2 ═стз═теьт+1 ═стз═теьт ═йср═теьт2п ═деь ═сть цурбуф ═бея═:доне ═сть═темп :лооп═йср═п2цурлн ═йср═неьтбуф ═дец═темп ═бне :лооп :доне ═йср п2цурлн ═йср═неьтбуф ═йср═децпоинт ═лда═поинт ═ста═буфенд ═лда═поинт+1 ═ста═буфенд+1 ═лда═поинт+2 ═ста═буфенд+2 ═йср═сетцурлн ═йср п2теьт гетбуфпос ═лда цурбуф ═асл ═таь ═лда цурбуфлине,ь ═ста ацц ═лда цурбуфлине+1,ь ═ста ацц+1 ═йср готолине ═йср лине2буф ═лдь цурбуф ═лда цурбуфпос,ь ═ста цурпос ═лда цурбуфцол,ь ═ста цолумн ═ртс сажебуфстуф ═лдь цурбуф ═лда цурпос ═ста цурбуфпос,ь ═лда цолумн ═ста цурбуфцол,ь ═тьа ═асл ═таь ═лда цурлине ═цлц ═адц #1 ═ста цурбуфлине,ь ═лда цурлине+1 ═адц #00 ═ста цурбуфлине+1,ь ═ртс неьтбуф ═йср═сетцурлн ═цлц ═ьце ═реп═#$10 ═сеп═#$20 ═лды═#0000 :лооп═лда═[поинт],ы ═бея═:фоунд ═ины ═бне═:лооп ═инц═поинт+2 ═бне═:лооп :фоунд ═реп═#$30 ═тыа ═сецЮ;+1 ═адц═поинт ═ста═поинт ═ста═теьт ═сеп═#$30 ═лда═поинт+2 ═адц═#00 ═ста═поинт+2 ═ста═теьт+2 ═сец ═ьце ═ртс * сAVE STUFF TO EXIT PROGRAM сажеалл ═лда═#$ффЮ;лABELS MAY EXTEND INTO ═ста═цлипсизе+1Ю;CLIPBOARD AREA сажеалл2 ═цлц ═йср═буф2теьт ═лда═#00 ═ста невфинд ═йср сажебуфстуф ═ймп═сажепос * рESTORE STUFF ресторе═ент ═йср гетпос ═ймп═хинед * цOMPILE TO $020000 сетенд ═лды═буфенд ═сты═поинт ═лды═буфенд+1 ═сты═поинт+1 ═лды═буфенд+2 ═сты═поинт+2 ═ста═[поинт]Ю;тEXT ENDS WITH A 00 OR 13 ═ртс цомпиле ═йср═сажеалл * лда #00 ;тEXT ENDS WITH 00 * йср сетенд ═йср═строут ═дфб═147,5,13,13Ю;цLEAR, WHITE, ═тьт═'аSSEMBLING...',0D,00 ═йср═ассембле ═йср═ваиткеыЮ;пRESS A KEY TO CONTINUE... * лда #13 * йср сетенд ═лда═ассерр ═бне═:го :ймп═ймп═гетпос :го═лда═асслине ═ста═ацц ═лда═асслине+1 ═ста═ацц+1 ═ймп═готолине * гOTO LINE гото═цлц ═йср═буф2теьт ═лда═#13Ю;цOLOR ═йср═сетбар ═йср═плопстр ═тьт═'>>> GOTO LINE:',00 ═йср═спаце ═лдь═#24 ═лды═#14 ═цлц ═йср═плот ═лдь═#5 ═йср═инпут ═бея═гоаборт ═лда═#<стрбуф ═лдь═#>стрбуф ═лды═#10 ═йср═асцтонум ═бцс гоаборт ═лда ацц ═ора═ацц+1 ═бея═гоаборт готолине ═йср═хоме2Ю;рESET ROW1, ETC. :лооп ═дец═аццЮ;лINE NUMBER, LOW BYTE ═бне═:йср ═лда═ацц+1 ═бея═:доне ═дец═ацц+1 :йср ═йср═неьтсет ═бцс═:доне ═йср п2цурлн ═йср═инццур ═ймп═:лооп :доне центер ═йср═сетцурлн ═лдь═#00 :лооп2═йср═преж2 ═бцс═:доне2 ═инь ═цпь═#12Ю;цENTER AT ROW 12 ═бне═:лооп2 :доне2═сть═ров ═ймп═п2ров1 гоаборт═ймп═гетпос * фIND TEXT/LABEL финдлине═да═00 финдфлаг═дфб═00 невфинд═дфб 00 нлаб═лда═#$80 ═дфб═$2ц нфинд═лда═#00 ═лдь═#00 ═сть═невфинд ═дфб═$2ц финдлаб═лда═#$80 ═дфб $2ц финдоп═лда #$фф ═дфб $2ц финд═лда #00 ═ста═финдфлаг ═цлц ═йср буф2теьт ═лда финдфлаг ═цмп #$фф ═бне :C0 ═ймп :финдоп :C0 ═лда═невфинд ═бне :неьт ═йср сажепос ═лда цурлине ═цлц ═адц #1 ═ста═финдлине ═лда цурлине+1 ═адц #00 ═ста═финдлине+1 ═лда═#13 ═йср═сетбар ═йср═плопстр ═тьт═'>>> FIND:',00 ═йср═спаце ═лдь═#24 ═лды═#9 ═цлц ═йср═плот ═лдь═#30 ═йср═инпут ═бея гоаборт :финд2 ═инц═невфинд ═йср═хоме2 :финд═йср═сетцурлн :л2═лды═#00 ═сты═темп :лооп═лды═темп ═лда═[поинт],ы ═бея═:еоф ═цмп═#13 ═бея═:неьт ═йср═цомпаре ═бцс═:фоунд ═лда═финдфлаг ═бми═:неьт ═инц═темп ═бне═:лооп :неьт═йср═неьтсет ═бцс═:еоф ═йср═инццур ═йср═п2цурлн ═ймп═:л2 :еоф═лда═#00 ═ста═невфиндЮ;аT еоф ═йср═гетпос ═лда═финдлине ═ста═ацц ═лда═финдлине+1 ═ста ацц+1 ═ймп═готолине :фоунд═ймп центер * фIND LABEL IN OPERAND FIELD :финдоп ═лды #13 ═лдь #00 :COPY═лда буффер,ы ═цмп #32 ═бея :F2 ═ста стрбуф,ь ═ины ═инь ═бне :COPY :F2═тьа ═бея :ртс ═лда #00 ═ста стрбуф,ь ═ймп :финд2 :RTS═ймп гетпос цомпаре ═лдь═#00 :лооп═лда═стрбуф,ь ═бея═:сецЮ;гOTCHA ═цмп═[поинт],ы ═бне═:цлц :ины═ины ═инь ═бне═:лооп :сец═сец ═дфб═$24 :цлц═цлц ═ртс * цUT/COPY TEXT темпров═дфб═$ффЮ;сTARTING SCREEN ROW цутров═дфб═00Ю;оRIGINAL ROW/COL FOR цут цутцол═дфб═00 цуртемп═дв═00 цлиплине═дв═00 цлипстрт═дла═00Ю;сTARTING ADDRESS FOR CLIP олдров1═дла═00 цлиптьт═цлц ═йср═буф2теьт ═лда═ров ═ста═темпров ═ста═цутров ═лда═цолумн ═ста═цутцол ═лда═цурадр ═ста═цлипстрт ═лда═цурадр+1 ═ста═цлипстрт+1 ═лда═цурадр+2 ═ста═цлипстрт+2 ═лда═цурлине ═ста═цлиплине ═лда═цурлине+1 ═ста═цлиплине+1 ═лда═ров1 ═ста═олдров1 ═лда═ров1+1 ═ста═олдров1+1 ═лда═ров1+2 ═ста═олдров1+2 ═лда═#10 ═йср═сетбар ═йср═режон ═йср═плопстр ═тьт═'>>> CLIP TEXT >>>',00 ═йср═режофф ═йср═спаце ═йср═гетпос ═лда теьтцолор ═ста═цолор ═лда═#00 ═ста═цуртемп ═ста═цуртемп+1 ═йср═режлине :ваит═йср═гетин ═бея═:ваит ═йср═исцтрл ═бея═:цлип ═цмп═#17Ю;CRSR DN ═бея═:дн ═цмп═#145Ю;CRSR UP ═бне═:еьитЮ;CANCEL ON ANYTHING ELSE :уп═йср═режлине ═лдь═ров ═бея═:еьит ═лда═цуртемп ═бне═:ц1 ═дец═цуртемп+1 ═бми═:еьит :ц1═дец═цуртемп ═деь ═лды═цолумн ═йср═плопьы ═йср═прежлине ═йср═п2цурлн ═йср═деццур ═ймп═:ваит :дн═йср═неьтсет ═бцс═:еьит ═йср═п2цурлн ═йср═инццур ═инц═цуртемп ═бне═:ц2 ═инц═цуртемп+1 :ц2═лдь═ров ═цпь═#23 ═бея═:невсцр ═инь ═лды═цолумн ═йср═плопьы ═йср═режлине ═ймп═:ваит :невсцр═йср═сетров1 ═йср═неьтлине ═йср═п2ров1 ═йср═сцреенупЮ;мOVE SCREEN UP ═йср═релине ═лда═темпров ═бея═:ваит ═дец═темпров ═ймп═:ваит :еьит═лда═#$фф ═ста═темпров ═ста═цлипсизе+1 ═ртс :цлип═лдь═#$фф ═сть═темпров ═цмп═#3Ю;COPY ═бея═цопы ═цмп═#24Ю;CUT ═бне═:еьит цут═йср═цопы ═йср═сетблоцк ═лда═цлипстрт ═ста═блдест ═ста═цурадр ═лда═цлипстрт+1 ═ста═блдест+1 ═ста═цурадр+1 ═лда═цлипстрт+2 ═ста═блдест+2 ═ста═цурадр+2 ═лда═цлиплине ═ста═цурлине ═лда═цлиплине+1 ═ста═цурлине+1 ═лда═олдров1 ═ста═ров1 ═лда═олдров1+1 ═ста═ров1+1 ═лда═олдров1+2 ═ста═ров1+2 ═йср═сетможе ═лда═цутров ═ста═ров ═лда═цутцол ═ста═цолумн ═ймп═сажепос * цOPY TEXT TO CLIPBOARD цопы═лда═цлипстрт ═ста═блстарт ═лда═цлипстрт+1 ═ста═блстарт+1 ═лда═цлипстрт+2 ═ста═блстарт+2 ═йср═неьтсет ═лда═поинт ═таьЮ;END-START = NUM BYTES ═сец ═сбц═блстарт ═ста═поинтЮ;TEMP ═лда═поинт+1 ═таы ═сбц═блстарт+1 ═ста═поинт+1 ═лда═поинт+2 ═ста═бленд+2 ═сбц═блстарт+2 ═ста═поинт+2 ═тьаЮ;нEED TO USE NEXTLINE-1 ═бне═:ц1Ю;AS MOVE BOUNDARY ═деы ═цпы═#$фф ═бне═:ц1 ═дец═бленд+2 :ц1═деь ═сть═бленд ═сты═бленд+1 ═лда═#<цлипбуф ═ста═блдест ═лда═#>цлипбуф ═ста═блдест+1 ═лда═#^цлипбуф ═ста═блдест+2 ═лда═бленд ═сец ═сбц═блстарт ═ста═цлипсизе ═лда═бленд+1 ═сбц═блстарт+1 ═ста═цлипсизе+1Ю;аSSUME 16-BITS ═ймп═блможе * пASTE FROM CLIPBOARD пасте═цлц ═йср═буф2теьт ═лда═цлипсизе+1 ═цмп═#$фф ═бея═:еьит ═йср═сетцурлн ═йср═сетбл2 ═лда═цлипсизеЮ;нUMBER OF BYTES ═сецЮ;+1 ═адц═поинтЮ;SET TO CURADR ═ста═блдест ═лда═цлипсизе+1 ═адц═поинт+1 ═ста═блдест+1 ═лда═поинт+2 ═адц═#00 ═ста═блдест+2 ═йср═сетможеЮ;мOVE THE TEXT ═лда═#<цлипбуф ═ста═блстарт ═цлц ═адц═цлипсизе ═ста═бленд ═лда═#>цлипбуф ═ста═блстарт+1 ═адц═цлипсизе+1 ═ста═бленд+1 ═лда═#^цлипбуф ═ста═блстарт+2 ═адц═#00 ═ста═бленд+2 ═лда═цурадр ═ста═блдест ═лда═цурадр+1 ═ста═блдест+1 ═лда═цурадр+2 ═ста═блдест+2 * сеи * лда $01 * пха * анд #$фц ;сWITCH OUT ром * ста $01 ;SINCE CLIPBUF = $е000 ═йср═блможе * пла * ста $01 ═цли :еьит═ртс * рEVERSE A LINE ON THE SCREEN режлине═лды═#39 :лооп═лда═(сцреенп),ы ═еор═#$80 ═ста═(сцреенп),ы ═деы ═бпл═:лооп ═ртс * * мOVE ENTIRE SCREEN UP ONE LINE * сцреенуп═йср═сажепос ═лдь═#00 ═сть═ров :лооп1═лдь═#40 ═сть═темп ═лды═#00 ═лдь═ров ═цпь═#23 ═бея═:доне ═йср═плопьыЮ;SET сцреенп ═лды═#40 ═лдь═#00 :лооп2═лда═(сцреенп),ы ═ста═(сцреенп,ь) ═инц═сцреенп ═бне═:ц1 ═инц═сцреенп+1 :ц1═дец═темп ═бпл═:лооп2 ═инц═ров ═бне═:лооп1 :доне═ймп═гетпос * * мOVE ENTIRE SCREEN DOWN ONE LINE * сцреендн═йср═сажепос ═лдь═#22 ═сть═ров :лооп1═лдь═#40 ═сть═темп ═лды═#00 ═лдь═ров ═йср═плопьыЮ;SET сцреенп ═лды═#40 ═лдь═#00 :лооп2═лда═(сцреенп,ь) ═ста═(сцреенп),ы ═инц═сцреенп ═бне═:ц1 ═инц═сцреенп+1 :ц1═дец═темп ═бне═:лооп2 ═дец═ров ═бпл═:лооп1 ═ймп═гетпос * * цHECK FOR фUNCTION KEYS * исфунц═цмп═#$88Ю;ф7 ═бея═:ртс ═цмп═#133Ю;ф1 -- ASSEMBLE ═бея═:ртс ═цмп═#137Ю;ф2 -- EXIT TO MONITOR :ртс═ртс процфунц ═цмп═#$88 ═бея═:дискио ═цмп═#133 ═бея═:цомп ═ймп═еьит :цомп═ймп═цомпиле :дискио ═йср сажеалл2 ═йср макероом ═йср сетнаме ═йср дискио ═йср гетнаме ═лда невдата ═бне═:нев ═йср═такероом ═йср═гетцурлн ═ймп гетпос :нев═лда═$ае ═ста═буфенд ═лда═$аф ═ста═буфенд+1 ═лда═$б0 ═ста═буфенд+2 ═лда═#00Ю;еNDING 00 ═ста═[$ае] ═йср такероом ═ймп хоме2 * цOPY EXTRA BUFFERS UP/DOWN макероом ═йср═сажецурлн ═йср═теьт2п ═йср═п2цурлн ═йср═неьтбуф ═йср═сетбл2 ═йср═п2теьт ═лда═хипагеЮ;TOP - SIZE ═цлц ═сбц═теьтенд+2Ю;SIZE = END-START ═цлц ═адц═поинт+2 ═ста═блдест+2 ═лда═#00 ═ста═блдест+1 ═ста═блдест ═ймп═сетможе такероом ═лда═блдест ═ста═блстарт ═лда═блдест+1 ═ста═блстарт+1 ═лда═блдест+2 ═ста═блстарт+2 ═лда═теьтенд ═ста═бленд ═лда═теьтенд+1 ═ста═бленд+1 ═лда═теьтенд+2 ═ста═бленд+2 ═лда═буфенд ═цлц ═адц═#1 ═ста═блдест ═лда═буфенд+1 ═адц═#00 ═ста═блдест+1 ═лда═буфенд+2 ═адц═#00 ═ста═блдест+2 ═ймп═сетможе * * сET ROW/COL, BLINK CURSOR, AND GET A KEY * ласткеы═дфб═00 гетцхар ═лда═цолор ═ста═$0286Ю;сAME BLINK COLOR ═ста═$0287 ═лдь═ров ═лды═цолумн ═цлц ═йср═плот ═лда═#1 ═ста═блнцт ═лдь═#00 ═сть═блнсв :в═лдь═блнонЮ;вAIT FOR AT LEAST ONE BLINK ═бне═:в Ю;.а = 1 :реад═ста═ласткеыЮ;дEBOUNCING KLUDGE ═йср═гетин ═бея═:реад ═лдь═$цбЮ;DEBOUNCE ═цпь═#63 ═бне═:оут ═лда═ласткеы ═бне═:реад :оут═лдь═#1 ═сть═блнцт :ваит═лдь═блнон ═бея═:ваит ═инц═блнсв ═ста═ласткеы ═анд═#$фф ═ртс * * цOPY THE CURRENT LINE INTO THE EDIT BUFFER * лине2буф ═йср═сетцурлн ═лдь═#00 ═лды═#00 ═сты═модбуф ═сты═яуоте ═лда═[поинт],ы ═цмп═#'*' ═бея═:цом ═цмп═#';' ═бея═:цом :лооп═лда═[поинт],ы ═бея филлбуф ═цмп═#13 ═бея═филлбуф ═цмп═#34 ═бея═:яуоте ═цмп═#39 ═бея═:яуоте ═цмп═#';' ═бея═:цом ═цмп═#160Ю;TAB ═бея═:таб ═цмп═#224 ═бея═:таб2 :ста═ста═буффер,ь ═инь :ины═ины ═цпь═#маьбуф ═бцц═:лооп ═бцс═филлбуф :яуоте═ста═темп ═еор═яуоте ═бея═:стя ═цмп═темп ═бне═:лдт :стя═ста═яуоте :лдт═лда═темп ═бне═:ста :цом═ста═темп ═лда═яуоте ═бне═:лдт ═ора═#$фф ═бне═:стя :таб═ста═темп ═лда═яуоте ═бне═:лдт ═лда═темп ═цпь═#9 ═бцц :ц9 ═цпь═#13 ═бцц═:ц13 :таб2═лда═#22 ═дфб═$2ц :ц9═лда═#9 ═дфб═$2ц :ц13═лда═#13 ═ста═темп ═лда═#32 :л2═ста═буффер,ь ═инь ═цпь═темп ═бцц═:л2 ═бцс═:ины филлбуф═лда═#32 :л2═ста═буффер,ь ═инь ═цпь═#маьбуф ═бцц═:л2 ═ста═буффер,ь ═ртс * * цOPY FROM BUFFER INTO MAIN TEXT * * цARRY SET MEANS ADD ANOTHER цр (INSERT ADDITIONAL LINE) * модбуф═дфб═00 буф2теьт ═рор═темп ═бми═:мод ═лда═модбуф ═бея═:еьит :мод═лда═#00 ═ста═модбуф ═йср═сетблоцк ═йср═црунцх :доне1═лда═#13 ═ста═буффер,ы ═лдь═темпЮ;аDD ANOTHER цр? ═бпл═:скип ═ины ═ста═буффер,ы :скип═сецЮ;+1 TO MOVE PAST LAST CHAR ═тыа ═пха ═адц═поинт ═ста═блдестЮ;пOINTS TO LAST CHAR+1 ═лда═поинт+1 ═адц═#00 ═ста═блдест+1 ═лда═поинт+2 ═адц═#00 ═ста═блдест+2 ═йср═сетможе ═пла ═таыЮ;фINALLY, COPY FROM BUFFER :лооп2═лда═буффер,ы ═бми═:ста ═цмп═#96Ю;цONVERT UPPER CASE ═бцц═:стаЮ;TO NORMAL ═адц═#95 :ста═ста═[поинт],ы ═деы ═цпы═#$фф ═бне═:лооп2 :еьит═ртс * * црунцх REMOVES EXCESS SPACES WITHIN буффер * оN EXIT, SPACES ARE REMOVED, AND .ы POINTS TO LAST * CHARACTER+1 * * сHIFT-SPACES ARE USED FOR TABS. * темпы═дфб═00 црунцх ═лдь═#00Ю;цURRENT POSITION ═лды═#00Ю;дESTINATION POSITION ═сты═яуоте :лаб═лда═буффер,ьЮ;лABEL FIELD ═цмп═#'*' ═бея═:рест ═цмп═#';' ═бея═:рест ═цмп═#13Ю;сHIFT-INSERT ═бне═:ц0 ═инь ═ины ═бне═:лаб :ц0 ═йср═:цопыспц ═бцц═:бран ═цпы═#9Ю;дON'T TAB IF INTO OPCODE FIELD ═бцц═:ины1 ═лда═#32 ═ста═буффер,ы :ины1═ины ═сты═темпы ═лда═буффер,ьЮ;оPCODE ═цмп═#';' ═бея═:цоммент ═йср═:цопыспц ═бцц═:бран ═тыа ═сбц═темпы ═цмп═#3Ю;дON'T TAB IF INTO OPERAND ═бцц═:ины2 ═лда═#32 ═ста═буффер,ы :ины2═ины ═лда═буффер,ьЮ;аRG ═цмп═#';' ═бея═:цоммент :цс═йср═:цопыспц :бран═бцц═:ртс ═ины :цом═лда═буффер,ь ═цмп═#';' ═бне═:рест :цоммент═лда═#224Ю;аNOTHER SPACE ═ста═буффер-1,ы :рест═лда═#$ффЮ;цOPY REST OF LINE ═ста═яуоте :цопыспцЮ;цOPY UNTIL A SPACE/TAB IS FOUND :л1═лда═буффер,ь ═инь ═рол═яуоте ═рор═яуоте ═бне═:иняуотеЮ;кEEP GOING IF WITHIN QUOTES ═цмп═#224 ═бея═:неьтцхр ═цмп═#160 ═бея═:неьтцхр ═цмп═#32 ═бея═:неьтцхр :иняуоте═цмп═#224 ═бея═:сп ═цмп═#160 ═бне═:ст1 :сп═лда═#32 :ст1═ста═буффер,ы ═ины ═цмп═#34Ю;цHECK FOR QUOTES ═бея═:яуоте ═цмп═#39 ═бне═:цхецк :яуоте═бит═яуотеЮ;тOGGLE QUOTE FLAG ═бея═:ста ═еор═яуоте ═бне═:сты :ста═ста═яуоте :цхецк═цмп═#32Ю;рEMEMBER LAST NON-SPACE ═бея═:цпь :сты═сты═ацц+1Ю;сTORE LAST NON-SPACE :цпь═цпь═#маьбуф ═бцц═:л1 ═лды═ацц+1Ю;лAST NON-SPACE ═цлц ═ртс :неьтцхрЮ;фIND NEXT NON-SPACE :ц1═лда═буффер,ь ═цмп═#32 ═бне═:ртс ═инь ═цпь═#маьбуф ═бцц═:ц1 ═цлц :ртс═лда═#160Ю;ины IS ABOVE ═ста═буффер,ы ═ртсЮ;ц CLEAR -> маьбуф * * сET UP THE BLOCK MOVE * сетблоцк ═йср═неьтсет сетбл2═лда═поинтЮ;сET UP THE BLOCK MOVE ═ста═блстарт ═лда═поинт+1 ═ста═блстарт+1 ═лда═поинт+2 ═ста═блстарт+2 ═лда═теьтенд ═ста═бленд ═лда═теьтенд+1 ═ста═бленд+1 ═лда═теьтенд+2 ═ста═бленд+2 ═ймп═сетцурлнЮ;сET поинт * * сET NEW END OF TEXT AND MOVE BLOCK. * сетможе ═лда═блдестЮ;нEW END OF TEXT = EOF + DEST-START ═сец ═сбц═блстарт ═ста═ацц ═лда═блдест+1 ═сбц═блстарт+1 ═ста═ацц+1 ═лда═блдест+2 ═сбц═блстарт+2 ═ста═ацц+2 ═лда═теьтенд+2 ═цлц ═адц═ацц+2 ═цмп═хипаге ═бцс═:ерр ═лда═теьтенд ═цлц ═адц═ацц ═ста═теьтенд ═лда═теьтенд+1 ═адц═ацц+1 ═ста теьтенд+1 ═лда═теьтенд+2 ═адц═ацц+2 ═ста═теьтенд+2 ═лда═блстартЮ;оNLY MODIFY IF блстарт <= буфенд ═цлцЮ;старт-енд-1 < 0 ═сбц═буфенд ═лда═блстарт+1 ═сбц═буфенд+1 ═лда═блстарт+2 ═сбц═буфенд+2 ═бцс═:скип ═лда═буфенд ═цлц ═адц═ацц ═ста═буфенд ═лда═буфенд+1 ═адц═ацц+1 ═ста═буфенд+1 ═лда═буфенд+2 ═адц═ацц+2 ═ста═буфенд+2 :скип *------------------------------- ═до═0 ═лда═теьтендЮ;нEW END OF TEXT = EOF+DEST-START ═цлц ═адц═блдест ═таь ═лда═теьтенд+1 ═адц═блдест+1 ═ста═ацц+1 ═лда═теьтенд+2 ═адц═блдест+2 ═ста═ацц+2 ═тьа ═сец ═сбц═блстарт ═таь ═лда═ацц+1 ═сбц═блстарт+1 ═ьба ═лда═ацц+2 ═сбц═блстарт+2 ═цмп═хипаге ═бцс═:ерр ═ста═теьтенд+2 ═ьба ═ста═теьтенд+1 ═сть═теьтенд ═фин *------------------------------- ═ймп═блможеЮ;мOVE IT, BUSTER! :ерр═лда═#7 ═йср═сетбар ═йср═плопстр ═тьт 'оUT OF MEMORY!',00 ═йср═спаце ═лдь═#24 ═лды═#14 ═йср═реаллы2 ═ймп═гетпос * * сAVE CURRENT ROW AND COLUMN * сажеров═дфб═00 сажецол═дфб═00 сажепос ═лда═ров ═ста═сажеров ═лда цолумн ═ста═сажецол ═ртс гетпос ═лды═сажецол ═лдь═сажеров ═ймп═плопьы * * дRAW THE SCREEN * цол0офф═дфб═00 цол0оффы═дфб═00Ю;LOCATION IN (POINT) редрав ═йср сажепос ═йср═сетров1 ═йср═гетофф ═лдь═#00 :лооп═сть═темп ═лды═#00 ═йср═плопьыЮ;сET SCREEN ROW/COLUMN ═йср═финдпосЮ;фIND POSITION IN LINE ═йср═прлинеЮ;пRINT LINE ═йср═неьтлинеЮ;аDVANCE TO NEXT LINE ═лдь═темп ═инь ═цпь═#24 ═бне═:лооп ═ймп═гетпос * * цALCULATE SCREEN OFFSET * гетофф═лда═#00 ═ста═темп ═лда═#$ффЮ;фIND SCREEN COL 0 OFFSET IN LINE ═цлцЮ;I.E. 40*INT(CURPOS/40) :л1═адц═#40 ═цмп═цурпос ═бцц═:л1 ═сбц═#39 ═ста═цол0офф ═ртс * * рEDRAW A SINGLE LINE * релине═йср═сетцурлн ═йср═сажепос ═йср═гетофф ═лдь═ров ═лды═#00 ═йср═плопьыЮ;сET SCREEN ROW/COLUMN ═йср═финдпосЮ;фIND POSITION IN LINE ═йср═прлинеЮ;пRINT LINE ═ймп═гетпос * * пRINT STATUS BAR * сетбар ═ста═цолор ═йср═сажепос ═лдь═#24 ═лды═#00 ═ймп═плопьы статбар ═лда═#13 ═йср сетбар ═йср пнамеЮ;бUFFER NAME ═йср═плопстр ═тьт═' LINE ',00 ═лдь═цурлине+1 ═лда═цурлине ═цлц ═адц═#1 ═бцц═:ц1 ═инь :ц1 ═лды═#10 ═йср═плопнум ═йср═плопстр ═тьт═' COL ',00 ═лда═цурпос ═лдь═#00 ═лды═#10 ═йср═плопнум ═лда═едитмоде ═бпл═:спаце ═йср═плопстр ═тьт═' (INSERT)',00 :спаце═йср═спаце ═ймп гетпос пнаме ═лда #'[' ═йср цхароут ═лдь цурбуф ═лды буфнамелен,ь ═бея :доне ═тьа ═асл ═асл ═асл ═асл ═таь :лооп═лда цурбуфнаме,ь ═йср цхароут ═инь ═деы ═бне :лооп ═до═0 ═лда цурбуф ═инц ═ора #$30 ═йср цхароут ═фин :доне ═лда #']' ═ймп цхароут * * фIND POSITION IN LINE. сPECIFICALLY, FIND ADDRESS * OF STARTING ROW IN LINE. * * оN EXIT, .ы = OFFSET * финдпос ═йср═линелен ═цпь═цол0офф ═бцц═:ртс ═лды═цол0оффы :ртс═ртс * фIND LENGTH OF CURRENT LINE * .ь = BUFFER LENGTH, .ы = ACTUAL LENGTH * ц CLEAR INDICATES LINE > 256 CHARS линелен ═лды═#00 ═лдь═#00 :лооп═цпь═цол0офф ═бне═:ц2 ═сты═цол0оффы :ц2═лда═[поинт],ы ═цмп═#00Ю;сец ═бея═:ртс ═цмп═#13 ═бея═:ртс ═цмп═#224 ═бея═:таб2 ═цмп═#160 ═бне═:ц1 ═цпь═#9 ═бцц═:ь9 ═цпь═#13 ═бцц═:ь13 :таб2═цпь═#22 ═бцс═:ц1 ═лдь═#21 ═дфб═$2ц :ь13═лдь═#12 ═дфб $2ц :ь9═лдь═#8 :ц1 ═ины ═инь ═цпь═#маьбуф ═бне═:лооп ═цлц :ртс═ртс * * пRINT LINE -- .ы CONTAINS LINE OFFSET. * вHEN END OF LINE IS REACHED, SPACES FILL OUT THE SCREEN * прлине ═лдь═темпров ═бми═:норежЮ;рEVERSE LINE IF CLIPPED ═лдь═ров ═цпь═темпров ═бцц═:нореж ═йср═режон :нореж ═лдь═#00 :лооп═лда═[поинт],ы ═бея═спаце ═цмп═#13 ═бея═спаце ═цмп═#224 ═бея═:таб2 ═цмп═#160 ═бне═:нормал ═лда═#9Ю;хANDLE TABS ═цпь═#9 ═бцц═:ц1 ═лда═#13 ═цпь═#13 ═бцц═:ц1 :таб2═лда═#22 :ц1═ста═ацц ═лда═#32 :л1═йср═цхароут ═инь ═цпь═ацц ═бцц═:л1 ═ины ═бне═:лооп :нормал═йср═цхароут ═инь ═цпь═#39 ═бцс═сласх ═ины ═бне═:лооп * фILL REST OF SCREEN LINE WITH CHAR сласх═лда═#'/' ═дфб═$2ц спаце═лда═#' ' ═лдь═цолумн :лооп═цпь═#40 ═бцс═:ртс ═сть═цолумн ═йср═цхароутЮ;кERPLOP IS FASTER, BUT NEED ═иньЮ;REVERSED SPACES ═бне═:лооп :ртс═ймп═режофф * * цOPY CURRENT LINE TO POINTER * сетцурлн ═лда═цурадр ═ста═поинт ═лда═цурадр+1 ═ста═поинт+1 ═лда═цурадр+2 ═ста═поинт+2 ═ртс олдцл═дла═00 сажецурлн ═лдь═#2 :л═лда═цурадр,ь ═ста═олдцл,ь ═деь ═бпл═:л ═ртс гетцурлн ═лдь═#2 :л═лда═олдцл,ь ═ста═цурадр,ь ═деь ═бпл═:л ═ртс * * цOPY ROW1 TO POINTER * сетров1 ═лда═ров1 ═ста═поинт ═лда═ров1+1 ═ста═поинт+1 ═лда═ров1+2 ═ста═поинт+2 ═ртс * * цOPY POINTER TO ROW1 * п2ров1 ═лда═поинт ═ста═ров1 ═лда═поинт+1 ═ста═ров1+1 ═лда═поинт+2 ═ста═ров1+2 ═ртс * * цOPY POINTER TO CURADR * п2цурлн ═лда═поинт ═ста═цурадр ═лда═поинт+1 ═ста═цурадр+1 ═лда═поинт+2 ═ста═цурадр+2 ═ртс п2теьт═лда═поинт ═ста═теьт ═лда═поинт+1 ═ста═теьт+1 ═лда═поинт+2 ═ста═теьт+2 ═ртс теьт2п═лда═теьт ═ста═поинт ═лда═теьт+1 ═ста═поинт+1 ═лда═теьт+2 ═ста═поинт+2 ═ртс * * аDVANCE. лINES LONGER THAN маьбуф GET CHOPPED+SPLIT! * * цARRY SET MEANS AT еоф * неьтсет ═йср═сетцурлн неьтлине═йср═атеоф ═бцс═:ртс ═йср═линелен ═бцс═:цонт ═лда═#13Ю;сPLIT LINE IF > маьбуф ═ста═[поинт],ы :цонт═тыа ═сецЮ;сKIP ENDING цр ═адц═поинт ═ста═поинт ═бцц═:ймп ═инц═поинт+1 ═бне═:ймп ═инц═поинт+2 :ймп═ймп═атеоф :ртс═ртс * * бACK UP. * * цARRY SET MEANS ALREADY AT START OF FILE * прежлине ═йср═сетцурлн преж2═йср═атстарт ═бцс═:ртс ═йср═децпоинт ═лды═#00 :лооп═йср═атстарт ═бцс═:цлц ═йср═децпоинт ═лда═[поинт],ы ═цмп═#13 ═бне═:лооп ═инц═поинтЮ;мOVE PAST цр ═бне═:цлц ═инц═поинт+1 ═бне═:цлц ═инц═поинт+2 :цлц═цлц :ртс═ртс * тRUTH IN ADVERTISING децпоинт ═лда═поинтЮ;мOVE PAST ENDING цр ═бне═:ц1 ═лда═поинт+1 ═бне═:ц1A ═дец═поинт+2 :ц1A═дец═поинт+1 :ц1═дец═поинт ═ртс инцпоинт ═инц═поинт ═бне═:ртс ═инц═поинт+1 ═бне═:ртс ═инц═поинт+2 :ртс═ртс * * цHECK IF AT END OF FILE * атеоф ═лда═поинт ═цмп═буфенд ═лда═поинт+1 ═сбц═буфенд+1 ═лда═поинт+2 ═сбц═буфенд+2 ═ртс * * цHECK IF AT START OF FILE * атстарт ═лда═теьт ═цмп═поинт ═лда═теьт+1 ═сбц═поинт+1 ═лда═теьт+2 ═сбц═поинт+2 ═ртс сетнаме ═лдь цурбуф ═лда буфнамелен,ь ═ста ластлен ═тьа ═асл ═асл ═асл ═асл ═таь ═лды #00 :лооп═лда цурбуфнаме,ь ═ста ластфиле,ы ═инь ═ины ═цпы #16 ═бне :лооп ═ртс гетнаме ═лдь цурбуф ═лда ластлен ═ста буфнамелен,ь ═тьа ═асл ═асл ═асл ═асл ═таь ═лды #00 :лооп═лда ластфиле,ы ═ста цурбуфнаме,ь ═инь ═ины ═цпы #16 ═бне :лооп ═ртс цурбуфнаме дс═128Ю;бUFFER NAMES буфнамелен дс═8 буффер═дс═маьбуф+4Ю;лITTLE EXTRA PADDING...