претбгйпообс уйуфенб жпдпу-2 уйуфенобс нблтпвйвмйпфелб тхлпчпдуфчп ртпзтбннйуфб 589.7545471.00042-01 33 01 мйуфпч 158 1985 упдетцбойе мйуф 1. оБЪОБЮЕОЙЕ Й ХУМПЧЙС РТЙНЕОЕОЙС 2. пВТБЭЕОЙЕ Л УЙУФЕНОПК НБЛТПВЙВМЙПФЕЛЕ 2.1. бДТЕУБГЙС БТЗХНЕОФПЧ 2.2. лМАЮЕЧПК БТЗХНЕОФ CODE 3. чИПДОЩЕ Й ЧЩИПДОЩЕ ДБООЩЕ 3.1. оПНЕТ ЛБОБМБ 3.2. вМПЛ ХУФТПКУФЧБ 3.3. вМПЛ БТЗХНЕОФПЧ енф 3.4. рПДРТПЗТБННЩ ЪБЧЕТЫЕОЙС 3.5. фТЕВПЧБОЙЕ USR 4. уППВЭЕОЙС 5. рТПЗТБННОЩЕ ЪБРТПУЩ 5.1. рТПЗТБННОЩЕ ЪБРТПУЩ ДМС ПРЕТБГЙК У ЖБКМБНЙ 5.1.1. .CHCOPY (FB,XM) 5.1.2. .CLOSE 5.1.3. .DELETE 5.1.4. .ENTER 5.1.5. .LOOKUP 5.1.6. .PURGE 5.1.7. .RENAME 5.1.8. .REOPEN 5.1.9. .SAVESTATUS 5.2. рТПЗТБННОЩЕ ЪБРТПУЩ ДМС ПТЗБОЙЪБГЙЙ ЧЧПДБ-ЧЩЧПДБ 5.2.1. .READ,.READC,.READW 5.2.2. .WRITE,.WRITC,.WRITW 5.2.3. .RCVD,.RCVDC,.RCVDW (FB,ин) 5.2.4. .SDAT,.SDATC,.SDATW (FB,ин) 5.2.5. .TTYIN,.TTINR 5.2.6. .TTYOUT,.TTOUTR 5.2.7. .PRINT 5.2.8. .MTIN 5.2.9. .MTOUT 5.2.10. .MTPRNT 5.2.11. .SPFUN 5.3. ъБРТПУЩ ПВЭЕЗП ОБЪОБЮЕОЙС 5.3.1. .CDFN 5.3.2. .CHAIN 5.3.3. .CMKT 5.3.4. .CNTXSW (FB,XM) 5.3.5. .CSIGEN 5.3.6. .CSISPC 5.3.6.1. рЕТЕДБЮБ ЙОЖПТНБГЙЙ П РЕТЕЛМАЮБФЕМСИ РТПЗТБННЕ РПМШЪПЧБФЕМС 5.3.7. .ABTIO 5.3.8. .CSTAT (FB,XM) 5.3.9. .DATE 5.3.10. .DEVICE(FB,XM) 5.3.11. .DSTATUS 5.3.12. .EXIT 5.3.13. .FETCH,.RELEAS 5.3.14. .FORK 5.3.15. .FPROT 5.3.16. .GTIM 5.3.17. .GTJB 5.3.18. .GTLIN 5.3.19. .GVAL,.PVAL 5.3.20. .HERR,.SERR 5.3.21. .HRESET 5.3.22. .INTEN 5.3.23. .LOCK,.UNLOCK 5.3.24. .MFPS, .MTPS 5.3.25. .MRKT 5.3.26. .MTATCH 5.3.27. .MTDTCH 5.3.28. .MTSET 5.3.29. .MTGET 5.3.30. .MTSTAT 5.3.31. .MTRCTD 5.3.32. .MWAIT (FB,XM) 5.3.33. .PEEK,.POKE 5.3.34. .PROTECT,.UNPROTECT (FB,XM) 5.3.35. .QSET 5.3.36. .RCTRLD 5.3.37. .SPND,.RSUM (FB,XM) 5.3.38. .SCCA 5.3.39. .SDTTM 5.3.40. .SETTOP 5.3.41. .SPCPS (FB,ин) 5.3.42. .SFDAT 5.3.43. .SFPA 5.3.44. .SRESET 5.3.45. .SYNCH 5.3.46. .TLOCK 5.3.47. .TRPSET 5.3.48. .TWAIT 5.3.49. .WAIT 6. уППВЭЕОЙС ртймпцеойе 1. лПДЩ ПЫЙВПЛ РТПЗТБННОЩИ ЪБРТПУПЧ ртймпцеойе 2. уФТХЛФХТБ ВМПЛБ CBLK ретеюеош уущмпюощи дплхнеофпч 1. оБЪОБЮЕОЙЕ Й ХУМПЧЙС РТЙНЕОЕОЙС сДТПН ПРЕТБГЙПООПК УЙУФЕНЩ RT11 СЧМСЕФУС НПОЙФПТ. ч ЪБЧЙУЙНПУФЙ ПФ ЛПОЖЙЗХТБГЙЙ ФЕИОЙЮЕУЛЙИ УТЕДУФЧ Й РПФТЕВОПУФЕК РПМШЪПЧБФЕМС НПЦЕФ ЙУРПМШЪПЧБФШУС ПДЙО ЙЪ ФТЕИ НПОЙФПТПЧ RT11: НПОЙФПТ ПДОПЗП ЪБДБОЙС (SJ), НПОЙФПТ ПУОПЧОПЗП-ЖПОПЧПЗП ЪБДБОЙС (FB) Й НПОЙФПТ ТБУЫЙТЕООПК РБНСФЙ (XM). ЧУЕ ЙЪМПЦЕООПЕ Ч ДБООПН ДПЛХНЕОФЕ, ЕУМЙ ОЕ ПЗПЧПТЕОП ПУПВП, ПФОПУЙФУС Л МАВПНХ НПОЙФПТХ RT11. нПОЙФПТ ЧЩРПМОСЕФУС РБТБММЕМШОП У РТЙЛМБДОЩНЙ РТПЗТБННБНЙ Й ПВЕУРЕЮЙЧБЕФ ЧЩРПМОЕОЙЕ УМЕДХАЭЙИ ЖХОЛГЙК: - йОЙГЙБМЙЪБГЙС Й ХРТБЧМЕОЙЕ ИБТБЛФЕТЙУФЙЛБНЙ ПРЕТБГЙПООПК УЙУФЕНЩ; - тБУРТЕДЕМЕОЙЕ УЙУФЕНОЩИ ТЕУХТУПЧ Й РПМХЮЕОЙЕ ЙОЖПТНБГЙЙ П УПУФПСОЙЙЙ ПРЕТБГЙПООПК УЙУФЕНЩ; - йОФЕТРТЕФБГЙС ЛПНБОД; - пРЕТБГЙЙ У ЖБКМБНЙ; - хРТБЧМЕОЙЕ ЧЧПДПН-ЧЩЧПДПН; - пВЕУРЕЮЕОЙЕ УЧСЪЙ НЕЦДХ ЪБДБОЙСНЙ; - ъБЧЕТЫЕОЙЕ ЙМЙ ЧТЕНЕООЩК РТЙПУФБОПЧ РТПЗТБННЩ; - тБВПФБ У ТБУЫЙТЕООПК РБНСФША. уЧСЪШ РПМШЪПЧБФЕМС У RT11 ПУХЭЕУФЧМСЕФУС ЗМБЧОЩН ПВТБЪПН У РПНПЭША ЛПНБОД ЛМБЧЙБФХТОПЗП НПОЙФПТБ Й РТПЗТБННОЩИ ЪБРТПУПЧ. рТПЗТБННОЩЕ ЪБРТПУЩ ПВЕУРЕЮЙЧБАФ ТБЪОППВТБЪОЩЕ ЧПЪНПЦОПУФЙ ДМС НБОЙРХМЙТПЧБОЙС ЖБКМБНЙ, ЧЩРПМОЕОЙС ПРЕТБГЙК ЧЧПДБ-ЧЩЧПДБ, ХРТБЧМЕОЙС ЧЩРПМОЕОЙЕН Й РТЙПУФБОПЧЛПК РТПЗТБНН Й ТЕБМЙЪБГЙЙ ДТХЗЙИ УФБОДБТФОЩИ УЙУФЕНОЩИ ЖХОЛГЙК. рТПЗТБННОЩК ЪБРТПУ РТЕДУФБЧМСЕФ УПВПК НБЛТПЛПНБОДХ, РПНЕЭБЕНХА РПМШЪПЧБФЕМЕН Ч ЙУИПДОЩК ФЕЛУФ РТПЗТБННЩ ОБ СЪЩЛЕ БУУЕНВМЕТБ (РТПЗТБННБ НПЦЕФ УПДЕТЦБФШ ОЕУЛПМШЛП РТПЗТБННОЩИ ЪБРТПУПЧ). лБЦДБС НБЛТПЛПНБОДБ ЪБНЕОСЕФУС РПУМЕДПЧБФЕМШОПУФША ПВЩЮОЩИ УЙНЧПМЙЮЕУЛЙИ ЛПНБОД. ЬФПФ РТПГЕУУ ОБЪЩЧБЕФУС НБЛТПТБУЫЙТЕОЙЕН Й ЧЩРПМОСЕФУС ЧП ЧТЕНС БУУЕНВМЙТПЧБОЙС. дМС ЖПТНЙТПЧБОЙС НБЛТПТБУЫЙТЕОЙС БУУЕНВМЕТ ЙУРПМШЪХЕФ НБЛТППРТЕДЕМЕОЙС, ЧЛМАЮЕООЩЕ Ч УЙУФЕНОХА НБЛТПВЙВМЙПФЕЛХ SYSMAC.SML, ЛПФПТБС ОБИПДЙФУС ОБ УЙУФЕНОПН ФПНЕ Й НПЦЕФ ВЩФШ ЙУРПМШЪПЧБОБ МАВПК РТПЗТБННПК. вПМШЫЙОУФЧП РТПЗТБННОЩИ ЪБРТПУПЧ ЙУРПМШЪХАФ НБЫЙООХА ЛПНБОДХ енф, ЛПФПТБС ПВЕУРЕЮЙЧБЕФ РЕТЕДБЮХ ХРТБЧМЕОЙС НПОЙФПТХ ЙЪ РТПЗТБННЩ, ЛБЛ ФПМШЛП РТЙ ЧЩРПМОЕОЙЙ ЬФПК РТПЗТБННЩ ПЮЕТЕДШ ДПИПДЙФ ДП ЛПНБОДЩ енф. нМБДЫЙК ВБКФ ЛПНБОДЩ енф УПДЕТЦЙФ ЛПД Ч ЙОФЕТЧБМЕ ПФ 340 ДП 377 (ЧПУШНЕТЙЮОПЕ), ПРТЕДЕМСАЭЙК НЕУФПРПМПЦЕОЙЕ РЕТЕДБЧБЕНЩИ НПОЙФПТХ БТЗХНЕОФПЧ: нмбдыйк ртпзтбннощк ъбртпу вбкф 340-357 РТПЗТБННОЩК ЪБРТПУ У БТЗХНЕОФБНЙ Ч УФЕЛЕ Й/ЙМЙ Ч R0 360-373 ЙУРПМШЪХЕФУС ФПМШЛП НПОЙФПТПН RT11 374 РТПЗТБННОЩК ЪБРТПУ У ПДОЙН БТЗХНЕОФПН. тЕЗЙУФТ R0 УПДЕТЦЙФ ЖХОЛГЙПОБМШОЩК ЛПД Ч УФБТЫЕН ВБКФЕ Й ОПНЕТ ЛБОБМБ Ч НМБДЫЕН ВБКФЕ 375 РТПЗТБННОЩК ЪБРТПУ У ОЕУЛПМШЛЙНЙ БТЗХНЕОФБНЙ. тЕЗЙУФТ R0 ЙУРПМШЪХЕФУС Ч ЛБЮЕУФЧЕ ХЛБЪБФЕМС ОБ ВМПЛ БТЗХНЕОФПЧ 376 ЙУРПМШЪХЕФУС ФПМШЛП НПОЙФПТПН RT11 377 тЕЪЕТЧОЩК. RT11 ЙЗОПТЙТХЕФ ЬФПФ енф Й ЧПЪЧТБЭБЕФ ХРТБЧМЕОЙЕ РТПЗТБННЕ РПМШЪПЧБФЕМС. 2. пВТБЭЕОЙЕ Л УЙУФЕНОПК НБЛТПВЙВМЙПФЕЛЕ дмс чщрпмоеойс претбгйк утедуфчбнй претбгйпоопк уйуфе- нщ ртпзтбннщ рпмшъпчбфемс пвтбэбафус л нпойфптх юетеъ ртпз- тбнноще ъбртпущ. ч дбоопн тбъдеме прйубо жптнбф й объобюе- ойе ртпзтбннощи ъбртпупч претбгйпоопк уйуфенщ. йнеоб чуеи ртпзтбннощи ъбртпупч обюйобафус уйнчпмпн "фпюлб"(.), юфп пфмйюбеф йи пф нблтплпнбод, пртедемсенщи рпмшъпчбфемен. чуе ртпзтбнноще ъбртпущ, йурпмшъхенще ч ртпзтбнне, дпмцощ вщфш пртедемеощ ч дйтелфйче .MCALL. ч RT11 йурпмшъхафус дчб жптнбфб ртпзтбннощи ъбртп- упч: 1) .PRGREQ ARG1,ARG2,...,ARGN 2) .PRGREQ AREA,ARG1,...,ARGN ч ьфйи жптнбфби PRGREQ ртедуфбчмсеф упвпк йнс ртпз- тбннопзп ъбртпуб, AREA - хлбъбфемш об бдтеу вмплб бтзхнео- фпч, ARG1,ARG2,...,ARGN - бтзхнеофщ ртпзтбннопзп ъбртпуб. ртпзтбннще ъбртпущ ретчпзп жптнбфб чщъщчбаф зеоетбгйа лпнбодщ енф у лпдпн 374 ймй пдопк йъ лпнбод енф 340-357. ртпзтбнноще ъбртпущ, йурпмшъхаэйе лпнбодх енф 374, рпнеэбаф ч нмбдыйк вбкф тезйуфтб R0 опнет лбобмб, б ч уфбт- ыйк - жхолгйпобмшощк лпд (ун.тйу.1). 15 8 7 0 ------------------------------------- R0 = ! жхолгйпобмшощк ! опнет лбобмб ! ! лпд !(еумй ртйнеосефус)! ------------------------------------- тйу.1 пдойн йъ ртпзтбннощи ъбртпупч, йурпмшъхаэйи енф 374, счмсефус ъбртпу .DATE. нблтппртедемеойе дмс ьфпзп ъбртпуб умедхаэее: .MACRO .DATE MOV #10.*^O400,%0 EMT ^374 .ENDM уппфчефуфчхаэйк ъбртпух .DATE жхолгйпобмшощк лпд, тбч- ощк 10., рпнеэбефус ч уфбтыйк вбкф тезйуфтб R0, б опнет Xлбобмб (0) - ч нмбдыйк вбкф тезйуфтб R0. ртпзтбнноще ъбртпущ, йурпмшъхаэйе енф 340-357, рпне- эбаф бтзхнеофщ (еумй пой ъбдбощ) ч уфел й/ймй ч R0. ртпзтбннощк ъбртпу .CSIGEN счмсефус ртйнетпн ртпзтбнн- опзп ъбртпуб, йурпмшъхаэезп енф 344. ойце ртедуфбчмеоп хртпэеоопе нблтппртедемеойе дмс ьфпзп ъбртпуб: .MACRO .CSIGEN DEVSPC,DEFEXT,CSTRNG,LINBUF .IFF NB MOV LINBUF,-(6.) MOV DEVSPC,-(6.) .IFF NB INC (6.) MOV DEFEXT,-(6.) .IF B CSTRNG CLR -(6.) .IFF .IF IDN CSTRNG,#0 CLR -(6.) .IFF MOV CSTRNG,-(6.) .ENDC .ENDC EMT ^O344 .ENDM чуе хлбъбооще бтзхнеофщ рпнеэбафус ч уфел рпмшъпчбфемс (ун.тйу.2) й йурпмшъхафус нпойфптпн ртй чщрпмоеойй ъбртпуб .CSIGEN. ------------ четиойк бдтеу ! LINBUF ! ------------ ! DEVSPC ! ------------ ! DEFEXT ! ------------ хлбъбфемш уфелб -> ! CSTRNG ! ------------ ойцойк бдтеу тйу.2 ртпзтбнноще ъбртпущ чфптпзп жптнбфб чщъщчбаф зеоетбгйа лпнбодщ енф у лпдпн 375. жптнбф вмплб бтзхнеофпч дмс енф 375 ртедуфбчмео об тйу.3. ---------------------------------- R0 -> AREA: ! жхолгйпобмшощк ! опнет ! ! лпд ! лбобмб ! ! (CODE) ! (CHAN) ! ---------------------------------- ! ARG1 ! ---------------------------------- ! ARG2 ! ---------------------------------- . ---------------------------------- ! ARGN ! ---------------------------------- тйу.3 оелпфптще бтзхнеофщ ртпзтбннощи ъбртпупч нпзхф вщфш прхэеощ. еумй пфухфуфчхеф бтзхнеоф AREA, фп ртедрпмбзбефус юфп по упдетцйфус ч R0. еумй ое хлбъбощ (прхэеощ) лблйе- мйвп йъ бтзхнеофпч пф ARG1 дп ARGN, фп упдетцйнпе уппф- чефуфчхаэйи ьфйн бтзхнеофбн умпч ч вмпле бтзхнеофпч ое йънеосефус. обртйнет, ртй чщрпмоеойй ъбртпуб .PRGREQ AREA,ARG1,ARG2 тезйуфт R0 упдетцйф бдтеу вмплб бтзхнеофпч, чфптпе умпчп упдетцйф ARG1, фтефше - ARG2. ртй чщрпмоеойй ъбртпуб .PRGREQ AREA уфбтыйк вбкф ретчпзп умпчб вмплб бтзхнеофпч упдетцйф жхол- гйпобмшощк лпд. упдетцйнпе дтхзйи умпч вмплб бтзхнеофпч ое йънеосефус. еумй ч ъбртпуе .PRGREQ ,ARG1 прхэео бтзхнеоф AREA, фп ртерпмбзбефус юфп по упдетцйфус ч R0 (жхолгйпобмшощк лпд ч ьфпн умхюбе ч вмпл бтзхнеофпч ое ъбопуйфус). вмпл бтзхнеофпч нпцеф жптнйтпчбфшус нблтпбууенвметпн чп чтенс фтбумсгйй ртпзтбннщ ймй оерпутедуфчеоп рпмшъпчбфе- мен, обртйнет: 1) MOV #ARG1,AREA+2 MOV #ARG2,AREA+4 .PRGREQ #AREA 2) MOV #AREA,R0 .PRGREQ ,#ARG1,#ARG2 3) MOV #AREA,R0 MOV #ARG1,2(R0) MOV #ARG2,4(R0) MOV #CODE*400!CHAN,(R0) .PRGREQ чп чуеи чщыертйчедеоощи ртйнетби пртедемсефус пдйо й фпф це ртпзтбннощк ъбртпу. ч ртйнете, лпфптщк умедхеф ойце, ртйчедео пдйо йъ чпъ- нпцощи урпупвпч жптнйтпчбойс вмплб бтзхнеофпч дмс ртпзтбнн- опзп ъбртпуб .TWAIT. .MCALL .PRINT,.TWAIT START: .TWAIT #EMTBLK .PRINT #MSG BR START EMTBLK: .BYTE 0,24 .WORD TIME TIME: .WORD 0,10.*50 .ASCIZ /юетеъ 10 уелход - реюбфш уппвэеойс/ .END START 2.1. бдтеубгйс бтзхнеофпч чуе бтзхнеофщ ртпзтбннощи ъбртпупч умхцбф ч лбюеуфче претбодб йуфпюойлб лпнбодщ MOV й вмпл бтзхнеофпч дпмцео упдетцбфш оерпутедуфчеооп ъобюеойс бтзхнеофпч. рпьфпнх оепвипдйнп рпнойфш, юфп бтзхнеофщ ртпзтбннощи ъбртпупч дпмцощ вщфш дпрхуфйнщнй ч същле бууенвметб й фпюоп ртедуфбчмсфш фтевхенха чемйюйох. еумй чемйюйоб счмсефус лпоуфбофпк ймй уйнчпмйюеулйн йнеоен рпмшъпчбфемс, фп дпмцео вщфш йурпмшъпчбо оерпутедуфчеоощк нефпд бдтеубгйй (#), обр- тйнет: .PRGREQ #AREA,#4 еумй чемйюйоб счмсефус упдетцйнщн тезйуфтб, фп дпмцоб вщфш йурпмшъпчбоб ноенпойлб тезйуфтб (RN). еумй чемйюйоб счмсефус упдетцйнщн сюеклй рбнсфй, фп дпмцоб вщфш йурпмшъп- чбоб нефлб ьфпк сюеклй, обртйнет: .PRGREQ LIST,NUMBER . . . LIST: .WORD AREA NUMBER: .WORD 4 ртйнеюбойе. ртй чщрпмоеойй ъбртпуб, упдетцйнпе тезйуф- тпч пвэезп объобюеойс, лтпне R0, ое йънеосефус. хлбъбфемш уфелб ое ретехуфбобчмйчбефус. йулмаюеойен счмсефус чщъпч йофетртефбфптб лпнбодопк уфтплй (ъбртпущ .CSIGEN,.CSISPC). 2.2. лмаюечпк бтзхнеоф CODE лмаюечпк бтзхнеоф CODE рпъчпмсеф йурпмшъпчбфш пдйо й фпф це вмпл бтзхнеофпч дмс тбъмйюощи ртпзтбннощи ъбртпупч, йнеаэйи пдой й фе це бтзхнеофщ, оп тбъмйюоще жхолгйпобмшоще лпдщ. йурпмшъпчбойе ьфпзп лмаюечпзп бтзхнеофб хнеошыбеф тбънет ртпзтбннщ й чтенс ее чщрпмоеойс. бтзхнеоф CODE нпцеф йнефш дчб ъобюеойс: CODE=SET (ъбоеуфй жхолгйпобмшощк лпд) й CODE=NOSET (ое ъбопуйфш жхолгйпобмшощк лпд). ртйнет. .WRITW #AREA,#CHAN,#BUFF,#WCNT,#BLK . . . .READW #AREA,CODE=SET . . . 3. чипдоще й чщипдоще дбооще бтзхнеофщ ртпзтбннощи ъбртпупч счмсафус чипдощнй дбо- ощнй дмс нпойфптб RT11. ч фбвм.2 ртйчедеощ йи хумпчоще пвпъобюеойс. ч ьфпн тбъдеме фблце ртйчедеощ оелпфптще пуопчоще рпосфйс, лпфптще йурпмшъхафус ртй пвтбэеойй л нбл- тпвйвмйпфеле. 3.1. опнет лбобмб опнет лбобмб (CHAN) ртедуфбчмсеф упвпк мпзйюеулйк йдеофйжйлбфпт жбкмб й йурпмшъхефус нпойфптпн ртй чщрпмоеойй ъбртбыйчбенщи претбгйк. опнет лбобмб нпцеф йнефш ъобюеойе пф 0 дп 254 (деусфйюопе) (0-376 (чпушнетйюопе)). лбобм у опнетпн 255 (деусфйюопе) теъетчйтхефус дмс уйуфенощи претб- гйк. лбцдщк пфлтщфщк жбкм нпойфпт мпзйюеулй учсъщчбеф у пртедемеоощн лбобмпн (ьменеофпн уфтхлфхтщ нпойфптб, фпюоп пртедемсаэйн жбкм ч претбгйпоопк уйуфене). дмс пвтбэеойс л жбкмх дпуфбфпюоп хлбъбфш опнет уппфчефуфчхаэезп лбобмб. 3.2. вмпл хуфтпкуфчб вмпл хуфтпкуфчб (DBLK) ртедуфбчмсеф упвпк вмпл йожпт- нбгйй ч лпдби RADIX-50, лпфптщк упдетцйф жйъйюеулпе ймй мпзйюеулпе йнс хуфтпкуфчб, йнс й фйр жбкмб. тбънет вмплб - 4 умпчб. ртйнет: .RAD50/DX1/ .RAD50/FIL/ .RAD50/NAM/ .RAD50/TYP/ йнс хуфтпкуфчб, йнс й фйр жбкмб дпмцощ вщфш мечппрте- демеоощнй ч лбцдпн рпме претбодб (ф.е. оерпутедуфчеооп уме- дпчбфш ъб пзтбойюйфемен претбодб дйтелфйчщ .RAD50). дпрхулбефус ъбрйуш вмплб хуфтпкуфчб ч умедхаэен чйде: .RAD50/DX1FILNAMTYP/ ртй ьфпн лбцдпе ртпрхэеоопе рпме претбодб дпмцоп ъбнеосфшус ртпвемпн. фбвмйгб 2 ----------------------------------------------------------- ! хумпчопе ! бтзхнеоф ! !пвпъобюеойе ! ! !---------------------------------------------------------! ! ADDR ! бдтеу; ъобюеойе бдтеуб ъбчйуйф пф йурпмш- ! ! ! ъхенпзп ъбртпуб ! ! AREA ! бдтеу вмплб бтзхнеофпч енф ! ! BLK ! опнет вмплб пфопуйфемшоп обюбмб жбкмб, у ! ! ! лпфптпзп дпмцоб чщрпмосфшус претбгйс ! ! ! ччпдб-чщчпдб ! ! BUF ! бдтеу вхжетб рбнсфй ! ! CBLK ! бдтеу вмплб йъ рсфй умпч, ч лпфптпн итб- ! ! ! ойфус йожптнбгйс п упуфпсойй лбобмб ! ! CHAN ! опнет лбобмб ! ! CRTN ! фпюлб чипдб рпдртпзтбннщ ъбчетыеойс ! ! DBLK ! бдтеу вмплб хуфтпкуфчб ! ! NUM ! юйумп, ъобюеойе лпфптпзп ъбчйуйф пф ! ! ! йурпмшъхенпзп ъбртпуб ! ! WCNT ! уюефюйл умпч; лпмйюеуфчп умпч, лпфптще ! ! ! оепвипдйнп ретедбфш ч ймй йъ вхжетб ртй ! ! ! чщрпмоеойй претбгйй ччпдб-чщчпдб ! ! SEQN ! рпумедпчбфемшощк опнет жбкмб (дмс претбгйк! ! ! у нбзойфопк меофпк) ! ! CHRCNT ! уюефюйл уйнчпмпч ! ! FUNC ! юйумпчпк лпд, пртедемсаэйк чщрпмосенха ! ! ! жхолгйа ! ! JOBBLK ! бдтеу вмплб, упдетцбэезп йнс уйуфенопзп ! ! ! ъбдбойс ч лпдби лпй-7 ! ! JOBDEV ! бдтеу вмплб, упдетцбэезп йнс хуфтпкуфчб й ! ! ! йнс уйуфенопзп ъбдбойс ! ! UNIT ! мпзйюеулйк опнет фетнйобмб ! ----------------------------------------------------------- 3.3. вмпл бтзхнеофпч енф пвэйк чйд вмплб бтзхнеофпч лпнбодщ енф рплбъбо об тйу.4. юефощк вбкф 1-зп умпчб упдетцйф опнет лбобмб, прте- демеоощк ч нблтплпнбоде. еумй опнет лбобмб ое фтевхефус, фп юефощк вбкф упдетцйф 0. оеюефощк вбкф 1-зп умпчб вмплб упдетцйф жхолгйпобмшощк лпд нблтплпнбодщ (лбцдпнх ртпзтбнн- опнх ъбртпух уппфчефуфчхеф учпк жхолгйпобмшощк лпд). пуфбмшоще умпчб вмплб упдетцбф бтзхнеофщ (еумй пой ъбдбощ), пртедемеооще ч нблтплпнбоде. AREA: ----------------------------------------- ! жхолгйпобмшощк ! опнет ! ! лпд ! лбобмб ! !---------------------------------------! ! 1-к бтзхнеоф ! !---------------------------------------! ! 2-пк бтзхнеоф ! !---------------------------------------! . . . ----------------------------------------- ! N-щк бтзхнеоф ! ----------------------------------------- тйу.4 вмпл бтзхнеофпч енф 3.4. рпдртпзтбннщ ъбчетыеойс рпдртпзтбннб ъбчетыеойс упъдбефус рпмшъпчбфемен й чщрпмосефус ртй обуфхрмеойй упвщфйс. упвщфйе нпцеф ъблма- юбфшус ч ъбчетыеойй претбгйй ччпдб-чщчпдб, нпцеф вщфш чщъ- чбоп ртетщчбойен пф чоеыоезп хуфтпкуфчб, йуфеюеойен ъбдбо- опзп йофетчбмб чтенеой й ф.д. об чипде ч рпдртпзтбннх ъбчетыеойс тезйуфт R0 упдетцйф умпчп упуфпсойс лбобмб, б R1 - чпушнетйюощк опнет лбобмб дмс претбгйй. ч тецйне SJ рпдртпзтбннщ ъбчетыеойс счмсафус бууйои- тпоощнй й нпзхф ртетщчбфш дтхз дтхзб. ч тецйнби FB й ин, рпдртпзтбннщ ъбчетыеойс ое ртетщчбаф дтхз дтхзб, б птзбой- ъхафус ч пюетедш. 3.5. фтевпчбойе USR дмс чщрпмоеойс оелпфптщи ртпзтбннощи ъбртпупч оепвип- дйнп, юфпвщ лпнрпоеофб нпойфптб USR обипдймбуш ч претбфйч- опк рбнсфй. фтевпчбойе USR ртпзтбннощн ъбртпубн прйубоп ч фбвм.3. ъбнефйн, юфп ъбртпу CLOSE об хуфтпкуфчби оежбкмпчпк уфтхлфхтщ (LP:,TT:,PC:, й ф.д.) ое фтевхеф обмйюйс USR ч рбнсфй. ртпзтбннб USR ое счмсефус тееофетбвемшопк; еумй USR йурпмшъхефус пдойн ъбдбойен (ч тецйне FB), дтхзпе ъбдбойе, фтевхаэее USR, вхдеф цдбфш ее пучпвпцдеойс. фбвмйгб 3 ------------------------------------------------------------ ! ртпзтбннощк ъбртпу ! фтевпчбойе USR ! ! !------------------------------------- ! ! тецйн SJ ! тецйн FB ! тецйн XM ! ------------------------------------------------------------ ! ! * ! ! ! ! .CDFN ! дб ! оеф ! оеф ! ! 1) ! ! ! ! ! .CLOSE ! дб ! дб ! дб ! ! .CSIGEN ! дб ! дб ! дб ! ! .CSISPC ! дб ! дб ! дб ! ! .DELETE ! дб ! дб ! дб ! ! .DSTATUS ! дб ! дб ! дб ! ! .ENTER ! дб ! дб ! дб ! ! .EXIT ! дб ! дб ! дб ! ! .FETCH/.RELEAS ! дб ! дб ! дб ! ! .GTLIN ! дб ! дб ! дб ! ! .HRESET ! дб ! оеф ! оеф ! ! 2) ! ! ! ! ! .LOCK ! дб ! дб ! дб ! ! .LOOKUP ! дб ! дб ! дб ! ! ! * ! * ! ! ! .QSET ! дб ! дб ! дб ! ! .RENAME ! дб ! дб ! дб ! ! .REOPEN ! оеф ! оеф ! оеф ! ! ! * ! ! ! ! .SRESET ! дб ! оеф ! оеф ! ! 3) ! ! ! ! ! .TLOCK ! дб ! дб ! дб ! ------------------------------------------------------------ 1) еумй лбобм вщм пфлтщф рп .ENTER ; 2) еумй USR обипдйфус ч упуфпсойй учпрйозб; 3) еумй USR ое йурпмшъхефус дтхзйн ъбдбойен. ъбртпущ, рпнеюеооще ч фбвм.3 ъчеъдпюлпк, чуездб фте- вхаф ъбзтхълй опчпк лпрйй USR ретед йи чщрпмоеойен (дбце, еумй USR ч ьфпф нпнеоф обипдйфус ч рбнсфй). 4. уппвэеойс ртй пвтбвпфле ъбртпупч, нпойфпт нпцеф пвобтхцйфш хумп- чйс пыйвпл. ртпзтбнноще ъбртпущ йожптнйтхаф пв ьфпн рпмшъп- чбфемс, йурпмшъхс у-тбътсд, вбкф пыйвпл (52-пк вбкф ч пвмбуфй учсъек уйуфенщ) й реюбфш об фетнйобме уппвэеойк нпойфптб. у-тбътсд пюйэбефус рпуме чщрпмоеойс ъбртпуб й хуфбобчмйчбефус ч умхюбе пыйвлй. дмс пвобтхцеойс пыйвлй ъб ъбртпупн дпмцоб умедпчбфш лпнбодб BCS ймй BCC. лпздб хуфб- опчмео у-тбътсд, вбкф пыйвпл упдетцйф лпд пыйвлй. ртй чпъойлопчеойй уетшеъощи пыйвпл (ч ьфпн умхюбе нпойфпт реюбфбеф уппфчефуфчхаэее уппвэеойе об фетнйобме) хртбчмеойе ретедбефус нпойфптх. дмс бобмйъб рпдпвощи пыйвпл телпнеодхефус йурпмшъпчбфш ртпзтбннощк ъбртпу .SERR. ч ртй- мпцеойй ретеюйумеощ лпдщ пыйвпл ртпзтбннощи ъбртпупч й ртй- юйощ, чщъщчбаэйе ьфй пыйвлй. 5. ртпзтбнноще ъбртпущ ухэеуфчхаф умедхаэйе фйрщ ртпзтбннощи ъбртпупч: - ъбртпущ дмс претбгйк у жбкмбнй; - ъбртпущ дмс птзбойъбгйй ччпдб-чщчпдб дбоощи; - ъбртпущ пвэезп объобюеойс; - ъбртпущ тбуыйтеоопк рбнсфй; - ъбртпущ дмс дтбкчетпч. ч фбвмйге 4 ретеюйумеощ ртпзтбнноще ъбртпущ, лпфптще нпзхф йурпмшъпчбфшус ч мавпн йъ тецйнпч (SJ,FB,XM). ъбртп- ущ, рпнеюеооще ч фбвм.4 уйнчпмбнй "нф", нпцоп йурпмшъпчбфш фпмшлп ртй обмйюйй ч уйуфене нхмшфйфетнйобмшопк рпддетцлй. прйубойе ртпзтбннощи ъбртпупч дмс ртпзтбнн - дтбкчетпч хуфтпкуфч дбефус ч [1]. прйубойе ъбртпупч тбуыйтеоопк рбнсфй дбефус ч [2]. фбвмйгб 4 ------------------------------------------------------------ ! ртпзтбннощк ! лпд ! жхол- ! ! ! ъбртпу ! енф ! гйпо. ! объобюеойе ! ! ! ! лпд ! ! ------------------------------------------------------------ ! .ABTIO ! 374 ! 13 ! ртетщчбеф претбгйй ччпдб-чщ- ! ! ! ! ! чпдб об хлбъбоопн лбобме ! ! .CDFN ! 375 ! 15 ! пртедемсеф дпрпмойфемшоще ! ! ! ! ! лбобмщ дмс претбгйк ччпдб- ! ! ! ! ! чщчпдб ! ! .CHAIN ! 374 ! 10 ! ретедбеф хртбчмеойе дтхзпк ! ! ! ! ! жпопчпк ртпзтбнне ! ! .CLOSE ! 374 ! 6 ! ъблтщчбеф лбобм й пучпвпцдбеф! ! ! ! ! езп дмс йурпмшъпчбойс ч ! ! ! ! ! дтхзйи претбгйси ! ! .CMKT ! 375 ! 23 ! боохмйтхеф пдйо ймй оеулпмшлп! ! ! ! ! ъбртпупч .MRKT ! ! .CSIGEN ! 344 ! - ! чщъщчбеф тбвпфх йофетртефбфп-! ! ! ! ! тб лпнбодопк уфтплй ч пвэен ! ! ! ! ! тецйне ! ! .CSISPC ! 345 ! - ! чщъщчбеф тбвпфх йофетртефбфп-! ! ! ! ! тб лпнбодопк уфтплй ч уре- ! ! ! ! ! гйбмшопн тецйне ! ! .CSTAT ! 375 ! 27 ! рпъчпмсеф рпмхюйфш йожптнбгйа! ! ! ! ! п упуфпсойй пртедемеоопзп ! ! ! ! ! лбобмб ! ! .CTIMIO ! - ! - ! йурпмшъхефус ч ртпзтбннби - ! ! ! ! ! дтбкчетби хуфтпкуфч дмс пфне-! ! ! ! ! неощ ъбртпупч, фтевхаэйи об- ! ! ! ! ! мйюйс фбкнетб ! ! .DATE ! 374 ! 12 ! ретеущмбеф фелхэха дбфх ч ! ! ! ! ! тезйуфт R0 ! ! .DELETE ! 375 ! 0 ! уфйтбеф жбкм у фпнб хлбъбо- ! ! ! ! ! опзп хуфтпкуфчб ! ! .DRAST: ! ! ! пртедемсеф обюбмп рпдртпзтбн-! ! ! ! ! нщ пвтбвпфлй ртетщчбойк ! ! .DRBEG ! ! ! упъдбеф фбвмйгх ъбзпмпчлб ! ! ! ! ! дтбкчетб ! ! .DRBOT ! ! ! пртедемсеф обюбмп ретчйюопзп ! ! ! ! ! ъбзтхъюйлб ч дтбкчете ! ! .DRDEF ! ! ! пртедемсеф рбтбнефтщ дтбкчетб! ! ! ! ! й хуфтпкуфчб ! ! .DREND ! ! ! жптнйтхеф фбвмйгх бдтеупч ! ! ! ! ! рпдртпзтбнн нпойфптб; пртеде-! ! ! ! ! мсеф мпзйюеулйк лпоег фелуфб ! ! ! ! ! дтбкчетб ! ! .DRFIN ! ! ! ретедбеф хртбчмеойе нпойфптх ! ! ! ! ! рп ъбчетыеойй пвумхцйчбойс ! ! ! ! ! ьменеофб пюетедй ! ! .DRSET ! ! ! йурпмшъхефус дмс жптнйтпчбойс! ! ! ! ! фбвмйг рбтбнефтпч дтбкчетб ! ! .DRVTB ! ! ! йурпмшъхефус дмс прйубойс ! ! ! ! ! фбвмйгщ челфптпч ртетщчбойк ! ! ! ! ! й рпдртпзтбнн йи пвтбвпфлй ! ! .DSTATUS ! 342 ! - ! рпъчпмсеф рпмхюйфш йожптнбгйа! ! ! ! ! п упуфпсойй пртедемеоопзп ! ! ! ! ! хуфтпкуфчб ! ! .ENTER ! 375 ! 2 ! теъетчйтхеф пвмбуфш об фпне ! ! ! ! ! хлбъбоопзп хуфтпкуфчб дмс ! ! ! ! ! упъдбойс опчпзп жбкмб ! ! .EXIT ! 350 ! - ! ъбчетыбеф чщрпмоеойе ртпзтбн-! ! ! ! ! нщ рпмшъпчбфемс й ретедбеф ! ! ! ! ! хртбчмеойе лмбчйбфхтопнх ! ! ! ! ! нпойфптх ! ! .FETCH ! 343 ! - ! ъбзтхцбеф дтбкчет хуфтпкуфчб ! ! .FPROT ! 375 ! 43 ! хуфбобчмйчбеф (пфнеосеф) ! ! ! ! ! ъбэйфх жбкмб ! ! .GTIM ! 375 ! 21 ! пртедемсеф фелхэее чтенс дос ! ! .GTJB ! 375 ! 20 ! пртедемсеф рбтбнефтщ чщрпмос-! ! ! ! ! енпзп ъбдбойс ! ! .GTLIN ! 345 ! - ! ртйойнбеф чипдоха уфтплх у ! ! ! ! ! фетнйобмб ймй йъ лпучеоопзп ! ! ! ! ! жбкмб ! ! .GVAL ! 376 ! 34 ! ретеущмбеф ч R0 упдетцйнпе ! ! ! ! ! хлбъбоопк сюеклй нпойфптб ! ! .HERR ! 374 ! 5 ! пфнеосеф декуфчйе ъбртпуб ! ! ! ! ! .SERR ! ! .HRESET ! 357 ! - ! ртелтбэбеф чуе претбгйй ! ! ! ! ! ччпдб-чщчпдб й чщрпмосеф ! ! ! ! ! жхолгйй ъбртпуб .SRESET ! ! .INTEN ! - ! - ! уппвэбеф нпойфптх п фпн, юфп ! ! ! ! ! ртпйъпымп ртетщчбойе пф ! ! ! ! ! хуфтпкуфчб й хуфбобчмйчбеф ! ! ! ! ! ртйптйфеф ртпгеууптб об уп- ! ! ! ! ! пфчефуфчхаэйк хтпчеош ! ! .LOCK ! 346 ! - ! дембеф ртпзтбннх USR теъй- ! ! ! ! ! деофопк ч рбнсфй дп феи рпт, ! ! ! ! ! рплб ое вхдеф чщрпмоео .EXIT ! ! ! ! ! ймй .UNLOCK . еумй оепвипдй- ! ! ! ! ! нп, учпрйтхеф ртпзтбннх ! ! ! ! ! рпмшъпчбфемс ! ! .LOOKUP ! 375 ! 1 ! пфлтщчбеф ухэеуфчхаэйк жбкм ! ! ! ! ! дмс ччпдб й/ймй чщчпдб об ! ! ! ! ! хлбъбоопн лбобме ! ! .MFPS ! - ! - ! чщвйтбеф упдетцйнпе уур ! ! .MRKT ! 375 ! 22 ! рмбойтхеф ъбрхул рпдртпзтбннщ! ! ! ! ! ъбчетыеойс юетеъ пртедемео- ! ! ! ! ! ощк йофетчбм чтенеой ! ! .MTATCH(MT) ! 374 ! 37 ! хуфбобчмйчбеф учсъш нецдх ! ! ! ! ! ъбдбойен й пртедемеоощн фет- ! ! ! ! ! нйобмпн ! ! .MTDTCH(MT) ! 374 ! 37 ! ртетщчбеф учсъш хлбъбоопзп ! ! ! ! ! фетнйобмб у ъбдбойен й пучп- ! ! ! ! ! впцдбеф езп дмс йурпмшъпчбойс! ! ! ! ! дтхзйн ъбдбойен ! ! .MTGET(MT) ! 374 ! 37 ! пртедемсеф упуфпсойе хлбъбо- ! ! ! ! ! опзп фетнйобмб ! ! .MTIN(MT) ! 374 ! 37 ! декуфчхеф ч нхмшфйфетнйобмш- ! ! ! ! ! опн тецйне бобмпзйюоп .TTYIN ! ! .MTOUT(MT) ! 374 ! 37 ! декуфчхеф ч нхмшфйфетнйобмш- ! ! ! ! ! опн тецйне бобмпзйюоп .TTYOUT! ! .MTPRNT(MT) ! 374 ! 32 ! декуфчхеф ч нхмшфйфетнйобмш- ! ! ! ! ! опн тецйне бобмпзйюоп .PRINT ! ! .MTPS ! - ! ! хуфбобчмйчбеф уур ! ! .MTRCTD(MT) ! 374 ! 37 ! пвеуреюйчбеф чщчпд об хлбъбо-! ! ! ! ! ощк фетнйобм ! ! .MTSET(MT) ! 374 ! 37 ! хуфбобчмйчбеф й нпдйжйгйтхеф ! ! ! ! ! ибтблфетйуфйлй фетнйобмб ч ! ! ! ! ! нхмшфйфетнйобмшопн тецйне ! ! .MTSTAT(MT) ! 375 ! 37 ! ретеущмбеф ртпзтбнне йожптнб-! ! ! ! ! гйа п упуфпсойй нхмшфйфетнй- ! ! ! ! ! обмшопк уйуфенщ ! ! .PEEK ! 375 ! 34 ! пртедемсеф упдетцйнпе сюеел ! ! ! ! ! рбнсфй ! ! .POKE ! 375 ! 34 ! йънеосеф упдетцйнпе сюеел ! ! ! ! ! рбнсфй ! ! .PRINT ! 351 ! - ! чщдбеф об реюбфш уфтплх уйн- ! ! ! ! ! чпмпч лпй-7 ! ! .PURGE ! 374 ! 3 ! пучпвпцдбеф лбобм ! ! .PVAL ! 375 ! 34 ! йънеосеф упдетцйнпе сюеел ! ! ! ! ! нпойфптб ! ! .QELDF ! - ! - ! пртедемсеф ноенпойюеулйе ! ! ! ! ! пвпъобюеойс дмс ьменеофпч ! ! ! ! ! пюетедй ччпдб-чщчпдб ! ! .QSET ! 353 ! - ! хчемйюйчбеф тбънет пюетедй ! ! ! ! ! ччпдб-чщчпдб дмс нпойфптб ! ! .RCTRLD ! 355 ! - ! пвеуреюйчбеф чщчпд об фетнй- ! ! ! ! ! обм ! ! .READ ! 375 ! 10 ! ретедеф дбооще рп хлбъбоопнх ! ! ! ! ! лбобмх ч вхжет рбнсфй й чпъ- ! ! ! ! ! чтбэбеф хртбчмеойе ртпзтбнне ! ! ! ! ! рпмшъпчбфемс, лбл фпмшлп ъб- ! ! ! ! ! ртпу об юфеойе дбоощи вхдеф ! ! ! ! ! рпуфбчмео ч пюетедш ччпдб- ! ! ! ! ! чщчпдб ! ! .READC ! 375 ! 10 ! ретедеф дбооще рп хлбъбоопнх ! ! ! ! ! лбобмх ч вхжет рбнсфй й чпъ- ! ! ! ! ! чтбэбеф хртбчмеойе ртпзтбнне ! ! ! ! ! рпмшъпчбфемс, лбл фпмшлп ъб- ! ! ! ! ! ртпу об юфеойе дбоощи вхдеф ! ! ! ! ! рпуфбчмео ч пюетедш ччпдб- ! ! ! ! ! чщчпдб. рпуме плпоюбойс юфе- ! ! ! ! ! ойс хртбчмеойе ретедбефус ! ! ! ! ! рпдртпзтбнне ъбчетыеойс ! ! .READW ! 375 ! 10 ! ретедеф дбооще рп хлбъбоопнх ! ! ! ! ! лбобмх ч вхжет рбнсфй й чпъ- ! ! ! ! ! чтбэбеф хртбчмеойе ртпзтбнне ! ! ! ! ! рпмшъпчбфемс рпуме плпоюбойс ! ! ! ! ! претбгйй ! ! .RELEAS ! 343 ! - ! хдбмсеф дтбкчет хуфтпкуфчб ! ! ! ! ! йъ рбнсфй ! ! .RENAME ! 375 ! 4 ! ретейнеопчщчбеф жбкм. оедп- ! ! ! ! ! рхуфйн ч претбгйси у нбзойф- ! ! ! ! ! опк меофпк ! ! .REOPEN ! 375 ! 6 ! пвеуреюйчбеф чпууфбопчмеойе ! ! ! ! ! рбтбнефтпч, лпфптще ъбрпнйоб-! ! ! ! ! мйуш рп ъбртпух .SAVESTATUS ! ! ! ! ! й рпчфптоп пфлтщчбеф лбобм ! ! ! ! ! дмс ччпдб-чщчпдб ! ! .SAVESTATUS ! 375 ! 5 ! ъбрпнйобеф рбтбнефтщ упуфпс- ! ! ! ! ! ойс пфлтщфпзп жбкмб ч пртеде-! ! ! ! ! меоопк пвмбуфй рбнсфй й пучп-! ! ! ! ! впцдбеф лбобм ! ! .SCCA ! 374 ! 35 ! рпъчпмсеф вмплйтпчбфш чщрпм- ! ! ! ! ! оеойе лпнбодщ ух/у ! ! .SDTTM ! 375 ! 40 ! хуфбобчмйчбеф уйуфеноха дбфх ! ! ! ! ! й/ймй чтенс ! ! .SERR ! 374 ! 4 ! вмплйтхеф ртетщчбойе ртпзтбн-! ! ! ! ! нщ ртй пвобтхцеойй нпойфптпн ! ! ! ! ! пыйвлй ! ! .SETTOP ! 354 ! - ! пртедемсеф четиоаа зтбойгх ! ! ! ! ! рбнсфй дмс чщрпмосенпзп ъб- ! ! ! ! ! дбойс ! ! .SFDAT ! 375 ! 42 ! йънеосеф дбфх упъдбойс жбкмб ! ! .SFPA ! 375 ! 30 ! хуфбчбчмйчбеф ч ртпзтбнне ! ! ! ! ! рпмшъпчбфемс бдтеу рпдртпз- ! ! ! ! ! тбннщ пвтбвпфлй ртетщчбойс ! ! ! ! ! пф ртпгеууптб рмбчбаэек ! ! ! ! ! ъбрсфпк ! ! .SPFUN ! 375 ! 32 ! чщрпмосеф урегйбмшоще жхолгйй! ! ! ! ! дмс хуфтпкуфч ! ! .SRESET ! 352 ! - ! чпууфбобчмйчбеф лбобмщ ччпдб-! ! ! ! ! чщчпдб й хдбмсеф дтбкчетщ ! ! ! ! ! хуфтпкуфч йъ рбнсфй ! ! .SYNCH ! - ! - ! пвеуреюйчбеф чпънпцопуфш чщ- ! ! ! ! ! рпмоеойс ртпзтбннощи ъбртпупч! ! ! ! ! ч рпдртпзтбнне пвтбвпфлй ! ! ! ! ! ртетщчбойс ! ! .TIMIO ! - ! - ! рмбойтхеф ъбрхул рпдртпзтбннщ! ! ! ! ! ъбчетыеойс юетеъ ъбдбоощк ! ! ! ! ! йофетчбм чтенеой ! ! .TLOCK ! 374 ! 7 ! пртедемсеф, йурпмшъхефус мй ! ! ! ! ! USR ч дбоощк нпнеоф дтхзйн ! ! ! ! ! ъбдбойен. еумй USR ое йурпмш-! ! ! ! ! ъхефус, фп чщрпмосефус .LOCK ! ! .TRPSET ! 375 ! 3 ! хуфбобчмйчбеф пвтбвпфлх рте- ! ! ! ! ! тщчбойк рп 4-пнх ймй 10-пнх ! ! ! ! ! челфптбн ч ртпзтбнне рпмшъп- ! ! ! ! ! чбфемс ! ! .TTINR ! 340 ! - ! ретедбаф пдйо уйнчпм йъ вх- ! ! .TTYIN ! ! ! жетб фетнйобмб ч тезйуфт R0 ! ! .TTYOUT ! 341 ! - ! ретедбаф пдйо уйнчпм йъ те- ! ! .TTOUTR ! ! ! зйуфтб R0 ч вхжет фетнйобмб ! ! .TWAIT ! 375 ! 24 ! ртйпуфбобчмйчбеф чщрпмоеойе ! ! ! ! ! ъбдбойс об хлбъбоощк йофетчбм! ! ! ! ! чтенеой ! ! .UNLOCK ! 347 ! - ! пучпвпцдбеф ртпзтбннх USR, ! ! ! ! ! еумй тбоее вщм чщрпмоео ъбр- ! ! ! ! ! тпу .LOCK й, еумй оепвипдйнп,! ! ! ! ! чопчш ъбзтхцбеф ртпзтбннх ! ! ! ! ! рпмшъпчбфемс ! ! .WAIT ! 374 ! 0 ! пцйдбеф ъбчетыеойс претбгйй ! ! ! ! ! ччпдб-чщчпдб об хлбъбоопн ! ! ! ! ! лбобме ! ! .WRITC ! 375 ! 11 ! ретедбеф дбооще рп хлбъбооп- ! ! ! ! ! нх лбобмх об хуфтпкуфчп й ! ! ! ! ! чпъчтбэбеф хртбчмеойе ртпз- ! ! ! ! ! тбнне рпмшъпчбфемс лбл фпмшлп! ! ! ! ! ъбртпу об ретедбюх дбоощи вх-! ! ! ! ! деф рпуфбчмео ч пюетедш ! ! ! ! ! ччпдб-чщчпдб. рпуме плпоюбойс! ! ! ! ! ъбрйуй, хртбчмеойе ретедбефус! ! ! ! ! рпдртпзтбнне ъбчетыеойс ! ! .WRITE ! 375 ! 11 ! ретедбеф дбооще рп хлбъбооп- ! ! ! ! ! нх лбобмх об хуфтпкуфчп й ! ! ! ! ! чпъчтбэбеф хртбчмеойе ртпз- ! ! ! ! ! тбнне рпмшъпчбфемс лбл фпмшлп! ! ! ! ! ъбртпу об ретедбюх дбоощи вх-! ! ! ! ! деф рпуфбчмео ч пюетедш ! ! ! ! ! ччпдб-чщчпдб ! ! .WRITW ! 375 ! 11 ! ретедбеф дбооще рп хлбъбооп- ! ! ! ! ! нх лбобмх об хуфтпкуфчп й ! ! ! ! ! чпъчтбэбеф хртбчмеойе ртпз- ! ! ! ! ! тбнне рпмшъпчбфемс рпуме ! ! ! ! ! плпоюбойс ретедбюй дбоощи ! ------------------------------------------------------------ фбвмйгб 5 ------------------------------------------------------------ ! ртпзтбннощк ! лпд ! жхол- ! ! ! ъбртпу ! енф ! гйпо. ! объобюеойе ! ! ! ! лпд ! ! ------------------------------------------------------------ ! .CHCOPY ! 375 ! 13 ! пфлтщчбеф лбобм дмс ччпдб й ! ! ! ! ! мпзйюеулй учсъщчбеф езп у ! ! ! ! ! пфлтщфщн лбобмпн дтхзпзп ! ! ! ! ! ъбдбойс ! ! .CNTXSW ! 375 ! 33 ! пртедемсеф сюеклй рбнсфй дмс ! ! ! ! ! претбгйй ретелмаюеойс лпо- ! ! ! ! ! фелуфб ! ! .CRAW(XM) ! 374 ! 36 ! упъдбеф чйтфхбмшопе бдтеуопе ! ! ! ! ! плоп ! ! .CRRG(XM) ! 374 ! 36 ! упъдбеф дйобнйюеулха пвмбуфш ! ! ! ! ! жйъйюеулпк рбнсфй ! ! .DEVICE ! 375 ! 14 ! рпъчпмсеф ъбртефйфш ртетщчб- ! ! ! ! ! ойе пф хуфтпкуфчб ч тецйне ! ! ! ! ! FB рпуме плпоюбойс чщрпмоеойс! ! ! ! ! ртпзтбннщ ! ! .ELAW(XM) ! 374 ! 36 ! боохмйтхеф чйтфхбмшопе бдтеу-! ! ! ! ! опе плоп ! ! .ELRG(XM) ! 374 ! 36 ! боохмйтхеф дйобнйюеулха пв- ! ! ! ! ! мбуфш жйъйюеулпк рбнсфй й ! ! ! ! ! дембеф ее учпвпдопк дмс йу- ! ! ! ! ! рпмшъпчбойс дтхзйн ъбдбойен ! ! .GMCX(XM) ! 374 ! 36 ! ретеущмбеф ртпзтбнне йожпт- ! ! ! ! ! нбгйа п упуфпсойй пртедемео- ! ! ! ! ! опзп плоб ! ! .MAP(XM) ! 374 ! 36 ! пфпвтбцбеф ртедчбтйфемшоп ! ! ! ! ! упъдбоопе плоп чйтфхбмшопзп ! ! ! ! ! бдтеуб ! ! .MWAIT ! 374 ! 11 ! ретечпдйф фелхэее ъбдбойе ч ! ! ! ! ! упуфпсойе пцйдбойс дп ъбчет- ! ! ! ! ! ыеойс ретедбюй дбоощи ! ! .PROTECT ! 375 ! 31 ! ъблтермсеф пдйо йъ челфптпч ! ! ! ! ! (бдтеуб пф 0 дп 476) ъб дбо- ! ! ! ! ! ощн ъбдбойен ! ! .RCVD ! 375 ! 26 ! пухэеуфчмсаф ртйен уппвэеойк ! ! .RCVDC ! ! ! ймй дбоощи, ретедбчбенщи дтх-! ! .RCVDW ! ! ! зйн ъбдбойен ч тецйне FB. ! ! ! ! ! бобмпзйюощ ъбртпубн .READ, ! ! ! ! ! .READC,.READW ! ! .RDBBK(XM) ! - ! - ! упъдбеф вмпл пртедемеойс ! ! ! ! ! пвмбуфй ! ! .RDBDF(XM) ! - ! - ! пртедемсеф ноенпойюеулйе ! ! ! ! ! пвпъобюеойс дмс вмплб пртеде-! ! ! ! ! ойс пвмбуфй ! ! .RSUM ! 374 ! 2 ! чпъпвопчмсеф чщрпмоеойе ъбдб-! ! ! ! ! ойс, лпфптпе вщмп ртетчбоп ! ! ! ! ! рп ъбртпух .SPND ! ! .SDAT ! 375 ! 25 ! пухэеуфчмсаф ретедбюх уппвэе-! ! .SDATC ! ! ! ойк ймй дбоощи дтхзпк ! ! .SDATW ! ! ! ртпзтбнне. бобмпзйюощ ъбртп- ! ! ! ! ! убн .WRITE,.WRITC,.WRITW ! ! .SPCPS ! 375 ! 41 ! рпъчпмсеф йънеойфш бдтеу ! ! ! ! ! чпъчтбфб йъ ртетщчбойс ч рпд-! ! ! ! ! ртпзтбнне ъбчетыеойс ! ! .SPND ! 374 ! 1 ! ртйпуфбобчмйчбеф чщрпмоеойе ! ! ! ! ! ъбдбойс ! ! .UNMAP(XM) ! 374 ! 36 ! пфнеосеф декуфчйе ъбртпуб ! ! ! ! ! .MAP ! ! .UNPROTECT ! 374 ! 31 ! пфнеосеф декуфчйе ъбртпуб ! ! ! ! ! .PROTECT ! ! .WDBBK(XM) ! - ! - ! упъдбеф вмпл пртедемеойс плоб! ! .WDBDF(XM) ! - ! - ! пртедемсеф ноенпойюеулйе ! ! ! ! ! пвпъобюеойс дмс вмплб пртеде-! ! ! ! ! меойс плоб ! ------------------------------------------------------------ 5.1. ртпзтбнноще ъбртпущ дмс претбгйк у жбкмбнй 5.1.1. .CHCOPY (тецйн FB,XM) ъбртпу .CHCOPY пфлтщчбеф лбобм дмс ччпдб дбоощи й мпзйюеулй учсъщчбеф езп у лбобмпн дтхзпзп ъбдбойс пфлтщфщн дмс ччпдб ймй чщчпдб. ъбртпу нпцеф йурпмшъпчбфшус пуопчопк, жпопчпк ртпзтбннбнй, б фблце уйуфенощн ъбдбойен. ъбртпу .CHCOPY дпрхуфйн фпмшлп дмс жбкмпч, лпфптще обипдсфус об дйулби; пдоблп уйуфенб ое пвобтхцйф пыйвлй, еумй йурпмш- ъхефус дтхзпе хуфтпкуфчп. дмс фпзп, юфпвщ ъблтщфш лбобм, пфлтщфщк рп .CHCOPY оепвипдйнп йурпмшъпчбфш ъбртпущ .CLOSE ймй .PURGE. жптнбф нблтплпнбодщ: .CHCOPY AREA,CHAN,OCHAN[,JOBBLK] зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; CHAN - опнет лбобмб, йурпмшъхенпзп ъбдбойен дмс юфеойс дбоощи; OCHAN - опнет лбобмб дтхзпзп ъбдбойс; JOBBLK - бдтеу вмплб йъ фтеи умпч, упдетцбэезп мпзй- юеулпе йнс ъбдбойс. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,13 .WORD OCHAN .WORD JOBBLK ртйнет. ;ртйнет упуфпйф йъ дчхи ртпзтбнн. ретчбс йъ ртпзтбнн ;(пуопчобс) чщрпмосеф ретедбюх дбоощи чп чфптха - ;жпопчха ртпзтбннх. .TITLE CHCOPF.MAC ;пуопчобс ртпзтбннб .MCALL .ENTER,.PRINT,.SDATW,.RCVDW,.CLOSE,.WRITW .MCALL .EXIT STARTF: MOV #AREA,R5 .ENTER R5,#0,#FILE,#5 ;упъдбфш жбкм .WRITW R5,#0,#RECRD,#256.,#4 ;ъбрйубфш вмпл BCS ENTERR .SDATW R5,#BUFR,#2 ;ретедбфш уппвыеойе ; . .RCVDW R5,#BUFR,#1 .CLOSE #0 .PRINT #FEXIT .EXIT ENTERR: .PRINT #ERMSG .EXIT FILE: .RAD50 /DK QUFILE/ .RAD50 /TMP/ AREA: .BLKW 5 BUFR: .WORD 0 ;опнет лбобмб .WORD 4 ;опнет вмплб RECRD: .BLKW 256. ERMSG: .ASCIZ /пыйвлб .ENTER/ FEXIT: .ASCIZ /лпоег пуопчопк ртпзтбннщ/ .END STARTF .TITLE CHCOPB.MAC ;жпопчбс ртпзтбннб .MCALL .CHCOPY,.RCVDW,.READW,.EXIT,.PRINT,.SDATW STARTB: MOV #AREA,R5 .RCVDW R5,#MSG,#2 ;рпмхюйфш уппвэеойе BCS 1$ .CHCOPY R5,#0,MSG+2 ;опнет лбобмб йъ MSG+2 BCS 2$ .READW R5,#0,#BUFF,#256.,MSG+4 ;юйфбфш вмпл BCS 3$ ; . .SDATW R5,#MSG,#1 .PRINT #BEXIT .EXIT 1$: MOV #NOJOB,R0 BR 4$ 2$: MOV #NOCH,R0 BR 4$ 3$: MOV #RDERR,R0 4$: .PRINT .EXIT AREA: .BLKW 5 MSG: .BLKW 3 ;вхжет дмс уппвэеойс BUFF: .BLKW 256. BEXIT: .ASCIZ /лпоег жпопчпк ртпзтбннщ/ NOJOB: .ASCIZ /оеф пуопчопзп ъбдбойс/ NOCH: .ASCIZ /ое пфлтщф лбобм дмс пуопчопзп ъбдбойс/ RDERR: .ASCIZ /пыйвлб юфеойс/ .END STARTB 5.1.2. .CLOSE ъбртпу .CLOSE ъбчетыбеф декуфчйе об хлбъбоопн лбобме й пучпвпцдбеф езп дмс йурпмшъпчбойс ч дтхзпк претбгйй. дмс чщрпмоеойс ъбртпуб дтбкчет уппфчефуфчхаэезп хуфтпкуфчб дпм- цео обипдйфшус ч рбнсфй. жптнбф нблтплпнбодщ .CLOSE CHAN жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,6 дмс фпзп, юфпвщ удембфш жбкм рпуфпсоощн об фпне оепв- ипдйнп об уппфчефуфчхаэен лбобме, пфлтщфпн дмс чщчпдб, чщрпмойфш ъбртпу .CLOSE. ъбртпу .CLOSE об оепфлтщфпн лбобме йзоптйтхефус. .CLOSE, чщрпмосенщк об лбобме, лпфптщк вщм пфлтщф рп .ENTER чщъщчбеф лпттелфйтпчлх уртбчпюойлб хуфтпкуфчб дмс пртедемеойс жбкмб лбл рпуфпсоопзп об ьфпн хуфтпкуфче. еумй жбкм пфлтщф рп .LOOKUP, фп лпттелфйтпчлй уртбчпюойлб ое ртпйуипдйф. еумй хуфтпкуфчп, учсъбоопе у хлбъбоощн лбобмпн, хце упдетцйф жбкм у фен це йнеоен й фйрпн, юфп й чопчш упъдбо- ощк жбкм, фп уфбтбс лпрйс жбкмб уфйтбефус, лпздб опчщк жбкм уфбопчйфус рпуфпсоощн. еумй об хуфтпкуфче хце ухэеуфчхеф ъбэйэеоощк жбкм у фен це йнеоен, фп фелхэйк жбкм ъблтщчбефус, оп рпсчмсафус дчб жбкмб у пдйоблпчщнй йнеобнй. ртйнеюбойе. нпойфпт йожптнйтхеф ртпзтбннх рпмшъпчбфемс пв пыйвле ртй чщрпмоеойй ъбртпуб .CLOSE фпмшлп ч фпн умх- юбе, еумй дп ьфпзп вщм чщрпмоео ъбртпу .SERR. ртйнет йурпмшъпчбойс .CLOSE ун. ч прйубойй ъбртпуб .CSISPC. 5.1.3. .DELETE ъбртпу .DELETE хдбмсеф жбкм йъ уртбчпюойлб хлбъбоопзп хуфтпкуфчб. .DELETE оедпрхуфйн дмс нбзойфощи меоф. жптнбф нблтплпнбодщ: .DELETE AREA,CHAN,DBLK зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; DBLK - бдтеу вмплб хуфтпкуфчб, упдетцбэезп урегйжйлб- гйа хдбмсенпзп жбкмб. ртйнеюбойс: 1. пвтбэеойе л пфлтщфпнх лбобмх ртйчпдйф л пыйвле; 2. хдбмеоощк жбкм ч мйуфйозе уртбчпюойлб хуфтпкуфчб вхдеф прйубо лбл оейурпмшъхенбс пвмбуфш (UNUSED) фпзп це тбънетб; 3. ъбртпу .DELETE об хуфтпкуфчби оежбкмпчпк уфтхлфхтщ йзоптйтхефус; 4. ртй чщрпмоеойй .DELETE оепвипдйнп, юфпвщ дтбкчет уппфчефуфчхаэезп хуфтпкуфчб обипдймус ч рбнсфй; 5. рпуме чщрпмоеойс .DELETE, хлбъбоощк лбобм пучпвпц- дбефус дмс дбмшоекыезп йурпмшъпчбойс. ртйнет йурпмшъпчбойс .DELETE ун. ч прйубойй ъбртпуб .CSISPC. 5.1.4. .ENTER ъбртпу .ENTER теъетчйтхеф пвмбуфш об пртедемеоопн хуф- тпкуфче й ъбопуйф ч уртбчпюойл хуфтпкуфчб ъбрйуш п упъдбойй чтенеоопзп жбкмб. рп ъбртпух .ENTER нпойфпт йдеофйжйгйтхеф опнет лбобмб, пртедемеоощк ч ъбртпуе, у хлбъбоощн жбкмпн. ъбнефйн, юфп еумй ртпзтбннб йнееф пчетмекоха уфтхлфхтх, фп 15-к лбобм йурпмшъхефус пчетмекощн дтбкчетпн й ое дпмцео нпдйжйгйтпчбфшус ртпзтбннпк рпмшъпчбфемс. жптнбф нблтплпнбодщ: .ENTER AREA,CHAN,DBLK,LEN[,SEQN] зде AREA - бдтеу вмплб йъ 4-и умпч бтзхнеофпч енф; DBLK - бдтеу вмплб хуфтпкуфчб, ч лпфптпн прйубо упъдб- чбенщк жбкм; LEN - тбънет жбкмб; (ун.фбвм.6); SEQN - рпумедпчбфемшощк опнет жбкмб дмс нбзойфопк мео- фщ; ъобюеойс бтзхнеофб SEQN й уппфчефуфчхаэйе йн декуфчйс нпойфптб прйубощ ч фбвм.7. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,2 .WORD DBLK .WORD LEN .WORD SEQN фбвмйгб 6 ------------------------------------------------------------ ! ъобюеойе ! декуфчйе нпойфптб ! ! бтзхнеофб ! ! !----------------------------------------------------------- ! 0 ! пфчпдйф дмс жбкмб рпмпчйох обйвпмшыек ! ! ! учпвпдопк пвмбуфй ймй рпмопуфша чфптха рп ! ! ! чемйюйое учпвпдоха пвмбуфш об фпне, ч ъб- ! ! ! чйуйнпуфй пф фпзп, лблбс йъ ойи впмшые ! ! н ! пфчпдйф дмс жбкмб н вмплпч ! ! -1 ! пфчпдйф дмс жбкмб обйвпмшыха учпвпдоха пв- ! ! ! мбуфш об фпне ! ------------------------------------------------------------ фбвмйгб 7 ------------------------------------------------------------ ! ъобюеойе ! декуфчйе нпойфптб ! ! бтзхнеофб ! ! ------------------------------------------------------------ ! 0 ! ретенбфщчбеф нбзойфоха меофх й ртпйъчпдйф ! ! ! рпйул нефлй LEOT (мпзйюеулйк лпоег меофщ) ! ! N ! хуфбобчмйчбеф нбзойфоха меофх ч рпмпцеойе, ! ! ! уппфчефуфчхаэее жбкмх у рпумедпчбфемшощн ! ! ! опнетпн N ! ! -1 ! ртпйъчпдйф рпйул LEOT ! ! -2 ! ретенбфщчбеф нбзойфоха меофх й ртпйъчпдйф ! ! ! рпйул LEOT ймй жбкмб у фен це йнеоен, юфп ! ! ! й чопчш упъдбчбенщк жбкм ! ------------------------------------------------------------ жбкм, упъдбоощк рп .ENTER ое счмсефус рпуфпсоощн дп феи рпт, рплб об уппфчефуфчхаэен лбобме ое вхдеф чщрпмоео ъбртпу .CLOSE. ъбртпущ .LOOKUP й .SAVESTATUUS оедекуфчй- фемшощ дмс жбкмпч, лпфптще ое счмсафус рпуфпсоощнй. пдоблп юфеойе фблпзп жбкмб чпънпцоп рпутедуфчпн пвтбэеойс л опнетх уппфчефуфчхаэезп вмплб. еумй об уппфчефуфчхаэен лбобме чщрпмосефус .CLOSE, фп мавпк ухэеуфчхаэйк об фпне рпуфпсо- ощк, оеъбэйэеоощк жбкм у фен це йнеоен й фйрпн уфйтбефус й опчщк жбкм уфбопчйфус рпуфпсоощн. ипфс пвмбуфш дмс жбкмб теъетчйтхефус ртй чщрпмоеойй .ENTER, жблфйюеулбс дмйоб жбк- мб пртедемсефус рпуме чщрпмоеойс .CLOSE. лбцдпе ъбдбойе нпцеф йнефш дп 255 пдопчтенеооп пфлтщ- фщи жбкмпч. еумй фтевхефус, чуе 255 жбкмпч нпзхф вщфш пфл- тщфщ дмс чщчпдб рпутедуфчпн .ENTER. дмс чщрпмоеойс .ENTER оепвипдйнп, юфпвщ дтбкчет уппфчефуфчхаэезп хуфтпкуфчб вщм ч рбнсфй. рпуме чщрпмоеойс .ENTER тезйуфт R0 вхдеф упдетцбфш тбънет пвмбуфй фпнб, пфчедеоощк дмс упъдбойс опчпзп жбкмб. ртйнет. .TITLE ENTER.MAC ;ч умедхаэен ртйнете у йурпмшъпчбойен ъбртпуб .ENTER ;чщрпмосефус лпрйтпчбойе жбкмб ENTER.SAV об хуфтпкуфчп ;DK:. .MCALL .LOOKUP,.ENTER,.WRITW,.READW,.CLOSE .MCALL .PRINT,.EXIT ERRBYT = 52 START: .LOOKUP #AREA,#0,#ENTER ;учсъбфш 0-пк лбобм ;у жбкмпн ENTER.SAV BCS 5$ MOV R0,R3 ;тбънет жбкмб ч R3 .ENTER #AREA,#1,#NEWFIL,R3 ;пфлтщфш опчщк жбкм BCS 6$ CLR BLK 1$: .READW #AREA,#0,#BUFFR,#256.,BLK ;юйфбфш вмпл BCC 2$ TSTB @#ERRBYT ;лпоег жбкмб? BEQ 3$ ;дб MOV #RERR,R0 BR 7$ 2$: .WRITW #AREA,#1,#BUFFR,#256.,BLK ;ъбрйубфш вмпл INC BLK BCC 1$ MOV #WERR,R0 BR 7$ 3$: .CLOSE #1 MOV #DONE,R0 BR 7$ 5$: MOV #NOFIL,R0 BR 7$ 6$: MOV #NOENT,R0 7$: .PRINT .EXIT AREA: .WORD 0 BLK: .WORD 0,0,0,0 BUFFR: .BLKW 256. ENTER: .RAD50 /DK/ .RAD50 /ENT/ .RAD50 /ER/ .RAD50 /SAV/ NEWFIL: .RAD50 /DK/ .RAD50 /NEWENT/ .RAD50 /SAV/ NOFIL: .ASCIZ /жбкм ое обкдео/ NOENT: .ASCIZ /пыйвлб .ENTER / WERR: .ASCIZ /пыйвлб .WRITW / RERR: .ASCIZ / пыйвлб .READW / DONE: .ASCIZ /лпрйтпчбойе ъбчетыеоп/ .EVEN .END START 5.1.5. .LOOKUP йурпмшъхафус дче жптнщ ъбртпуб .LOOKUP. ретчбс жптнб .LOOKUP учсъщчбеф хлбъбоощк лбобм у хуфтпкуфчпн й/ймй ухэеуфчхаэйн жбкмпн дмс чщрпмоеойс претбгйк ччпдб-чщчпдб. йурпмшъхенщк лбобм вхдеф "ъбосф" дп феи рпт, рплб ое вхдеф чщрпмоео пдйо йъ умедхаэйи ъбртпупч: .CLOSE, .SAVESTATUS,.SRESET,.HRESET,.PURGE,.CSIGEN (еумй опнет лбобмб ч дйбрпъпое пф 0 дп 10 (чпушнетйюопк). ъбнефйн, юфп еумй ртпзтбннб йнееф пчетмекоха уфтхлфх- тх, фп 15-щк лбобм йурпмшъхефус пчетмекощн дтбкчетпн й ое дпмцео йънеосфшус ртпзтбннпк рпмшъпчбфемс. еумй ретчпе умпчп йнеой жбкмб ч вмпле хуфтпкуфчб (DBLK) упдетцйф охмш й хуфтпкуфчп еуфш хуфтпкуфчп жбкмпчпк уфтхлфхтщ, фп бвупмафощк вмпл 0 ьфпзп хуфтпкуфчб пртеде- мсефус лбл "обюбмп жбкмб" (ч ьфпн умхюбе зпчптсф п оежбкмп- чпн .LOOKUP). ьфпф нефпд дпрхулбеф ччпд-чщчпд дмс мавпзп жйъйюеулпзп вмплб об хуфтпкуфче. еумй йнс жбкмб пртедемеоп дмс хуфтпкуфчб оежбкмпчпк уфтхлфхтщ, фп йнс жбкмб йзоптй- тхефус. дмс чщрпмоеойс .LOOKUP дтбкчет уппфчефуфчхаэезп хуф- тпкуфчб дпмцео вщфш ч рбнсфй. рпуме чщрпмоеойс .LOOKUP , тезйуфт R0 вхдеф упдетцбфш дмйох пфлтщфпзп жбкмб ч вмплби. рпуме чщрпмоеойс .LOOKUP дмс хуфтпкуфч оеуртбчпюопк уфтхл- фхтщ, тезйуфт RO вхдеф упдетцбфш опмш. жптнбф нблтплпнбодщ: .LOOKUP AREA,CHAN,DBLK[,SEQN] зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; SEQN - рпумедпчбфемшощк опнет жбкмб дмс нбзойфопк мео- фщ; ъобюеойс, лпфптще нпцеф йнефш SEQN й уппфчефуфчхаэйе йн декуфчйс нпойфптб прйубощ ч фбвмйге 8. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,1 .WORD DBLK .WORD SEQN ртйнет 1. .TITLE LOOKUP.MAC ;ч дбоопн ртйнете, йурпмшъхаэен ъбртпу .LOOKUP, ;пртедемсефус обмйюйе об хуфтпкуфче DK: тбвпюезп ;жбкмб, упдетцбэезп пюетедш жбкмпч дмс чщчпдб об ;хлбъбоопе хуфтпкуфчп. ;еумй тбвпюйк жбкм ухэеуфчхеф, фп езп тбънет ;(ч вмплби) реюбфбефус об уйуфенопн фетнйобме. .MCALL .LOOKUP,.PRINT,.EXIT START: .LOOKUP #AREA,#0,#QUSPEC ;пфлтщфш жбкм BCC 1$ .PRINT #NOFILE ;жбкмб оеф .EXIT 1$: MOV #SIZE,R1 CALL CNV10 .PRINT #BUFF .EXIT CNV10: MOV R0,-(SP) ;рпдртпзтбннб CLR R0 ;ртепвтбъпчбойс тбънетб 1$: INC R0 ;жбкмб дмс чщчпдб об SUB #10.,@SP ;фетнйобм BGE 1$ ADD #72,@SP DEC R0 BEQ 2$ CALL CNV10 2$: MOVB (SP)+,(R1)+ RETURN AREA: .BLKW 3 QUSPEC: .RAD50 /DK QUFILE/ .RAD50 /TMP/ BUFF: .ASCII /тбънет жбкмб QUFILE.TMP = / SIZE: .ASCIZ / / NOFILE: .ASCIZ /об DK: оеф жбкмб QUFILE.TMP/ .EVEN .END START фбвмйгб 8 ------------------------------------------------------------ ! ъобюеойе ! декуфчйе нпойфптб ! ! бтзхнеофб ! ! !----------------------------------------------------------! ! -1 ! ртпйъчпдйф рпйул жбкмб у фелхэезп рпмпцеойс! ! ! нбзойфопк меофщ ! ! 0 ! ретенбфщчбеф нбзойфоха меофх й ртпйъчпдйф ! ! ! рпйул жбкмб ! ! N(N>0) ! хуфбобчмйчбеф нбзойфоха меофх ч рпмпцеойе ! ! ! уппфчефуфчхаэее жбкмх у рпумедпчбфемшощн ! ! ! опнетпн N ! ------------------------------------------------------------ чфптбс жптнб .LOOKUP учсъщчбеф лбобм у хлбъбоощн ъбдб- ойен дмс пвнеоб йожптнбгйек ч тецйнби FB й ин. жптнбф нблтплпнбодщ: .LOOKUP AREA,CHAN,JOBDES зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; JOBDES - бдтеу вмплб йъ 4-и умпч; 1-пе умпчп упдетцйф йнс дтбкчетб пюетедй уппвэеойк (MQ) ч лпдби RADIX-50; 2,3,4 умпчб упдетцбф мпзйюеулпе йнс уйуфенопзп ъбдбойс ч лпдби лпй-7. еумй 2-пе умпчп упдетцйф 0 , фп лбобм (CHAN) нпцеф йурпмшъпчбфшус фпмшлп ъбртпубнй .READ/C/W дмс рпмхюеойс уппвэеойс пф мавпзп ъбдбойс. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,1 .WORD JOBDES ртйнет 2. .TITLE SJLOOK.MAC ;ч дбоопн ртйнете ъбртпу .LOOKUP пфлтщчбеф лбобм ;дмс уйуфенопзп ъбдбойс QUEUE.REL. ;ртйнет чщрпмосефус рпд хртбчмеойен нпойфптпч FB ;ймй ин. ; .MCALL .LOOKUP,.PRINT,.EXIT,.WRITW,.READW START: .LOOKUP #AREA,#0,#QMSG ;пфлтщфш лбобм дмс QUEUE BCC 1$ .PRINT #NOJOB .EXIT 1$: .WRITW #AREA,#0,#RMSJ,#6 BCS 2$ .READW #AREA,#0,#RMSJ,#6 BCS 2$ .PRINT #QRUN .EXIT 2$: .PRINT #MSGERR .EXIT AREA: .BLKW 5 QMSG: .RAD50 /MQ/ .ASCIZ /QUEUE/ .WORD 0,0 RMSJ: .WORD 0 .ASCII /SJLOOK/ MSGERR: .ASCIZ /пыйвлб/ NOJOB: .ASCIZ /QUEUE ое ъбзтхцеоб/ QRUN: .ASCIZ /QUEUE тбвпфбеф!/ .EVEN .END START 5.1.6. .PURGE ъбртпу .PURGE пучпвпцдбеф хлбъбоощк лбобм дмс йурпмш- ъпчбойс ч дтхзпк претбгйй веъ чщрпмоеойс лблйи-мйвп жхолгйк ъбртпупч .HRESET,.SRESET,.SAVESTATUS ймй .CLOSE. чтенеоощк жбкм пфлтщфщк об ьфпн лбобме рп .ENTER, боохмйтхефус. ъбр- тпу .PURGE об учпвпдопн лбобме йзоптйтхефус. жптнбф нблтплпнбодщ: .PURGE CHAN жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,3 ртйнет йурпмшъпчбойс .PURGE ун. ч прйубойй ъбртпуб .HERR. 5.1.7. .RENAME ъбртпу .RENAME йънеосеф йнс жбкмб (оедпрхуфйн ч претб- гйси у нбзойфопк меофпк). жптнбф нблтплпнбодщ: .RENAME AREA,CHAN,DBLK зде AREA - бдтеу вмплб йъ 2-иумпч бтзхнеофпч енф; DBLK - бдтеу вмплб, упдетцбэезп йнс хуфтпкуфчб й йнс жбкмб, лпфптще фтевхефус йънеойфш, й опчпе йнс хуфтпкуфчб й йнс жбкмб ч лпдби RADIX-50. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,4 .WORD DBLK обртйнет, .RENAME #AREA,#7,#DXLK BCS RNMERR . . . DBLK: .RAD50 /DX1OLDFILMAC/ .RAD50 /DX1NEWFILMAC/ еумй жбкм у фен це йнеоен, юфп й опчпе, хце ухэеуфчхеф об фпне, фп по хдбмсефус. рпчфптопе пртедемеойе йнеой хуф- тпкуфчб DX1 ч опчпк урегйжйлбгйй жбкмб оепвипдйнп дмс ртб- чймшопзп чщрпмоеойс претбгйй й ое дпмцоп прхулбфшус. рпуме чщрпмоеойс .RENAME йурпмшъхенщк лбобм пучпвпцдбефус. ъбртпу .RENAME фтевхеф, юфпвщ дтбкчет уппфчефуфчхаэезп хуфтпкуфчб вщм ч рбнсфй ретед чщрпмоеойен претбгйй. ъбртпу .RENAME ое чщрпмосефус дмс ъбэйэеоощи жбкмпч. ртйнет. .TITLE RENAME.MAC ;ч дбоопн ртйнете ъбртпу .RENAME йурпмшъхефус ;дмс йънеоеойс йнеой жбкмб. .MCALL .CSISPC,.RENAME,.FETCH,.PRINT,.SRESET,.EXIT ERRBYT = 52 START: .CSISPC #FILESP,#DEFEXT ;ччпд лпнбодопк уфтплй .FETCH #DRVLOD,#FILESP ;ъбзтхъйфш дтбкчет BCS 2$ MOV #FILESP,R2 MOV #FILESP+46,R3 MOV @R2,#FILESP+36 .REPT 4 MOV (R2)+,(R3)+ .ENDR .RENAME #AREA,#0,#FILESP+36 ;ретейнеопчбфш жбкм BCC 1$ DECB @#ERRBYT ;бобмйъ пыйвлй BEQ 3$ MOV #ILLOP,R0 BR 4$ 1$: .SRESET .EXIT 2$: MOV #FERR,R0 BR 4$ 3$: MOV #NOFIL,R0 4$: .PRINT BR 1$ AREA: .BLKW 5 DEFEXT: .WORD 0,0,0,0 NOFIL: .ASCIZ /жбкм ое обкдео/ ILLOP: .ASCIZ /оедпрхуфйнбс претбгйс/ FERR: .ASCIZ /пыйвлб .FETCH/ .EVEN FILESP: .BLKW 39.*2 DRVLOD =. .END START 5.1.8. .REOPEN ъбртпу .REOPEN рпчфптоп учсъщчбеф хлбъбоощк лбобм у жбкмпн, дмс лпфптпзп вщм чщрпмоео ъбртпу .SAVESTATUS. упч- неуфопе йурпмшъпчбойе ъбртпупч .SAVESTATUS й .REOPEN фте- вхефус дмс пдопчтенеоопзп пвтбэеойс л впмшыпнх юйумх жбк- мпч. жбкмщ пфлтщчбафус рп .LOOKUP й рбтбнефтщ йи упуфпсойс ъбрпнйобафус рп .SAVESTATUS. лпздб фтевхафус дбооще йъ жбк- мб, .REOPEN пвеуреюйчбеф ртпзтбнне чпънпцопуфш юфеойс ьфйи дбоощи. ое счмсефус пвсъбфемшощн чщрпмоеойе .REOPEN об фпн це лбобме, об лпфптпн вщмй чщрпмоеощ .LOOKUP й .SAVESTATUS. жптнбф нблтплпнбодщ: .REOPEN AREA,CHAN,CBLK зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; CBLK - бдтеу вмплб йъ 5-фй умпч, зде ъбрпнйобефус йожптнбгйс п упуфпсойй лбобмб. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,6 .WORD CBLK ртйнет ун. ч прйубойй ъбртпуб .SAVESTATUS. 5.1.9. .SAVESTATUS ъбртпу .SAVESTATUS ъбрпнйобеф рсфш умпч йожптнбгйй п упуфпсойй лбобмб ч хлбъбоопк рпмшъпчбфемен пвмбуфй рбнсфй. ьфй умпчб упдетцбф рпмоха йожптнбгйа, лпфптбс фтевхефус претбгйпоопк уйуфене дмс фпюопзп пртедемеойс жбкмб. рпуме чщрпмоеойс .SAVESTATUS хлбъбоощк лбобм пучпвпцдбефус. еумй оепвипдйнп рпмхюйфш дбооще рп ьфпнх лбобмх, фп йурпмшъхефус ъбртпу .REOPEN. ъбртпу .SAVESTATUS нпцеф йурпмшъпчбфшус ч фпн умхюбе, еумй жбкм вщм пфлтщф рп .LOOKUP. еумй вщм йурпмшъпчбо .ENTER, фп .SAVESTATUS йзоптйтхефус й зеоетй- тхефус пыйвлб. ъбртпу .SAVESTATUS оедпрхуфйн ч претбгйси у жбкмбнй, лпфптще обипдсфус об нбзойфопк меофе. ъбртпущ .SAVESTATUS й .REOPEN йурпмшъхафус дмс тбвпфщ у впмшыйн юйумпн жбкмпч ртй пзтбойюеоопн юйуме лбобмпч. жптнбф нблтплпнбодщ: .SAVESTATUS AREA,CHAN,CBLK зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; CBLK - бдтеу вмплб йъ 5-фй умпч, ч лпфптщк вхдеф ъбрй- убоб йожптнбгйс п упуфпсойй лбобмб; бдтеу дпмцео вщфш хлб- ъбо ч ртедемби ртпзтбннщ рпмшъпчбфемс. (ун. ртймпцеойе 2). жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,5 .WORD CBLK ртйнет. .TITLE SAVEST.MAC .MCALL .CSIGEN,.SAVESTATUS,.READW,.WRITW,.PRINT .MCALL .PURGE,.REOPEN,.CLOSE,.EXIT ERRBYT = 52 START: .CSIGEN #DSPACE,#DEFEXT ;ччпд лпнбодопк уфтплй MOV #3,R4 ;чипдопк лбобм MOV #AREA,R3 ;хлбъбфемш об вмпл ;упуфпсойс лбобмб MOV #SAVBLK,R5 1$: .SAVEST R3,R4,R5 ;упитбойфш йожптнбгйа ;п лбобме BCS 2$ ADD #12,R5 ;хлбъбфемш об умедхаэйк ;вмпл йожптнбгйй INC R4 CMP #8.,R4 ;чипдоще жбкмщ чуе? BGE 1$ ;оеф 2$: MOV #SAVBLK,R5 BEQ 7$ 4$: .REOPEN R3,#3,R5 ;рпчфптоп йурпмшъпчбфш ;лбобм 3 CLR BLK 5$: .READW R3,#3,#BUFF,#256.,BLK ;юйфбфш вмпл BCC 6$ TSTB @#ERRBYT ;лпоег жбкмб? BNE 8$ .PURGE #3 ;пучпвпдйфш лбобм ADD #12,R5 TST @R5 ;рпумедойк жбкм? BNE 4$ .CLOSE #0 ;ъблтщфш чщи.лбобм .PRINT #DONE .EXIT 6$: .WRITW R3,#0,#BUFF,#256.,WBLK ;ъбрйубфш вмпл INC WBLK INC BLK BCC 5$ MOV #WERR,R0 BR 9$ 7$: MOV #NOIMP,R0 BR 9$ 8$: MOV #RERR,R0 9$: .PRINT .EXIT AREA: .BLKW 5 BLK: .WORD 0 WBLK: .WORD 0 SAVBLK: .BLKW 30. DEFEXT: .WORD 0,0,0,0 NOIMP: .ASCIZ /оеф впмшые чипдощи жбкмпч/ WERR: .ASCIZ /пыйвлб ъбрйуй/ RERR: .ASCIZ /пыйвлб юфеойс/ DONE: .ASCIZ /лпоег ртпзтбннщ/ .EVEN BUFF: .BLKW 256. DSPACE =. .END START 5.2. ртпзтбнноще ъбртпущ дмс птзбойъбгйй ччпдб-чщчпдб дбоощи 5.2.1. .READ,.READC,.READW уйуфенб RT11 ртедхунбфтйчбеф фтй тецйнб чщрпмоеойс претбгйк ччпдб-чщчпдб: .READ /.WRITE .READC/.WRITC .READW/.WRITW ртй йурпмшъпчбойй ъбртпупч .READ й .READC дпмцощ вщфш пртедемеощ дпрпмойфемшоще ьменеофщ дмс пюетедй ччпдб- чщчпдб. еумй ъбртпущ READ/C/W йурпмшъхафус дмс пвнеоб йожптнб- гйек нецдх ъбдбойснй, фп тбънет вхжетб (BUF) дпмцео об пдоп умпчп ртечщыбфш юйумп умпч дмс юфеойс (WCNT) ф.л. ретчпе умпчп вхжетб (BUF) вхдеф упдетцбфш декуфчйфемшопе лпмйюеуф- чп ретедбоощи умпч. ъбртпу .READ йурпмшъхефус дмс ретедбюй пртедемеоопзп лпмйюеуфчб умпч рп хлбъбоопнх лбобмх ч вхжет рбнсфй. хртбч- меойе ретедбефус ртпзтбнне рпмшъпчбфемс оенедмеооп рпуме обюбмб чщрпмоеойс ъбртпуб .READ. рпуме ъбчетыеойс ретедбюй дбоощи ойлблйи декуфчйк ое ртпйуипдйф. жптнбф нблтплпнбодщ: .READ AREA,CHAN,BUF,WCNT,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс юфеойс дбоощи; WCNT - лпмйюеуфчп умпч дмс юфеойс; BLK - опнет вмплб дмс претбгйй юфеойс; еумй вщм йурпмшъпчбо жбкмпчщк .LOOKUP, TO BLK - опнет вмплб пфопуй- фемшоп обюбмб жбкмб; еумй вщм йурпмшъпчбо оежбкмпчщк .LOOKUP, TO BLK - бвупмафощк опнет вмплб хуфтпкуфчб; ртпз- тбннб рпмшъпчбфемс дпмцоб нпдйжйгйтпчбфш BLK ретед езп рпч- фптощн йурпмшъпчбойен. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,10 .WORD BLK .WORD BUF .WORD WCNT .WORD 1 ртйнет. .TITLE READ.MAC ;ртйнет йурпмшъпчбойс ъбртпупч .READ,.WRITE. .MCALL .READ,.WRITE,.CLOSE,.PRINT,.CSIGEN .MCALL .WAIT,.SRESET,.EXIT ERRBYT = 52 .ENABL LSB START: .CSIGEN #DSPACE,#DEFEXT ;ччпд лпнбодопк уфтплй MOV #AREA,R5 CLR IOBLK 1$: .READ R5,#3 ;юйфбфш у 0-зп вмплб BCS 6$ ;пыйвлб юфеойс ; . BIT #1,IOBLK BNE 2$ .PRINT #MES ; . 2$: .WAIT #3 ;цдбфш ъбчетыеойс претбгйй BCS 5$ .WRITE R5,#0 ;ъбрйубфш вмпл BCS 3$ INC IOBLK ; . .WAIT #0 ;цдбфш ъбчетыеойс претбгйй BCC 1$ 3$: MOV #WERR,R0 4$: .PRINT BR 7$ 5$: MOV #RERR,R0 BR 4$ 6$: TSTB @#ERRBYT BNE 5$ .PRINT #MES1 .CLOSE #0 7$: .SRESET ;хдбмйфш ъбзтхцеоощк дтбкчет .EXIT AREA: .WORD 0 IOBLK: .WORD 0 .WORD BUFF .WORD 256. .WORD 0 BUFF: .BLKW 256. DEFEXT: .WORD 0,0,0,0 MES1: .ASCIZ /претбгйс ччпдб-чщчпдб ъбчетыеоб/ MES: .ASCIZ <15><12>/чщрпмоеойе ртпзтбннщ ртпдпмцбефус/ WERR: .ASCIZ /пыйвлб .WRITE/ RERR: .ASCIZ /пыйвлб .READ/ .EVEN DSPACE =. .END START еумй ччпд чщрпмосефус у фетнйобмб й BLK=0, фп об фет- нйобме реюбфбефус "^" (лпд 136). лпздб ртпзтбнне рпмшъпчбфемс охцоп чщрпмойфш юфеойе дбоощи, нпцеф вщфш йурпмшъпчбо ъбртпу .WAIT. ьфп збтбофй- тхеф фп, юфп дбооще вхдхф ртпюйфбощ рпмопуфша. еумй чп чте- нс ретедбюй дбоощи ртпйъпымб пыйвлб, ъбртпу .WAIT уппвэбеф п оек. ъбртпу .READC ретедбеф пртедемеоопе лпмйюеуфчп умпч рп хлбъбоопнх лбобмх ч рбнсфш. хртбчмеойе ртпзтбнне рпмшъпчб- фемс вхдеф ретедбоп утбъх рпуме обюбмб чщрпмоеойс .READC. рпрщфлб юфеойс дбоощи рпуме лпогб жбкмб чщъщчбеф ретедбюх хртбчмеойс чщъщчбаэек ртпзтбнне у хуфбопчмеойен у-тбътсдб й ъбрйуша охмс ч вбкф пыйвпл (52-вбкф). рпуме чщрпмоеойс .READC хртбчмеойе вхдеф ретедбоп рпдртпзтбнне ъбчетыеойс, бдтеу лпфптщк хлбъбо ч ъбртпуе. еумй ч рпдртпзтбнне ъбчет- ыеойс чщрпмосефус лпнбодб RTS PC, фп хртбчмеойе чпъчтбэбеф- ус ртпзтбнне рпмшъпчбфемс. жптнбф нблтплпнбодщ: .READC AREA,CHAN,BUF,WCNT,CRTN,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс юфеойс дбоощи; WCNT - лпмйюеуфчп умпч дмс юфеойс; CRTN - бдтеу рпдртпзтбннщ ъбчетыеойс (бдтеу дпмцео вщфш впмшые 500 (чпушнетйюопк)); BLK - ун. ъбртпу .READ жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,10 .WORD BLK .WORD BUF .WORD WCNT .WORD CRTN ртй ъбрхуле рпдртпзтбннщ ъбчетыеойс уртбчедмйчп уме- дхаэее: 1) тезйуфт R0 упдетцйф умпчп упуфпсойс лбобмб; еумй ч R0 хуфбопчмео тбътсд 0, фп ртпйъпымб бррбтбфобс пыйвлб чп чтенс ретедбюй дбоощи; 2) тезйуфт R1 упдетцйф опнет лбобмб дмс претбгйй; ьфб йожптнбгйс оепвипдйнб, лпздб пдоб й фб це рпдртпзтбннб ъбчетыеойс йурпмшъхефус ч оеулпмшлйи претбгйси. ртйнет. .TITLE READC.MAC ;ртйнет йурпмшъпчбойс ъбртпупч .READC,.WRITC. .MCALL .READC,.WRITC,.CSIGEN,.PRINT .MCALL .CLOSE,.WAIT,.SRESET,.EXIT ERRBYT = 52 .ENABL LSB START: .CSIGEN #DSPACE,#DEFEXT ;ччпд лпнбодопк уфтплй CALL IOXFER .PRINT #MES MOV #-1,R5 1$: DEC R5 BNE 1$ TSTB EOF BEQ 1$ ;0 - пыйвлб ъбрйуй BLT RERR ;<0- пыйвлб юфеойс .CLOSE #0 ;>0- лпоег жбкмб MOV #DONE,R0 BR EXIT WERR: MOV #WRERR,R0 BR EXIT RERR: MOV #RDERR,R0 EXIT: .PRINT .SRESET ;хдбмйфш ъбзтхцеооще ;дтбкчетщ .EXIT WRDONE: .WAIT #0 BCS 3$ IOXFER: .READC #AREA,#3,,,#4$ ;юйфбфш вмпл BCC 7$ TSTB @#ERRBYT ;лпоег жбкмб? BEQ 6$ ;дб 2$: DECB EOF 3$: DECB EOF RETURN 4$: .WAIT #3 BCS 2$ .WRITC #AREA,#0,,,#WRDONE;ъбрйубфш вмпл BCS 3$ 5$: INC BLOK RETURN 6$: INCB EOF 7$: RETURN AREA: .WORD 0 ;вмпл бтзхнеофпч енф BLOK: .WORD 0 ;опнет вмплб .WORD BUFF ;бдтеу вхжетб .WORD 256. ;уюефюйл умпч .WORD 0 ;бдтеу рпдртпзтбннщ ъбчетыеойс BUFF: .BLKW 256. DEFEXT: .WORD 0,0,0,0 DONE: .ASCIZ /лпоег ртпзтбннщ/ MES: .ASCIZ /чщрпмоеойе ртпзтбннщ ртпдпмцбефус/ WRERR: .ASCIZ /пыйвлб .WRITC/ RDERR: .ASCIZ /пыйвлб .READC/ EOF: .BYTE 0 .EVEN DSPACE =. .END START ъбртпу .READW ретедбеф пртедемеооопе лпмйюеуфчп умпч рп хлбъбоопнх лбобмх ч рбнсфш. хртбчмеойе ретедбефус ртпз- тбнне рпмшъпчбфемс рпуме чщрпмоеойс ъбртпуб .READW ймй ртй пвобтхцеойй пыйвлй. жптнбф нблтплпнбодщ: .READW AREA,CHAN,BUF,WCNT,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; WCNT - лпмйюеуфчп умпч дмс юфеойс (лбцдщк ъбртпу нпцеф ретедбфш нблуйнбмшоп 32л умпч); BLK - ун. ъбртпу .READ жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,10 .WORD BLK .WORD BUF .WORD WCNT .WORD 0 еумй рпуме ъбчетыеойс ъбртпуб вхдеф хуфбопчмео у- тбътсд, фп ьфп хлбъщчбеф об фп, юфп об лбобме ртпйъпымб бррбтбфобс пыйвлб. еумй пыйвлй ое вщмп, фп дбооще обипдсфус ч рбнсфй, обюйобс у хлбъбоопзп бдтеуб. ч тецйне FB пдоп йъ ъбдбойк нпцеф чщрпмосфшус ч фп чтенс лбл дтхзпе ъбдбойе пцйдбеф ъбчетыеойс претбгйй. ртйнет. .TITLE READW.MAC ;ртйнет йурпмшъпчбойс ъбртпупч .READW,.WRITW. .MCALL .CSIGEN,.READW,.WRITW,.PRINT,.CLOSE .MCALL .SRESET,.EXIT ERRBYT = 52 START: .CSIGEN #DSPACE,#DEFEXT CLR IOBLK MOV #AREA,R5 READ: .READW R5,#3 BCC 2$ TSTB @#ERRBYT BEQ 3$ MOV #RERR,R0 1$: .PRINT BR 4$ 2$: .WRITW R5,#0 INC IOBLK BCC READ MOV #WERR,R0 BR 1$ 3$: .CLOSE #0 .PRINT #DONE 4$: .SRESET .EXIT DEFEXT: .WORD 0,0,0,0 AREA: .WORD 0 IOBLK: .WORD 0 .WORD BUFF .WORD 256. .WORD 0 BUFF: .BLKW 256. RERR: .ASCIZ /пыйвлб .READW/ WERR: .ASCIZ /пыйвлб .WRITW/ DONE: .ASCIZ /лпоег ртпзтбннщ/ .EVEN DSPACE =. .END START 5.2.2. .WRITE,.WRITC,.WRITW ртй йурпмшъпчбойй ъбртпупч .WRITE й .WRITC дпмцощ вщфш пртедемеощ дпрпмойфемшоще ьменеофщ дмс пюетедй ччпдб- чщчпдб. ъбртпу .WRITE ретедбеф хлбъбоопе лпмйюеуфчп умпч йъ рбнсфй рп хлбъбоопнх лбобмх. хртбчмеойе ртпзтбнне рпмшъпчб- фемс ретедбефус утбъх це рпуме фпзп, лбл ъбртпу вхдеф рпу- фбчмео ч пюетедш. жптнбф нблтплпнбодщ: .WRITE AREA,CHAN,BUF,WCNT,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб рбнсфй, лпфптщк йурпмшъхефус дмс чщчпдб; WCNT - лпмйюеуфчп умпч дмс ъбрйуй; BLK - опнет вмплб дмс претбгйй ъбрйуй; еумй йурпмш- ъхефус жбкмпчщк .LOOKUP ймй .ENTER, TO BLK - опнет вмплб пфопуйфемшоп обюбмб жбкмб; еумй вщм йурпмшъпчбо оежбкмпчщк .LOOKUP ймй .ENTER, фп BLK - бвупмафощк опнет вмплб хуф- тпкуфчб; ртпзтбннб рпмшъпчбфемс дпмцоб нпдйжйгйтпчбфш BLK ретед езп рпчфптощн йурпмшъпчбойен. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,11 .WORD BLK .WORD BUF .WORD WCNT .WORD 1 ъбртпу .WRITC ретедбеф ъбдбоопе лпмйюеуфчп умпч йъ рбнсфй рп хлбъбоопнх лбобмх. хртбчмеойе ретедбефус ртпзтбн- не рпмшъпчбфемс оенедмеооп рпуме обюбмб чщрпмоеойс .WRITC. рпуме чщрпмоеойс ъбртпупч, хртбчмеойе вхдеф ретедбоп рпдр- тпзтбнне ъбчетыеойс. рп лпнбоде RTS PC хртбчмеойе чпъчтб- ыбефус ртпзтбнне рпмшъпчбфемс. жптнбф нблтплпнбодщ: .WRITC AREA,CHAN,BUF,WCNT,CRTN,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб рбнсфй, лпфптщк йурпмшъхефус дмс чщчпдб; WCNT - лпмйюеуфчп умпч дмс ъбрйуй; CRTN - бдтеу рпдртпзтбннщ ъбчетыеойс; BLK - ун. ъбртпу .WRITE жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,11 .WORD BLK .WORD BUF .WORD WCNT .WORD CRTN ъбртпу .WRITW ретедбеф ъбдбоопе лпмйюеуфчп умпч йъ рбнсфй рп хлбъбоопнх лбобмх. хртбчмеойе ретедбефус ртпзтбн- не рпмшъпчбфемс рпуме ъбчетыеойс .WRITW. жптнбф нблтплпнбодщ: .WRITW AREA,CHAN,BUF,WCNT,BLK зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб, лпфптщк йурпмшъхефус дмс чщчпдб; WCNT - лпмйюеуфчп умпч дмс ъбрйуй; BLK - ун. ъбртпу .WRITE. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,10 .WORD BLK .WORD BUF .WORD WCNT .WORD 0 5.2.3. .RCVD,.RCVDC,.RCVDW (тецйн FB,ин) ухэеуфчхаф фтй жптнщ ъбртпуб рпмхюеойс дбоощи, лпфптще йурпмшъхафус чнеуфе у ъбртпубнй .SDAT. ъбртпущ .RCVD бобмп- зйюощ ъбртпубн .READ, оп ч пфмйюйй пф ойи пухэеуфчмсаф ртйен дбоощи йъ дтхзпк ртпзтбннщ, б ое у хуфтпкуфчб. ртй йурпмшъпчбойй ъбртпупч .RCVD й .RCVDC дпмцощ вщфш пртедеме- ощ дпрпмойфемшоще ьменеофщ дмс пюетедй ччпдб-чщчпдб. ъбртпу .RCVD йурпмшъхефус дмс рпмхюеойс дбоощи ймй уппвэеойк, рпущмбенщи дтхзпк ртпзтбннпк. хртбчмеойе чщъщ- чбаэек ртпзтбнне ретедбефус утбъх це рпуме обюбмб чщрпмое- ойс ъбртпуб .RCVD. ртй оепвипдйнпуфй, у .RCVD йурпмшъхефус ъбртпу .MWAIT, лпфптщк ъбдетцйчбеф чщрпмоеойе ртпзтбннщ дп плпоюбойс претбгйй. жптнбф нблтплпнбодщ: .RCVD AREA,BUF,WCNT зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс уппвэеойк (дбоощи); WCNT - лпмйюеуфчп ретедбчбенщи умпч. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,26 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD 1 рпуме чщрпмоеойс нпойфптпн ъбртпуб .RCVD, ретчпе умпчп вхжетб (BUF) вхдеф упдетцбфш декуфчйфемшопе лпмйюеуфчп ретедбоощи умпч. фблйн пвтбъпн, пвмбуфш рбнсфй дмс ртйенб дбоощи дпмцоб вщфш, рп лтбкоек нете, об пдоп умпчп впмшые тбънетб ретедбчбенпзп уппвэеойс. лпнвйобгйс .SDAT/.RCVD нпцеф вщфш йурпмшъпчбоб дмс ретедбюй лбл оеулпмшлйи умпч, фбл й гемпзп вхжетб. претбгйс рп ъбртпух .RCVD ъблбоюйчбефус фпмшлп рпуме чщрпмоеойс .SDAT йъ дтхзпк ртпзтбннщ. ртйнет йурпмшъпчбойс .RCVD ун. ч прйубойй ъбртпуб .MWAIT. ъбртпу .RCVDC пухэеуфчмсеф ртйен дбоощи й ъбрхулбеф рпдртпзтбннх ъбчетыеойс рпуме рпмхюеойс уппвэеойс (бобмп- зйюоп .READC). жптнбф нблтплпнбодщ: .RCVDC AREA,BUF,WCNT,CRTN зде CRTN - бдтеу рпдртпзтбннщ ъбчетыеойс. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,26 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD CRTN ъбртпу .RCVDW пухэеуфчмсеф ртйен дбоощи й пцйдбеф плпоюбойс претбгйй. чщрпмоеойе чщъщчбаэек ртпзтбннщ ъбдет- цйчбефус дп плпоюбойс ретедбюй уппвэеойс дтхзпк ртпзтбннпк. жптнбф нблтплпнбодщ: .RCVDW AREA,BUF,WCNT жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,26 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD 0 лбл й ч .RCVD, ретчпе умпчп вхжетб дмс .RCVDC й .RCVDW вхдеф упдетцбфш декуфчйфемшопе лпмйюеуфчп ретедбоощи умпч. ртйнет йурпмшъпчбойс .RCVDW ун. ч прйубойй ъбртпуб .CHCOPY. 5.2.4. .SDAT,.SDATC,.SDATW (тецйн FB,ин) ъбртпущ .SDAT,.SDATC,.SDATW йурпмшъхафус чнеуфе у ъбр- тпубнй .RCVD,.RCVDC, .RCVDW дмс ретедбюй уппвэеойк ймй дбо- ощи нецдх ртпзтбннбнй рпд хртбчмеойен нпойфптпч FB ймй XM. ъбртпущ .SDAT,.SDATC,.SDATW бобмпзйюоп ъбртпубн .WRITE,.WRITC,.WRITW, фпмшлп пухэеуфчмсаф ретедбюх дбоощи ое об хуфтпкуфчп, б дтхзпк ртпзтбнне. ртй йурпмшъпчбойй ъбртпупч .SDAT й .SDATC дпмцощ вщфш пртедемеощ дпрпмойфемш- още ьменеофщ дмс пюетедй ччпдб-чщчпдб. .SDAT жптнбф нблтплпнбодщ: .SDAT AREA,BUF,WCNT зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс уппвэеойк (дбоощи), лпфптще вхдхф ретедбощ; WCNT - лпмйюеуфчп умпч дмс ретедбюй. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,25 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD 1 ртйнет йурпмшъпчбойс .SDAT ун. ч прйубойй ъбртпуб .MWAIT. .SDATC жптнбф нблтплпнбодщ: .SDATC AREA,BUF,WCNT,CRTN зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс уппвэеойк (дбоощи), лпфптще вхдхф ретедбощ; WCNT - лпмйюеуфчп умпч дмс ретедбюй; CRTN - бдтеу рпдртпзтбннщ ъбчетыеойс. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,25 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD CRTN .SDATW жптнбф нблтплпнбодщ: .SDATW AREA,BUF,WCNT зде AREA - бдтеу вмплб йъ 5-фй умпч бтзхнеофпч енф; BUF - бдтеу вхжетб дмс уппвэеойк (дбоощи), лпфптще вхдхф ретедбощ; WCNT - лпмйюеуфчп умпч дмс ретедбюй. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,25 .WORD <ъбтеъетчйтпчбоп> .WORD BUF .WORD WCNT .WORD 0 ртйнет йурпмшъпчбойс .SDATW ун. ч прйубойй ъбртпуб .CHCOPY. 5.2.5. .TTYIN,.TTINR ъбртпущ .TTYIN й .TTINR йурпмшъхафус дмс ретедбюй уйн- чпмпч у фетнйобмб ч ртпзтбннх рпмшъпчбфемс. нблтптбуыйтеойе дмс .TTYIN: EMT 340 BCS .-2 нблтптбуыйтеойе дмс .TTINR: EMT 340 ъбртпу .TTYIN гйлмйфус ч пцйдбойй рпдбюй уйнчпмб ймй уфтплй уйнчпмпч, ч фп чтенс лбл рпмшъпчбфемш нпцеф ймй пцй- дбфш, ймй ртпдпмцбфш чщрпмоеойе ртпзтбннщ, йурпмшъхс .TTINR. еумй рп ъбчетыеойа чщрпмоеойс .TTINR хуфбобчмйчбеф у-тбътсд, фп ьфп ъобюйф юфп ч вхжете фетнйобмб уйнчпм пфухфуфчхеф (рпмшъпчбфемш еэе ое обреюбфбм езп). ч тецйнби FB,ин й SJ(веъ нхмшфйфетнйобмшопк рпддетцлй) .TTINR ое хуфбобчмйчбеф у-тбътсд, еумй ое хуфбопчмео 6-пк тбътсд ч умпче упуфпсойс ъбдбойс (ууъ). ухэеуфчхаф дчб тецйнб ччпдб у фетнйобмб. тецйн ччпдб пртедемсефус упдетцйнщн 12-зп тбътсдб ч ууъ. еумй упдетцйнпе 12-зп тбътсдб опмш, фп зпчптсф пв пвэен тецйне ччпдб-чщчп- дб. ч ьфпн тецйне чщрпмосафус умедхаэйе декуфчйс: 1) нпойфпт пвеуреюйчбеф "ьип" чуен уйнчпмбн, ччпдйнщн у фетнйобмб; 2) уфйтбойе уйнчпмпч й уфтпл пухэеуфчмсефус у рпнпэша лпнбод ъв й ух/U уппфчефуфчеооп; 3) дмс ретедбюй уйнчпмпч ртпзтбнне оепвипдйнп рпдбфш чл , ру ймй лпнбодщ ух/Z ймй ух/у; чпъчтбф лбтефлй й рете- чпд уфтплй фблце ретедбафус ртпзтбнне рпмшъпчбфемс. еумй 12-щк тбътсд ч ууъ тбчео едйойге, фп хуфбобчмй- чбефус урегйбмшощк тецйн ччпдб-чщчпдб. ч ьфпн тецйне чщрпм- осафус умедхаэйе декуфчйс: 1) нпойфпт ое чщдбеф "ьип" уйнчпмбн, ччпдйнщн у фетнй- обмб, лтпне ух/у й ух/D; 2) ух/U й ъв ое чщрпмосаф учпйи жхолгйк; 3) уйнчпмщ утбъх це ретедбафус ртпзтбнне рпмшъпчбфемс. ч урегйбмшопн тецйне ртпзтбннб рпмшъпчбфемс дпмцоб убнб чщрпмосфш реюбфш ччпдйнщи уйнчпмпч, еумй ьфп оепвипдй- нп (йулмаюеойе упуфбчмсаф ух/у й ух/D). 12-щк тбътсд ч ууъ дпмцео хуфбобчмйчбфшус ртпзтбннпк рпмшъпчбфемс. ьфпф тбътсд пюйэбефус, еумй хртбчмеойе рете- дбефус нпойфптх. декуфчйс ух/F,ух/ч й ух/и ое ъбчйусф пф упдетцйнпзп 12-зп тбътсдб, еумй тбоее ое вщмб рпдбоб лпнбодб SET TT NOFB). лпнбодщ ух/S й ух/Q чщрпмосафус нпойфптпн, еумй фпмшлп ч тецйне FB(XM) тбоее ое вщмб чщрпмоеоб лпнбодб SET TT NOPAGE. еумй ч тецйне FB (XM) удембо ъбртпу ччпдб, б уйнчпмб оеф ч обмйюйй, фп чщрпмоеойе ртпзтбннщ вмплйтхефус дп феи рпт, рплб ч вхжете ччпдб ое рпсчйфус уйнчпм. ьфп уртбчедмй- чп дмс .TTYIN й TTINR й ое ъбчйуйф пф тецйнб ччпдб. дмс фпзп, юфпвщ ртпдпмцйфш чщрпмоеойе ртпзтбннщ (й пвеуреюйфш хуфбопчлх у-тбътсдб ч умхюбе пфухфуфчйс уйнчпмб ч вхжете ччпдб) оепвипдйнп хуфбопчйфш ретед .TTINR 6-пк тбътсд ч ууъ. 6-пк тбътсд пюйэбефус рпуме плпоюбойс чщрпмоеойс ртпз- тбннщ. ччпдйнще рп .TTYIN, .TTYINR уйнчпмщ нпцоп тедблфйтп- чбфш у рпнпэша SL, еумй ртедчбтйфемшоп вщмй рпдбощ лпнбодщ SET SL ON й SET SL TTYIN й упдетцйнпе 4-зп й 12-зп тбътсдпч ууъ тбчощ охма. ртй тедблфйтпчбойй рпутедуфчпн SL, упдетцйнпе 6-зп тбътсдб ууъ ое ухэеуфчеооп, й чщрпмоеойе ъбртпуб .TTINR вхдеф ъбчетыеоп фпмшлп рпуме ъбчетыеойс претбгйй тедблфйтп- чбойс. ртйнеюбойе. ъбртпу .TTYIN ое пвумхцйчбеф лпучеооще жбкмщ. дмс ьфпк гемй оепвипдйнп чпурпмшъпчбфшус ъбртпупн .GTLIN. рп .TTYIN оечпънпцоп рпмхюйфш уйнчпм йъ лпучеоопзп жбкмб. жптнбф нблтплпнбодщ: .TTYIN CHAR .TTINR зде CHAR - бдтеу сюеклй, лхдб ретеущмбефус лпд ччпдйнпзп уйнчпмб; еумй CHAR хлбъбо ч ъбртпуе, фп лпд ретеущмбефус ч хлбъбооха сюеклх й ч R0; еумй CHAR ое хлбъбо, фп ч R0. ртйнет йурпмшъпчбойс .TTYIN,.TTINR ун. ч прйубойй ъбр- тпупч .TTYOUT,.TTOUTR. 5.2.6. .TTYOUT,.TTOUTR ъбртпущ .TTYOUT,.TTOUTR йурпмшъхафус дмс ретедбюй уйн- чпмпч йъ R0 ч вхжет фетнйобмб. декуфчйс ьфйи ъбртпупч боб- мпзйюощ декуфчйсн ъбртпупч .TTYIN,.TTINR. еумй вхжет фетнй- обмб ъбрпмоео, фп ъбртпу .TTYOUT пцйдбеф рпсчмеойс ч вхжете учпвпдопзп неуфб дмс чщчпдйнпзп уйнчпмб, фпздб лбл .TTOUTR ое пцйдбеф учпвпдопзп неуфб й уйнчпм, обипдсэйкус ч R0, об фетнйобм ое чщчпдйфус. еумй рпуме ъбчетыеойс .TTOUTR хуфб- опчмео у-тбътсд, фп ьфп зпчптйф п фпн, юфп ч вхжете оеф учпвпдопзп неуфб й юфп уйнчпм ое вщм чщчедео об фетнйобм. ч тецйнби FB,ин ъбртпу .TTOUTR ое хуфбобчмйчбеф у-тбътсд. ч ьфпн умхюбе, чщрпмоеойе ртпзтбннщ вмплйтхефус дп рпсчмеойс ч вхжете учпвпдопзп неуфб. дмс фпзп, юфпвщ ртпдпмцйфш чщрпмоеойе ртпзтбннщ й пвеуреюйфш хуфбопчлх у-тбътсдб, оепвипдйнп ч ууъ хуфбопчйфш 6-пк тбътсд. ртйнеюбойе. еумй ч пуопчопн ъбдбойй хуфбопчмео 6-пк тбътсд ч ууъ, фп ъбртпущ .TTYIN й .TTYOUT вхдхф чщъщчбфш вмплйтпчлх жпопчпзп ъбдбойс. ъбнефйн, юфп лбцдпе ъбдбойе ч пуопчопн ймй жпопчпн тецйне йнееф учпе упвуфчеоопе ууъ й рпьфпнх пой нпзхф йурпмшъпчбфш тбъмйюоще тецйнщ тбвпфщ фет- нйобмб оеъбчйуйнп дтхз пф дтхзб. жптнбф нблтплпнбодщ: .TTYOUT CHAR .TTOUTR зде CHAR - бдтеу сюеклй, упдетцбэек лпд уйнчпмб, лпфптщк вхдеф ретеущмбфшус ч R0 у рпумедхаэйн чщчпдпн об фетнйобм; еумй CHAR ое хлбъбо, об фетнйобм чщчпдйфус упдетцйнпе R0. ртйнет. .TITLE TTIO.MAC .MCALL .TTYIN,.TTYOUT,.TTINR,.TTOUTR,.EXIT JSW =44 ;умпчп упуфпсойс ъбдбойс START: MOV #BUFFER,R1 CLR R2 BIS #100,@#JSW ;хуфбопчйфш 6 тбътсд INLOOP: .TTINR ;ччеуфй уйнчпм у фф: BCS NOCHR CHRIN: MOVB R0,(R1)+ ;ретеумбфш уйнчпм ч вхжет INC R2 CMPB R0,#12 BNE INLOOP MOV #BUFFER,R1 OUTLOOP:MOVB (R1),R0 ;ретеумбфш уйнчпм ч R0 .TTOUTR ;чщчеуфй уйнчпм об фф: BCS NOROOM CHROUT: DEC R2 BEQ START INC R1 BR OUTLOOP ;реюбфбфш умедхаэйк уйнчпм NOCHR: .TTINR BCC CHRIN ;еуфш уйнчпм? ; . ; . ; . BR NOCHR NOROOM: MOVB (R1),R0 .TTOUTR BCC CHROUT ;ртй обмйюйй уйнчпмб - ;реюбфбфш езп ; . ; . ; . BIC #100,@#JSW ;пюйуфйфш 6 тбътсд й .TTYOUT (R1) ;реюбфбфш уйнчпм BIS #100,@#JSW BR CHROUT BUFFER: .BLKB 128. .END START 5.2.7. .PRINT ъбртпу .PRINT чщъщчбеф реюбфш уфтплй уйнчпмпч лпй-7 об уйуфенопн фетнйобме. ч тецйнби FB,ин лбцдпнх уппвэеойа ртедыеуфчхеф рпвхцдбаэйк ъобл ч> ймй F>, ч ъбчйуйнпуфй пф фпзп, лблпе ъбдбойе езп реюбфбеф (ч> - жпопчпе, F> - пуопч- опе). ьфп ртпйуипдйф ч умхюбе ретелмаюеойс уйуфенопзп фет- нйобмб об пвумхцйчбойе дтхзпзп ъбдбойс. еумй ччпд об фетнйобм чщрпмосефус уйуфенощн ъбдбойен, фп ч лбюеуфче рпвхцдбаэезп ъоблб реюбфбефус йнс уйуфенопзп ъбдбойс. уфтплб фелуфб, лпфптбс чщчпдйфус об реюбфш, нпцеф плбоюйчбфшус лбл охмечщн (0) вбкфпн, фбл й вбкфпн 200. ч ретчпн умхюбе, ч пфмйюйй пф чфптпзп, чщчпд бчфпнбфйюеулй ъблбоюйчбефус чл й ру . хртбчмеойе чпъчтбэбефус ртпзтбнне рпмшъпчбфемс рпуме фпзп лбл чуе уйнчпмщ вхдхф ъбрйубощ ч вхжет чщчпдб нпойфп- тб. пуопчопе ъбдбойе реюбфбеф уппвэеойе утбъх це, оеъбчй- уйнп пф упуфпсойс жпопчпзп ъбдбойс. фблйн пвтбъпн, дмс реюбфй утпюощи уппвэеойк дпмцео йурпмшъпчбфшус ъбртпу .PRINT, б ое .TTYIN ймй .TTYOUT. еумй жпопчпе ъбдбойе реюбфбеф рпвхцдбаэйк ъобл й ъчеъ- дпюлх, фп уйуфенощк фетнйобм вхдеф ртйобдмецбфш енх й ъбр- тпущ .TTYOUT йъ пуопчопзп ъбдбойс чщрпмосфшус ое вхдхф, рплб дмс жпопчпзп ое вхдеф чщрпмоео чл . жптнбф нблтплпнбодщ: .PRINT ADDR зде ADDR - бдтеу уфтплй, лпфптха оепвипдйнп обреюбфбфш. ртйнет. .TITLE PRINT.MAC ;ч ьфпн ртйнете ъбртпу .PRINT йурпмшъхефус дмс реюбфй ;уйнчпмпч, ччпдйнщи у фетнйобмб. .MCALL .GTLIN,.PRINT,.EXIT START: .GTLIN #BUFF,#PROMPT ;ччпд уйнчпмпч у фетнйобмб TSTB BUFF ;уфтплб рхуфбс? BEQ 1$ ;дб .PRINT #BUFF ;оеф-реюбфш уфтплй CLRB BUFF BR START 1$: .EXIT BUFF: .BLKW 41. PROMPT: .ASCII /ччедйфе уфтплх : /<200> .END START 5.2.8. .MTIN ъбртпу .MTIN счмсефус нхмшфйфетнйобмшопк жптнпк ъбртп- уб .TTYIN. ъбртпу .MTIN ретеущмбеф пдйо ймй впмее уйнчпмпч йъ вхжетб ччпдб нпойфптб ч вхжет, хлбъбоощк рпмшъпчбфемен. фетнйобм дпмцео вщфш мпзйюеулй учсъбо у фелхэйн ъбдбойен. еумй ъбртпу чщрпмоео хуреыоп, фп нпдйжйгйтпчбоощк бдтеу вхжетб рпмшъпчбфемс вхдеф ъбрйубо ч R0 . еумй тбътсд TCBIT хуфбопчмео ч умпче M.TSTS, фп ъбртпу .MTIN хуфбобчмйчбеф у- тбътсд й ретедбеф хртбчмеойе чщъщчбаэек ртпзтбнне, еумй ччпд у фетнйобмб оечпънпцео (ф.е. оеф уфтплй, еумй тбътсд TTSPC пюйэео ймй оеф уйнчпмб ч вхжете ччпдб, еумй тбътсд TTSPC хуфбопчмео). ч ртпфйчопн умхюбе, .MTIN вхдеф пцйдбфш претбгйй ччпдб й, фен убнщн, чщрпмоеойе ъбдбойс вхдеф ртйпуфбопчмеоп. жптнбф нблтплпнбодщ: .MTIN AREA,ADDR,UNIT[,CHRCNT] зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу вхжетб рпмшъпчбфемс; UNIT - мпзйюеулйк опнет фетнйобмб (моф); CHRCNT - лпмйюеуфчп ретеущмбенщи уйнчпмпч (пф 1 дп 255); еумй ьфпф бтзхнеоф прхэео, фп ретедбефус пдйо уйнчпм. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 2,37 .WORD ADDR .BYTE UNIT,CHRCNT 5.2.9. .MTOUT ъбртпу .MTOUT счмсефус нхмшфйфетнйобмшопк жптнпк ъбр- тпуб .TTYOUT. ъбртпу .MTOUT ретеущмбеф пдйо ймй впмее уйн- чпмпч йъ вхжетб рпмшъпчбфемс ч вхжет чщчпдб фетнйобмб. фет- нйобм дпмцео вщфш мпзйюеулй учсъбо у ъбдбойен. нпдйжйгйтп- чбоощк бдтеу вхжетб рпмшъпчбфемс вхдеф ъбрйубо ч R0, еумй ъбртпу чщрпмоео хуреыоп. еумй ч вхжете чщчпдб оеф учпвпдоп- зп неуфб й тбътсд TCBIT хуфбопчмео ч умпче M.TSTS, фп .MTOUT хуфбобчмйчбеф у-тбътсд й ретедбеф хртбчмеойе чщъщ- чбаэек ртпзтбнне. еумй тбътсд TCBIT пюйэео, чщрпмоеойе ъбдбойс ртйпуфбобчмйчбефус дп феи рпт, рплб ое рпсчйфус учпвпдопе неуфп ч вхжете чщчпдб. жптнбф нблтплпнбодщ: .MTOUT AREA,ADDR,UNIT[,CHRCNT] зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу вхжетб рпмшъпчбфемс; UNIT - мпзйюеулйк опнет фетнйобмб; CHRCNT - лпмйюеуфчп ретедбчбенщи уйнчпмпч (пф 1 дп 255); еумй ьфпф бтзхнеоф прхэео, фп ретедбефус пдйо уйнчпм. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 3,37 .WORD ADDR .BYTE UNIT,CHRCNT 5.2.10. .MTPRNT ъбртпу .MTPRNT счмсефус нхмшфйфетнйобмшопк жптнпк ъбр- тпуб .PRINT. по пухэеуфчмсеф чщчпд пдопк ймй оеулпмшлйи уфтпл уйнчпмпч об хлбъбоощк фетнйобм. жптнбф нблтплпнбодщ: .MTPRNT AREA,ADDR,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу уфтплй, лпфптха оепвипдйнп обреюбфбфш (ф.е. .ASCII /уфтплб/ <200> ймй .ASCIZ /уфтплб/); UNIT - мпзйюеулйк опнет фетнйобмб. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 7,37 .WORD ADDR .BYTE UNIT 5.2.11. .SPFUN ъбртпу .SPFUN йурпмшъхефус змбчощн пвтбъпн дтбкчетбнй хуфтпкуфч дмс чщрпмоеойс урегйбмшощи жхолгйк, ъбчйусэйи пф ьфйи хуфтпкуфч. жптнбф нблтплпнбодщ: .SPFUN AREA,CHAN,FUNC,BUF,WCNT,BLK[,CRTN] зде AREA - бдтеу вмплб йъ 6-фй умпч бтзхнеофпч енф; FUNC - лпд жхолгйй, лпфптбс вхдеф чщрпмосфшус; BUF - бдтеу вхжетб; ьфпф бтзхнеоф дпмцео вщфш тбчео охма, еумй дмс претбгйй вхжет ое фтевхефус; CRTN - бдтеу рпдртпзтбннщ ъбчетыеойс; еумй CRTN ое хлбъбо, фп езп ъобюеойе бчфпнбфйюеулй ртйтбчойчбефус охма; еумй CRTN тбчео охма, фп хртбчмеойе ртпзтбнне рпмшъпчбфемс вхдеф ретедбоп рпуме ъбчетыеойс претбгйй; еумй CRTN тбчео 1, хртбчмеойе вхдеф ретедбоп ртпзтбнне рпмшъпчбфемс оенед- меооп рпуме обюбмб претбгйй; еумй CRTN=N , фп N - бдтеу рпдртпзтбннщ ъбчетыеойс (N>500 (чпушнетйюопк)). бтзхнеофщ CHAN,BLK,WCNT фе це, юфп й ч ъбртпуби .READ/.WRITE. пой йурпмшъхафус фпмшлп фпздб, лпздб оепвип- дйнп ртпйъчеуфй ъбрйуш об нбзойфоха меофх у тбуыйтеоощн нецжбкмпчщн ртпнецхфлпн. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE CHAN,32 .WORD BLK .WORD BUF .WORD WCNT .BYTE 377,FUNC .WORD CRTN ч фбвм.9 ртйчпдсфус жхолгйй ъбртпуб .SPFUN й уппф- чефуфчхаэйе йн лпдщ. фбвмйгб 9 ----------------------------------------------------------- ! ! лпд ! ! жхолгйс !-----------------------! ! ! Mф ! DX ! DY ! LD ! !---------------------------------------------------------! ! ретенпфлб дп фпюлй ъбзтхълй ! 373 ! ! ! ! ! ъбрйуш нефлй EOF ! 377 ! ! ! ! ! ретенпфлб чретед об пдйо вмпл ! 376 ! ! ! ! ! ретенпфлб объбд об пдйо вмпл ! 375 ! ! ! ! ! ъбрйуш ! 371 ! 376 ! 376 ! ! ! юфеойе ! 370 ! 377 ! 377 ! ! ! ъбрйуш у тбуыйтеоощн нецжбкмпчщн! ! ! ! ! ! ртпнецхфлпн ! 374 ! ! ! ! ! пвтбфобс ретенпфлб ч бчфпопнопн ! ! ! ! ! ! тецйне ! 372 ! ! ! ! ! ъбрйуш уп уфйтбойен нбтлетб ! ! ! ! ! ! дбоощи ! ! 375 ! 375 ! ! ! пртедемеойе тбънетб хуфтпкуфчб ! ! ! ! ! ! (фпнб) ! ! - ! 373 ! 373 ! ! юфеойе(ъбрйуш) фбвмйгщ фтбоумс- ! ! ! ! ! ! гйй ! ! ! ! 372 ! ----------------------------------------------------------- дмс йурпмшъпчбойс ъбртпуб .SPFUN оепвипдйнп, юфпвщ дтбкчет уппфчефуфчхаэезп хуфтпкуфчб обипдймус ч рбнсфй й лбобм вщм учсъбо у жбкмпн рп ъбртпух .LOOKUP. ртйнет. .TITLE SPFUN.MAC ;ртйнет йурпмшъпчбойс ъбртпуб .SPFUN. .MCALL .SPFUN,.FETCH,.LOOKUP,.PRINT,.CLOSE,.EXIT START: .FETCH #DSPC,#MT ;ъбзтхъйфш дтбкчет нф: BCS 1$ .LOOKUP #AREA,#4,#MT ;пфлтщфш лбобм BCS 2$ .SPFUN #AREA,#4,#373,#0;ретенпфлб дп фпюлй ;ъбзтхълй .BCS 3$ .CLOSE #4 .EXIT 1$: MOV #FERR,R0 BR 5$ 2$: MOV #LKERR,R0 BR 5$ 3$: MOV #SPERR,R0 5$: .PRINT .EXIT AREA: .WORD 0 MT: .RAD50 /MT / .WORD 0,0,0 FERR: .ASCIZ /пыйвлб .FETCH/ LKERR: .ASCIZ /пыйвлб .LOOKUP/ SPERR: .ASCIZ /пыйвлб .SPFUN/ .EVEN DSPC =. .END START 5.3. ъбртпущ пвэезп объобюеойс 5.3.1. .CDFN ъбртпу .CDFN йурпмшъхефус дмс ретепртедемеойс юйумб лбобмпч ччпдб-чщчпдб. лбцдпе ъбдбойе оеъбчйуйнп пф фпзп счмсефус мй поп пуопчощн ймй жпопчщн, ретчпобюбмшоп пвеуре- юйчбефус 16 (деусфйюопе) лбобмбнй ччпдб-чщчпдб (пф 0 дп 15). ъбртпу .CDFN рпъчпмсеф хчемйюйфш юйумп лбобмпч дп 255 (деусфйюопе) (пф 0 дп 254). лбобм у опнетпн 255 йурпмшъхеф- ус нпойфптпн. пвмбуфш рбнсфй дмс опчщи лбобмпч пртедемсефус ч ртедемби ртпзтбннщ рпмшъпчбфемс. рпд лбцдщк лбобм ччпдб- чщчпдб пфчпдйфус рсфш умпч (уенш умпч дмс нпойфптб ин). ч тецйне ин пвмбуфш рбнсфй дмс дпрпмойфемшощи лбобмпч, хлб- ъбоощи ч ъбртпуе .CDFN, дпмцоб тбурпмбзбфшус ч ойцойи 28л претбфйчопк рбнсфй. телпнеодхефус, юфпвщ ъбртпу .CDFN чщрпмосмус ч обюбме ртпзтбннщ ретед претбгйснй ччпдб- чщчпдб. еумй ч ртпзтбнне йурпмшъхефус впмее пдопзп ъбртпуб .CDFN, фп пвмбуфй лбобмпч дмс ойи ое дпмцощ ретелтщчбфш дтхз дтхзб, оп нпзхф йнефш пдйо й фпф це обюбмшощк бдтеу. дчб ъбртпуб .SRESET й .HRESET чпууфбобчмйчбаф ретчпобюбмш- опе юйумп лбобмпч (16 (деусфйюопк)). умедпчбфемшоп чуе ъбр- тпущ .CDFN дпмцощ чщрпмосфшус рпчфптоп рпуме йурпмшъпчбойс .SRESET ймй .HRESET. ъбнефйн, юфп ъбртпу .CDFN пртедемсеф опчще лбобмщ. пвмбуфш рбнсфй дмс тбоее пртедемеоощи лбобмпч ое йурпмш- ъхефус. фбл, ъбртпу .CDFN дмс 20 (деусфйюопк) лбобмпч ччп- дб-чщчпдб (ч фп чтенс лбл 16 ретчпобюбмшощи лбобмпч хце пртедемеощ) упъдбеф 20 опчщи лбобмпч ччпдб-чщчпдб. пвмбуфш дмс 16-фй ретчпобюбмшощи лбобмпч ое йурпмшъхефус, оп упдет- цйнпе уфбтщи лбобмпч вхдеф улпрйтпчбоп ч опчще. дмс ртпзтбннщ у пчетмекопк уфтхлфхтпк 15-щк лбобм йурпмшъхефус пчетмекощн дтбкчетпн й ое дпмцео йънеосфшус. жптнбф нблтплпнбодщ: .CDFN AREA,ADDR,NUM зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу пвмбуфй рбнсфй дмс опчщи лбобмпч; NUM - юйумп упъдбчбенщи лбобмпч. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,15 .WORD ADDR .WORD NUM ртйнет. .TITLE CDFN.MAC ; ч ьфпн ртйнете ъбртпу .CDFN йурпмшъхефус дмс ; пртедемеойс 32. опчщи лбобмпч. .MCALL .CDFN,.PRINT,.EXIT,.HRESET START: .CDFN #AREA,#CHAN,#255. ;пртедемйфш 32.лбобмб BCC 1$ .PRINT #MSG1 ;реюбфш уппвэеойс .EXIT ;чщипд йъ ртпзтбннщ 1$: .PRINT #MSG2 ;реюбфш уппвэеойс .HRESET .EXIT ;чщипд йъ ртпзтбннщ AREA: .BLKW 3 ;вмпл бтзхнеофпч енф CHAN: .BLKW 5*255. ;пвмбуфш дмс лбобмпч MSG1: .ASCIZ /пыйвлб .CDFN/ MSG2: .ASCII /пртедемеощ 32. опчщи лбобмб/<15><12> .ASCIZ /чпъчтбф л 16. лбобмбн/ .EVEN .END START 5.3.2. .CHAIN ъбртпу .CHAIN рпъчпмсеф пдопк жпопчпк ртпзтбнне йой- гййтпчбфш чщрпмоеойе дтхзпк жпопчпк ртпзтбннщ веъ чнеыб- фемшуфчб претбфптб. ьфпф ртпгеуу нпцеф рпчфптсфшус, й рпъ- чпмсеф птзбойъпчбфш рпумедпчбфемшопе чщрпмоеойе впмшыпзп юйумб ртпзтбнн. сюеклй 500-507 дпмцощ упдетцбфш йнс хуфтпкуфчб й йнс жбкмб (ч лпдби RADIX-50), лпфптщк оепвипдйнп чщъчбфш. сюек- лй 510-777 йурпмшъхафус дмс ретедбюй йожптнбгйй нецдх рпу- медпчбфемшоп чщрпмосенщнй ртпзтбннбнй. жптнбф нблтплпнбодщ: .CHAIN ртйнеюбойс: 1) упдетцйнпе пвмбуфек претбфйчопк рбнсфй, ъб йулмаюе- ойен пвмбуфй рбнсфй лпфптха ъбойнбеф теъйдеофощк нпойфпт й сюеел 500-777, нпцеф йънеосфшус рпуме чщрпмоеойс .CHAIN; еумй .CHAIN чщрпмосефус йъ чйтфхбмшопзп ъбдбойс, фп упдет- цйнпе сюеел 500-777 ое упитбосефус. 2) лбобмщ ччпдб-чщчпдб пуфбафус пфлтщфщнй рпуме чщрпм- оеойс ъбртпуб .CHAIN дмс йурпмшъпчбойс опчпк ртпзтбннпк. пдоблп, лбобмщ ччпдб-чщчпдб, пфлтщфще рп ъбртпух .CDFN ое нпзхф йурпмшъпчбфшус. фбл лбл рп ъбртпух .CHAIN нпойфпт чпууфбобчмйчбеф ретчпобюбмшопе юйумп лбобмпч (16 (деусфйю- опк)), фп ртпзтбннб, лпфптбс пуфбчмсеф жбкмщ пфлтщфщнй ртй чщрпмоеойй .CHAIN ое дпмцоб йурпмшъпчбфш .CDFN. оетеъйдеоф- още дтбкчетщ хуфтпкуфч хдбмсафус йъ рбнсфй ртй чщрпмоеойй .CHAIN, рпьфпнх пой дпмцощ вщфш чопчш ъбзтхцеощ опчпк ртпз- тбннпк. 3) рп 8-пнх тбътсдх ууъ ртпзтбннб нпцеф пртедемйфш, лбл поб вщмб ъбзтхцеоб - рп ъбртпух .CHAIN ймй рп лпнбоде RUN. тбътсд хуфбобчмйчбефус чп чтенс чщрпмоеойс ртпзтбннщ, еумй поб вщмб ъбзтхцеоб у рпнпэша .CHAIN. еумй ртпзтбннб, ъбойнбаэбс сюеклй пф 500 дп 777, ртедобъобюеоб дмс ъбзтхълй рп ъбртпух .CHAIN, фп ч оек дпмцео вщфш хуфб- опчмео 8-пк тбътсд ч ууъ чп чтенс ее фтбоумсгйй. ч ьфпн умхюбе, ртпзтбннб вхдеф ъбзтхцеоб ртбчймшоп. еумй тбътсд ое хуфбопчмео, сюеклй 500-777, упдетцйнпе лпфптщи упитбосефус пф ртедщдхэек ртпзтбннщ, нпзхф чщъчбфш оертбчймшоха тбвпфх опчпк ртпзтбннщ. 4) дмс ъбртпуб .CHAIN ибтблфетощ фе це пыйвлй, юфп й дмс лпнбодщ RUN. ртйнет. ; ч ьфпн ртйнете ртпзтбннб CHAIN1.SAV ъбзтхцбефус ; йъ ртпзтбннщ CHAIN.SAV рпутедуфчпн ъбртпуб .CHAIN .TITLE CHAIN.MAC .MCALL .CHAIN,.TTYIN,.PRINT START: MOV #500,R1 MOV #CHPTR,R2 .REPT 4 MOV (R2)+,(R1)+ ;йнс жбкмб ч сюеклй 500-507 .ENDR .PRINT #PROMT LOOP: .TTYIN ;ретедбфш уйнчпмщ у фф: ч ;сюеклй 510-777 MOVB R0,(R1)+ CMPB R0,#12 ;лпоег уфтплй? BNE LOOP ;оеф CLRB @R1 .CHAIN ;ъбрхул ртпзтбннщ CHAIN1 CHPTR: .RAD50 /DK/ .RAD50 /CHAIN1/ .RAD50 /SAV/ PROMT: .ASCII /ччедйфе дбооще дмс ртпзтбннщ CHAIN1: /<200> .END START ; ртпзтбннб CHAIN1 .TITLE CHAIN1.MAC .MCALL .PRINT,.EXIT JSW = 44 CHAIN$ = 400 STARTC: BIT #CHAIN$,@#JSW ;8 тбътсд хуфбопчмео? BEQ 1$ ;оеф .PRINT #CHAIND ;дб - реюбфш уппвэеойс MOV #510,R0 .PRINT ;реюбфш упдетцйнпзп сюеел ;510-777 .EXIT 1$: .PRINT #NOCHN .EXIT CHAIND: .ASCII /упдетцйнпе сюеел 510-777 : /<200> NOCHN: .ASCIZ /ое хуфбопчмео 8-пк тбътсд !/ .END STARTC 5.3.3. .CMKT ъбртпу .CMKT боохмйтхеф пдйо ймй оеулпмшлп ъбртпупч .MRKT. жптнбф нблтплпнбодщ: .CMKT AREA,ID[,TIME] зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ID - юйумп, йурпмшъхенпе дмс йдеофйжйлбгйй у ъбртпупн .MRKT, лпфптщк оепвипдйнп боохмйтпчбфш; еумй оеулпмшлп ъбр- тпупч .MRKT йнеаф пдйоблпчщк ID, фп боохмйтхефус фпф йъ ойи, лпфптпнх уппфчефуфчхеф обйнеошыйк оейуфелыйк йофетчбм чтенеой; еумй ID=0, фп боохмйтхафус чуе ъбртпущ .MRKT; TIME - бдтеу вмплб йъ 2-и умпч, ч лпфптще нпойфпт ъбрйущчбеф чемйюйох оейурпмшъпчбоопзп чтенеой ч боохмйтп- чбоопн ъбртпуе; ретчпе умпчп упдетцйф ойцоаа зтбойгх йофет- чбмб чтенеой, чфптпе - четиоаа зтбойгх; еумй бдтеу ое хлб- ъбо, фблпк ъбрйуй ое ртпйуипдйф, еумй ID=0, бтзхнеоф TIME йзоптйтхефус. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,23 .WORD ID ртйнеюбойе. боохмйтпчбоощк ъбртпу .MRKT пучпвпцдбеф уппфчефуфчхаэйк ьменеоф пюетедй. ртйнет йурпмшъпчбойс .CMKT ун. ч прйубойй ъбртпуб .MRKT. 5.3.4. .CNTXSW (тецйн FB,XM) ртй ретедбюе хртбчмеойс пф пдопзп ъбдбойс дтхзпнх, нпойфпт чщрпмосеф, фбл объщчбенха, претбгйа ретелмаюеойс лпофелуфб. поб ъблмаюбефус ч упитбоеойй уйуфенпк оепвипдй- нщи рбтбнефтпч дмс пдопъобюопзп пртедемеойс й чщрпмоеойс ъбдбойс. ьфй рбтбнефтщ члмаюбаф чуе тезйуфтщ пвэезп объоб- юеойс, сюеклй 34-52, б фблце чуе тезйуфтщ рръ, еумй ъбртпу .SFPA чщрпмосмус у пфмйюощн пф охмс бдтеупн рпдртпзтбннщ пвтбвпфлй ртетщчбойс пф рръ. ъбртпу .CNTXSW йурпмшъхефус дмс пртедемеойс сюеел рбнсфй, лпфптще вхдхф дпрпмойфемшоп члмаюеощ ч претбгйа ретелмаюеойс лпофелуфб. йопздб, дмс пвпйи ъбдбойк оепвипдйнп оеъбчйуйнпе йурпмшъпчбойе пртедемеоопк сюеклй рбнсфй, лпфптбс ое члма- юеоб ч пвщюоха претбгйа ретелмаюеойс лпофелуфб. обртйнет, еумй ртпзтбннб йурпмшъхеф лпнбодх IOT,фп поб дпмцоб хуфбоп- чйфш ч челфпте 20 бдтеу учпек рпдртпзтбннщ пвтбвпфлй ртетщ- чбойс рп ьфпк лпнбоде. б еумй пвб ъбдбойс - пуопчопе й жпопчпе - йурпмшъхаф лпнбодх IOT, фп челфпт 20 дпмцео чуез- дб упдетцбфш уппфчефуфчхаэйк у чщрпмосенщн ъбдбойен бдтеу. ьфп дпуфйзбефус рхфен члмаюеойс сюеел 20 й 22 ч урйупл бдтеупч ъбртпуб .CNTXSW. еумй ъбртпу .CNTXSW хлбъбо ч ртпзтбнне оеулпмшлп тбъ, фп нпойфпт йурпмшъхеф урйупл бдтеупч рпумедоезп йъ ойи. урйупл бдтеупч .CNTXSW ое нпцеф вщфш ч пвмбуфй учпрйо- зб USR й езп оемшъс йънеосфш ч ртпгеууе тбвпфщ ртпзтбннщ. ч тецйне ин, ъбртпу .CNTXSW йзоптйтхефус дмс чйтфхбмш- ощи ъбдбойк, ф.л. пой ое йурпмшъхаф рбнсфш упчнеуфоп у дтх- зйнй ъбдбойснй. дмс чйтфхбмшощи ъбдбойк челфптщ IOT, TRAP, BPT й челфпт 250 бчфпнбфйюеулй члмаюбафус нпойфптпн XM ч претбгйа ретелмаюеойс лпофелуфб, й, умедпчбфемшоп, нпзхф вщфш йурпмшъпчбощ дтхзйн ъбдбойен веъ .CNTXSW. жптнбф нблтплпнбодщ: .CNTXSW AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу урйулб бдтеупч (дпмцео вщфш пзтбойюео охмен); бдтеуб ч урйуле дпмцощ вщфш юефощнй й ч ртедемби пф 2 дп 476 ймй ч пвмбуфй ъбдбойс рпмшъпчбфемс, ймй ч ртедемби пф 160000 ймй 177776. жптнбф вмплб бтзхнеофпч енф: AREA: .BYTE 0,33 .WORD ADDR ртйнет. .TITLE CNTXSW.MAC ; ч ьфпн ртйнете ъбртпу .CNTXSW йурпмшъхефус дмс ; члмаюеойс сюеел 20,22,177302,177304,177310 ч ; претбгйа ретелмаюеойс лпофелуфб. .MCALL .CNTXSW,.PRINT,.EXIT START: .CNTXSW #AREA,#SWLIST BCC 1$ .PRINT #ADDRER .EXIT 1$: .PRINT #CNTOK .EXIT SWLIST: .WORD 20 .WORD 22 .WORD 177302 .WORD 177304 .WORD 177310 .WORD 0 AREA: .BLKW 2 ADDRER: .ASCIZ /пыйвлб .CNTXSW / CNTOK: .ASCIZ /бдтеуб члмаюеощ ч претбгйа лпофелуфб/ .END START 5.3.5. .CSIGEN ъбртпу .CSIGEN чщъщчбеф тбвпфх йофетртефбфптб лпнбод- опк уфтплй (CSI) ч пвэен тецйне. ч ьфпн тецйне CSI пух- эеуфчмсефус уйофблуйюеулйк бобмйъ лпнбодопк уфтплй й чщрпм- осеф умедхаэйе жхолгйй: 1) ъбзтхцбеф дтбкчетщ хлбъбоощи хуфтпкуфч; 2) чщрпмосеф ъбртпущ .LOOKUP й/ймй .ENTER дмс хлбъбо- ощи жбкмпч; 3) ъбрйущчбеф ч уфел йожптнбгйа п ретелмаюбфемси; 4) чщрпмосеф ъбртпу .CLOSE об лбобмби 0-10 (чпушнетйю- опк). пвмбуфш, лпфптбс пфчпдйфус дмс дтбкчетпч хуфтпкуфч, дпмцоб вщфш дпуфбфпюопк дмс пдопчтенеоопзп тбънеэеойс чуеи оепвипдйнщи дтбкчетпч. еумй ьфпк пвмбуфй оедпуфбфпюоп, фп ртпзтбннб рпмшъпчбфемс нпцеф вщфш тбътхыеоб. рпуме чщрпмоеойс ъбртпуб .CSIGEN тезйуфт R0 вхдеф хлб- ъщчбфш об ретчха учпвпдоха сюеклх рбнсфй рпуме дтбкчетпч хуфтпкуфч. лпздб хртбчмеойе чпъчтбэбефус ртпзтбнне рпмшъпчбфемс рпуме чщрпмоеойс ъбртпуб .CSIGEN, чуе хлбъбооще жбкмщ вхдхф пфлтщфщ дмс ччпдб й/ймй чщчпдб. фтй чщипдощи жбкмб вхдхф пфлтщфщ уппфчефуфчеооп об 0,1 й 2-пн лбобмби; ыеуфш чипдощи - вхдхф учсъбощ у лбобмбнй 3-10 (чпушнетйюопк). обртйнет, ч лпнбодопк уфтпле *,LP:=F1,F2 0-пк й 2-пк лбобмщ пуфбафус учпвпдощнй, 1-к лбобм учсъщ- чбефус у LP:, 3 й 4-к лбобмщ учсъщчбафус уппфчефуфчеооп у жбкмбнй F1 й F2 об DK:, лбобмщ 5-10 (чпушнетйюопк) пуфбафус учпвпдощнй. ртпзтбннб рпмшъпчбфемс нпцеф пртедемйфш пфлтщф ймй оеф лбобм рпутедуфчпн ъбртпуб .WAIT об уппфчефуфчхаэен лбобме, й рпмхюйфш уппвэеойе пв пыйвле, еумй лбобм ое пфлтщф. ретелмаюбфемй й йи бтзхнеофщ ъбрйущчбафус ч уфел . жптнбф нблтплпнбодщ: .CSIGEN DEVSPC,DEFTUP,CSTR[,LINBUF] зде DEVSPC - бдтеу пвмбуфй рбнсфй дмс дтбкчетпч хуфтпкуфч; DEFTUP - бдтеу вмплб йъ 4-и умпч, лпфптщк упдетцйф фйрщ жбкмпч ч лпдби RADIX-50. упдетцйнпе ьфпзп вмплб йурпмшъхефус нпойфптпн, еумй ч лпнбодопк уфтпле ое хлбъбощ фйрщ жбкмпч; CSTR - бдтеу лпнбодопк уфтплй. поб ое дпмцоб упдетцбфш чл , ру , оп дпмцоб плбоюйчбфшус охмечщн вбкфпн. еумй CSTR ое хлбъбо ймй 0, фп ччпд пухэеуфчмсефус у фетнйобмб; рпд хртбчмеойен нпойфптб FB(ин), еумй ччпд пухэеуфчмсефус у уйуфенопзп фетнйобмб, вхдеф бчфпнбфйюеулй чщрпмоео ъбртпу .UNLOCK дмс USR; LINBUF - бдтеу, рп лпфптпнх вхдеф ъбрйубоб лпрйс чче- деоопк лпнбодопк уфтплй; ьфб пвмбуфш пртедемсефус рпмшъпчб- фемен й йнееф дмйох 81 (деусфйюопк) вбкф; лпнбодобс уфтплб ч ьфпк пвмбуфй пзтбойюйчбефус охмечщн вбкфпн. ртйнеюбойс: 1) вмпл, бдтеу лпфптпзп хлбъбо ч DEFTYP, ч 1-пн умпче упдетцйф фйр жбкмб дмс чуеи чипдощи жбкмпч, чп 2, 3 й 4-пн умпчби - фйрщ жбкмпч уппфчефуфчеооп дмс 0,1 й 2-зп чщипдощи жбкмпч. еумй ч вмпле ое хлбъбо фйр жбкмб дмс пртедемеоопзп лбобмб, уппфчефуфчхаэее умпчп дпмцоп упдетцбфш охмш. чуе фйрщ жбкмпч дпмцощ вщфш ъбрйубощ ч лпдби RADIX-50. 2) ъбртпу CSIGEN бчфпнбфйюеулй чпуртйойнбеф лпнбодоха уфтплх йъ лпучеоопзп жбкмб, еумй хлбъбо ччпд у фетнйобмб (CSTR=0) й ртпзтбннб, йурпмшъхаэбс .CSIGEN чщъщчбефус юетеъ лпучеоощк жбкм. 3) бтзхнеоф LINBUF ртедпуфбчмсеф рпмшъпчбфема чпънпц- опуфш чпууфбопчмеойс ретчпобюбмшоп ччедеоопк лпнбодопк уфтплй. 4) еумй пыйвлб ртпйуипдйф ртй ччпде лпнбодопк уфтплй у фетнйобмб, фп CSI реюбфбеф уппвэеойе пв пыйвле об фетнйоб- ме, еумй ртй ччпде йъ рбнсфй - хуфбобчмйчбефус у-тбътсд й лпд пыйвлй (52-пк вбкф). ртйнет. .TITLE CSIGEN.MAC ;ртйнет ртпзтбннщ у йурпмшъпчбойен ъбртпуб .CSIGEN ;чщрпмосеф лпрйтпчбойе хлбъбоопзп жбкмб .MCALL .CSIGEN,.READW,.WRITW,.CLOSE,.SRESET,.EXIT .MCALL .PRINT ERRBYT=52 START: .CSIGEN #DSPACE,#DEXT ;ччеуфй лпнбодоха уфтплх MOV R0,BUFF ;хлбъбфемш об учпвпдоха ;рбнсфш CLR INBLK ;опнет вмплб MOV #AREA,R5 READ: .READW R5,#3,BUFF,#400,INBLK ;юйфбфш вмпл BCC 2$ TSTB @#ERRBYT ;лпоег жбкмб? BEQ EOF ;дб MOV #INERR,R0 1$: .PRINT ;реюбфш уупвэеойс CLR R0 .EXIT 2$: .WRITW R5,#0,BUFF,#400,INBLK ;ъбрйубфш вмпл BCC NOERR MOV #WTERR,R0 BR 1$ NOERR: INC INBLK ;хчемйюйфш уюефюйл й BR READ ;юйфбфш умедхаэйк вмпл EOF: .CLOSE #0 ;лпоег жбкмб - ъблтщфш .CLOSE #3 ;чипдопк й чщипдопк ;лбобмщ .SRESET ;хдбмйфш дтбкчетщ йъ ;рбнсфй .EXIT DEXT: .WORD 0,0,0,0 BUFF: .WORD 0 INBLK: .WORD 0 AREA: .BLKW 5 INERR: .ASCIZ /пыйвлб ччпдб/ WTERR: .ASCIZ /пыйвлб чщчпдб/ .EVEN DSPACE =. .END START 5.3.6. .CSISPC ъбртпу .CSISPC чщъщчбеф тбвпфх CSI ч урегйбмшопн тецй- не. ч ьфпн тецйне по пухэеуфчмсеф уйофблуйюеулйк бобмйъ лпнбодопк уфтплй й ретедбеф урегйжйлбгйй жбкмпч й ретелма- юбфемй, хлбъбооще ч оек, ртпзтбнне рпмшъпчбфемс. ч уре- гйбмшопн тецйне CSI ое чщрпмосеф декуфчйк, бобмпзйюощи жхолгйсн ъбртпупч .FETCH,.CLOSE, .ENTER,.LOOKUP. ретелмаюбфемй й йи бтзхнеофщ ретеущмбафус ч уфел. еумй ртпзтбннб, йурпмшъхаэбс .CSISPC, чщъщчбефус юетеъ лпучеоощк жбкм й CSTR=0, TO .CSISPC бчфпнбфйюеулй чщвйтбеф чипдоха уфтплх йъ лпучеоопзп жбкмб. жптнбф нблтплпнбодщ: .CSISPC OUTSPC,DEFTUP[,CSTR[],LINBUF] зде OUTSPC - бдтеу вмплб йъ 39 умпч дмс урегйжйлбгйк жбкмпч лпнбодопк уфтплй; DEFTYP - бдтеу вмплб йъ 4-и умпч, лпфптщк упдетцйф фйрщ жбкмпч ч лпдби RADIX-50. упдетцйнпе ьфпзп вмплб йурпмшъхефус нпойфптпн, еумй ч лпнбодопк уфтпле ое хлбъбощ фйрщ жбкмпч; CSTR - бдтеу лпнбодопк уфтплй. поб ое дпмцоб упдетцбфш чл,ру , оп дпмцоб плбоюйчбфшус охмечщн вбкфпн. еумй CSTR ое хлбъбо ймй 0, фп ччпд пухэеуфчмсфус у фетнйобмб; LINBUF - бдтеу, рп лпфптпнх вхдеф ъбрйубоб лпрйс чче- деоопк лпнбодопк уфтплй; ьфб пвмбуфш пртедемсефус рпмшъпчб- фемен й йнееф дмйох 81 вбкф; лпнбодобс уфтплб ч ьфпк пвмбу- фй пзтбойюйчбефус охмечщн вбкфпн. вмпл, бдтеу лпфптпзп хлбъбо ч OUTSPC, упдетцйф урегй- жйлбгйа дмс 9 жбкмпч: рп 5 умпч дмс лбцдпзп йъ 3-и чщипдощи жбкмпч й рп 4 умпчб дмс лбцдпзп йъ 6-фй чипдощи жбкмпч. рсфш умпч дмс чщипдопзп жбкмб йнеаф умедхаэее упдетцйнпе: 1-пе умпчп - йнс хуфтпкуфчб; 2 й 3 умпчб - йнс жбкмб; 4-пе умчп - фйр жбкмб; 5-е умпчп - дмйоб чщипдопзп жбкмб. еумй лблпк-фп жбкм пфухфуфчхеф, фп уппфчефуфчхаэйе умпчб вмплб упдетцбф охмй. обртйнет, *DX1:LIST.MAC[15]=PC: рпуме чщрпмоеойс .CSISPC ретчще 5 умпч дмс вмплб, бдтеу лпфптпзп хлбъбо ч OUTSPC, вхдхф йнефш умедхаэее ъоб- юеойс: 16337 RADIX-50 дмс DX1 46173 RADIX-50 дмс LIS 76400 RADIX-50 дмс T 50553 RADIX-50 дмс MAC 00017 дмйоб жбкмб ретчще 4 умпчб дмс урегйжйлбгйк чипдощи жбкмпч (обюй- обс у бдтеуб OUTSPC+36) вхдхф чщзмсдефш фбл: 62170 RADIX-50 дмс PC 0 йнс жбкмб ое хлбъбоп 0 0 еумй ртй ччпде у фетнйобмб ртпйъпымб пыйвлб, USR ое реюбфбеф об фетнйобме уппвэеойе пв пыйвле, б хуфбобчмйчбеф у-тбътсд ч уур. ртйнет. .TITLE CSISPC.MAC ;ч ьфпн ртйнете йурпмшъхефус урегйбмшощк тецйн ;тбвпфщ йофетртефбфптб лпнбодопк уфтплй. ;ъбртпу .DSTATUS пртедемсеф ъбзтхцео мй дтбкчет ;чщипдопзп хуфтпкуфчб й, еумй оеф, фп йурпмшъхефус ;ъбртпу .FETCH дмс ъбзтхълй дтбкчетб ч рбнсфш. ;ъбфен хлбъбощк жбкм хдбмсефус рп ъбртпух .DELETE. .MCALL .CSISPC,.DSTATUS,.FETCH,.PRINT,.EXIT,.DELETE START: MOV SP,R5 ;упитбойфш фелхэйк хлбъбфемш уфелб .CSISPC #OUTSP,#DEFEXT ;ччпд лпнбодопк уфтплй MOV R5,SP ;чпууфбопчйфш хлбъбфемш уфелб .DSTAT #STAT,#OUTSP ;ртпчетйфш обмйюйе дтбкчетб ;чщипдопзп хуфтпкуфчб TST STAT+4 ;дтбкчет ъбзтхцео? BNE 2$ ;дб .FETCH #DEVLOD,#INSPEC;оеф-ъбзтхъйфш дтбкчет BCC 2$ .PRINT #FEFAIL .EXIT 2$: .DELETE #AREA,#0,#INSPEC;хдбмйфш жбкм BCC 3$ .PRINT #NOFILE BR START 3$: .PRINT #FILDEL .EXIT AREA: .BLKW 2 STAT: .BLKW 4 DEFEXT: .WORD 0,0,0,0 FEFAIL: .ASCIZ /пыйвлб .FETCH/ NOFILE: .ASCIZ /жбкм ое обкдео/ FILDEL: .ASCIZ /жбкм хдбмео/ .EVEN OUTSP: .BLKW 5*3 ;урегйжйлбгйй чщи.жбкмпч INSPEC: .BLKW 4*6 ;урегйжйлбгйй чи.жбкмпч DEVLOD: .BLKW 1 ;бдтеу ъбзтхълй дтбкчетб .END START 5.3.6.1. ретедбюб йожптнбгйй п ретелмаюбфемси ртпзтбнне рпмшъпчбфемс. ч пвэен й урегйбмшопн тецйнби тбвпфщ CSI ретелмаюбфемй й йи бтзхнеофщ ретеущмбафус ч уфел. ретелмаюбфемш ртедуфбч- мсеф упвпк облмпооха юетфх (/), ъб лпфптпк умедхеф йнс ретелмаюбфемс (уйнчпм лпй-7). ъб ретелмаюбфемен нпцеф уме- дпчбфш бтзхнеоф, ретед лпфптщн уфбчйфус тбъдемйфемш (:). бтзхнеоф нпцеф вщфш чпушнетйюощн ймй деусфйюощн юйумпн (юйумпн у фпюлпк), ймй лпнвйобгйек вхлчеооп - гйжтпчщи уйнчпмпч (пф пдопзп дп фтеи), ретчщк йъ лпфптщи - вхлчб. ч лпнбодопк уфтпле ретелмаюбфемй нпзхф вщфш учсъбощ у жбкмб- нй. обртйнет: *DK:FOO/A,DX1:FILE.OBJ/A:100 ч ьфпн умхюбе йнеефус дчб ретелмаюбфемс б, ретчщк йъ лпфптщи учсъбо у чипдощн жбкмпн FOO, чфптпк учсъбо у чипд- ощн жбкмпн FILE:OBJ й йнееф бтзхнеоф 100 (чпушнетйюощк). ч фбвм. 10 ртйчпдйфус жптнбф упдетцйнпзп уфелб рпуме чщрпмоеойс ъбртпуб .CSIGEN ймй .CSISPC. хлбъбфемш уфелб вхдеф упдетцбфш бдтеу ретчпзп умпчб. фбвмйгб 10 ----------------------------------------------------------- ! умпчп ! упдетцйнпе ! ъобюеойе ! !---------------------------------------------------------! ! 1 ! N ! юйумп ретелмаюбфемек ч ! ! ! ! лпнбодопк уфтпле ! ! 2 ! йнс ретелмаюбфемс й ! юефощк вбкф упдетцйф йнс ! ! ! опнет жбкмб ! ретелмаюбфемс. тбътсдщ ! ! ! ! 8-14 упдетцбф опнет ! ! ! ! (пф 0 дп 10) жбкмб, у лп-! ! ! ! фптщн учсъбо дбоощк рете-! ! ! ! лмаюбфемш. тбътсд 15 уп- ! ! ! ! детцйф 1, еумй ретелмаюб-! ! ! ! фемш йнееф бтзхнеоф ! ! 3 ! бтзхнеоф ретелмаюб- ! еумй хуфбопчмео 15-к тбъ-! ! ! фемс ймй йнс умедх- ! тсд ч умпче 2, фп умпчп 3! ! ! аэезп ретелмаюбфемс ! упдетцйф бтзхнеоф рете- ! ! ! ! лмаюбфемс. ч ртпфйчопн ! ! ! ! умхюбе - йнс умедхаэезп ! ! ! ! ретелмаюбфемс ! ----------------------------------------------------------- обртйнет, рпуме пвтбвпфлй CSI лпнбодопк уфтплй *FILE/B:20.,FIL2/E=DX1:INPUT/X:SY:20 уфел вхдеф упдетцбфш ъобюеойс, прйубооще ч фбвм. 11. фбвмйгб 11 ----------------------------------------------------------- ! упдетцйнпе ! ъобюеойе ! !---------------------------------------------------------! ! 4 ! юйумп ретелмаюбфемек (ретелмаюбфемш X ! ! ! йнееф дчб бтзхнеофб й тбуунбфтйчбефус лбл ! ! ! дчб ретелмаюбфемс) ! ! 101530 ! рпумедойк ретелмаюбфемш (X) учсъбо у 3-йн ! ! ! жбкмпн й йнееф бтзхнеоф ! ! 20 ! бтзхнеоф ретелмаюбфемс X ! ! 101530 ! умедхаэйк ретелмаюбфемш (X) учсъбо у 3-йн ! ! ! жбкмпн й йнееф бтзхнеоф ! ! 75250 ! бтзхнеоф ретелмаюбфемс X-SY ч лпдби ! ! ! RADIX-50 ! ! 505 ! умедхаэйк ретелмаюбфемш (е) учсъбо у 1-н ! ! ! жбкмпн й ое йнееф бтзхнеофб ! ! 100102 ! ретелмаюбфемш (ч) учсъбо у 0-н жбкмпн й ! ! ! йнееф бтзхнеоф ! ! 24 ! бтзхнеоф ретелмаюбфемс ч ! ----------------------------------------------------------- ртйнеюбойс: 1) чп нопзйи умхюбси, ртпзтбнне рпмшъпчбфемс ое фте- вхефус пвтбвпфлб ретелмаюбфемек рпутедуфчпн CSI. пдоблп, чпънпцео оертедобнетеоощк ччпд ретелмаюбфемек рпмшъпчбфе- мен. ч ьфпн умхюбе, телпнеодхефус упитбойфш ъобюеойе хлбъб- фемс уфелб ретед чщъпчпн CSI, б ъбфен чпууфбопчйфш езп. ъбнефйн, юфп лпнбодобс уфтплб веъ ретелмаюбфемек ретенеэбеф хлбъбфемш уфелб об пдоп умпчп. 5.3.7. .ABTIO ъбртпу .ABTIO рпъчпмсеф фелхэенх ъбдбойа ъбртефйфш чуе претбгйй ччпдб - чщчпдб об хлбъбоопн лбобме, ое ртетщчбс чщрпмоеойс ртпзтбннщ. ъбртеэбефус йурпмшъпчбфш .ABTIO ч рпдртпзтбннби ъбчет- ыеойс. жптнбф нблтплпнбодщ: .ABTIO CHAN зде CHAN - опнет лбобмб. 5.3.8. .CSTAT (тецйн FB,XM) ъбртпу .CSTAT ретедбеф ртпзтбнне рпмшъпчбфемс йожптнб- гйа п упуфпсойй лбобмб. жптнбф нблтплпнбодщ: .CSTAT AREA,CHAN,ADDR зде AREA - бдтеу вмплб йъ дчхи умпч бтзхнеофпч енф; CHAN - опнет лбобмб, йожптнбгйа п лпфптпн фтевхефус рпмхюйфш; ADDR - бдтеу вмплб йъ 6-фй умпч дмс йожптнбгйй п упу- фпсойй лбобмб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE CHAN,27 .WORD ADDR ртйнет. .TITLE CSTAT.MAC ;ч ьфпн ртйнете ъбртпу .CSTAT йурпмшъхефус дмс пртедемеойс ;хуфтпкуфчб, учсъбопзп у хлбъбоощн лбобмпн. .MCALL .CSTAT,.CSIGEN,.PRINT,.EXIT START: MOV SP,R5 .CSIGEN #DEVSDC,#DEFEXT ;ччпд лпнбодопк уфтплй MOV R5,SP .CSTAT #AREA,#0,#ADDR ;рпмхюйфш йожптнбгйа п ;лбобме BCS NOCHAN ;лбобм ое пфлтщф MOV #ADDR+10,R5 MOV (R5)+,R0 ADD (PC)+,R0 .RAD50 / 0/ ADD (R5),R0 ;рпмхюйфш йнс хуфтпкуфчб MOV R0,DEVNAM .EXIT NOCHAN: .PRINT #MSG .EXIT MSG: .ASCIZ /оеф чщипдопзп жбкмб - лбобм ое пфлтщф/ .EVEN AREA: .BLKW 5 ADDR: .BLKW 6 DEVNAM: .WORD 0 ;йнс хуфтпкуфчб DEFEXT: .WORD 0,0,0,0 DEVSDC =. ;бдтеу ъбзтхълй дтбкчетб .END START 5.3.9. .DATE ъбртпу .DATE ретедбеф йожптнбгйа п фелхэек дбфе йъ уйуфенопк сюеклй дбфщ ч тезйуфт R0. сюеклб дбфщ йнееф уме- дхаэйк жптнбф: тбътсдщ 13-10 - неусг; тбътсдщ 9-5 - деош; тбътсдщ 4-0 - зпд. ъобюеойе зпдб ч тбътсдби у 0 рп 4 счмсефус жблфйюеулйн зпдпн нйоху 1972. жптнбф нблтплпнбодщ: .DATE охмечпе ъобюеойе ч R0 хлбъщчбеф об фп, юфп рпмшъпчб- фемш дбфх ое пртедемйм. ртйнет. .TITLE DATE.MAC ;ртйнет рпдртпзтбннщ пвтбвпфлй дбфщ (ччедеопк рп лпнбоде ;DATE) у йурпмшъпчбойен ъбртпуб .DATE, л лпфптпк нпцоп ;пвтбфйфшус йъ ртпзтбннщ рпмшъпчбфемс. ; ;чщи.дбооще: R0 = неусг (1-12) ; R1 = деош (1-31) ; R2 = зпд (дче рпумедойе гйжтщ) ; ;пыйвлй: R0 = 0, еумй дбфб ое ччедеоб ; .MCALL .DATE DATE:: .DATE ;рпмхюйфш дбфх йъ R0 MOV R0,R2 BEQ 1$ ;чефчмеойе, еумй дбфб ое ;ччедеоб BIC #37,R2;чщвтбфш зпд ADD #72,R2 MOV R0,R1 ASL R1 ;чщвтбфш деош ASL R1 ASL R1 SWAB R1 BIC #37,R1;чщвтбфш неусг SWAB R0 ASR R0 ASR R0 BIC #37,R0 1$: RETURN ;чщипд йъ рпдртпзтбннщ .END 5.3.10. .DEVICE(тецйн FB,XM) ъбртпу .DEVICE рпъчпмсеф ъбрйубфш пртедемеооще ъобюе- ойс рп хлбъбоощн бдтеубн рпуме чщипдб йъ ртпзтбннщ (рп .EXIT ймй ух/у). ьфб жхолгйс ч пуопчопн йурпмшъхефус дмс ъбрйуй ч тезйуфтщ хуфтпкуфч оепвипдйнщи ъобюеойк. ч ртпзтбнне нпцеф вщфш оеулпмшлп ъбртпупч .DEVICE й рпмшъпчбфемш нпцеф учсъбфш чуе фбвмйгщ бдтеупч ч пдох фбв- мйгх. ъбртпу .DEVICE йзоптйтхефус, еумй по чщдбефус йъ чйт- фхбмшопзп ъбдбойс ч тецйне ин. жптнбф нблтплпнбодщ: .DEVICE AREA,ADDR[,LINK] зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу фбвмйгщ бдтеупч й ъобюеойк; LINK - ртпйъчпмшощк бтзхнеоф, лпфптщк рпъчпмсеф учс- ъбфш фбвмйгщ бдтеупч й ъобюеойк рпумедпчбфемшощи ъбртпупч .DEVICE. еумй бтзхнеоф LINK прхэео, фп хце ухэеуфчхаэбс фбвмйгб ъбнеосефус опчпк ртй пвобтхцеойй пюетедопзп ъбртпуб .DEVICE. фбвмйгб бдтеупч й ъобюеойк нпцеф йнефш дчб жптнбфб - учсъбоощк й ое учсъбоощк. пвб жптнбфб дпмцощ плбоюйчбфшус охмен. учсъбоощк жптнбф дпмцео йнефш ч ретчпн умпче фблце опмш. об тйу.5 рплбъбощ тбъмйюоще жптнбфщ фбвмйгщ бдтеупч й ъобюеойк. ое учсъбоощк учсъбоощк ------------- ------------- ADDR: ! бдтеу ! ADDR: ! 0 ! ------------- ------------- ! ъобюеойе ! ! бдтеу ! ------------- ------------- ! бдтеу ! ! ъобюеойе ! ------------- ------------- ! ъобюеойе ! ! бдтеу ! ------------- ------------- . ! ъобюеойе ! . ------------- . . ------------- . ! бдтеу ! . ------------- ------------- ! ъобюеойе ! ! бдтеу ! ------------- ------------- ! 0 ! ! ъобюеойе ! ------------- ------------- ! 0 ! ------------- тйу.5 5.3.11. .DSTATUS ъбртпу .DSTATUS йурпмшъхефус дмс рпмхюеойс йожптнбгйй пв пртедемеоопн хуфтпкуфче. жптнбф нблтплпнбодщ: .DSTATUS DSTBLK,DEVNAM зде DSTBLK - бдтеу вмплб йъ 4-и умпч упуфпсойс хуфтпкуфчб; DEVNAM - бдтеу йнеой хуфтпкуфчб ч лпдби RADIX-50. рет- чщн умпчпн вмплб упуфпсойс счмсефус умпчп упуфпсойс хуф- тпкуфчб. чпънпцоще ъобюеойс тбътсдпч умпчб упуфпсойс хуф- тпкуфчб ртйчедеощ ч фбвм.12. фбвмйгб 12 ----------------------------------------------------------- ! тбътсд ! упдетцйнпе ! ъобюеойе ! !---------------------------------------------------------! ! 0-7 ! 0 ! лбууефб нбзойфощи дйулпч ! ! ! 2 ! мпзйюеулпе хуфтпкуфчп тезйуфтбгйй ! ! ! ! пыйвпл ! ! ! 3 ! рпуфтпюоп-реюбфбаэее хуфтпкуфчп ! ! ! 4 ! уйуфенощк фетнйобм ймй дтбкчет ! ! ! ! BATCH ! ! ! 6 ! зйвлйе дйулй у дчпкопк рмпфопуфша ! ! ! 7 ! ретжпмеофпюопе хуфтпкуфчп ччпдб й ! ! ! ! чщчпдб ! ! ! 11 ! облпрйфемш об нбзойфопк меофе ! ! ! 21 ! рблеф нбзойфощи дйулпч DP ! ! ! ! (29 нзвбкф) ! ! ! 22 ! зйвлйе дйулй ! ! ! 25 ! жйлфйчопе хуфтпкуфчп ! ! ! 34 ! лбууефобс нбзойфобс меофб ! ! ! 41 ! хуфтпкуфчп реюбфй рпумедпчбфемшоп-! ! ! ! зп фйрб ! ! ! 42 ! дтбкчет пвнеоб нецдх ъбдбойснй ! ! ! 46 ! дтбкчет мпзйюеулпзп дйулб ! ! ! 47 ! дтбкчет тбуыйтеоопк рбнсфй ! ! ! 50 ! дйулй чйоюеуфетулпзп фйрб ймй ! ! ! ! зйвлйе нйой-дйулй ! ! ! 51 ! тедблфпт лпнбодопк уфтплй ! ! 10 ! 1 ! дтбкчет хуфтпкуфчб дпрхулбеф ! ! ! ! йурпмшъпчбойе ъбртпуб .SPFUN ! ! ! 0 ! ое дпрхулбефус йурпмшъпчбойе ! ! ! ! ъбртпуб .SPFUN ! ! 11 ! - ! теъетчощк ! ! 12 ! 1 ! хуфтпкуфчп оеуртбчпюопк уфтхлфхтщ ! ! 13 ! 1 ! хуфтпкуфчп фпмшлп дмс ъбрйуй ! ! 14 ! 1 ! хуфтпкуфчп фпмшлп дмс юфеойс ! ! 15 ! 1 ! хуфтпкуфчп у ртпйъчпмшощн дпуфхрпн! ! ! ! л дбоощн ! ! ! 0 ! хуфтпкуфчп у рпумедпчбфемшощн ! ! ! ! дпуфхрпн л дбоощн ! ----------------------------------------------------------- чфптпе умпчп ртедуфбчмсеф упвпк дмйох дтбкчетб хуф- тпкуфчб ч вбкфби. фтефше умпчп ртедуфбчмсеф упвпк бдтеу ъбзтхълй дтбкче- тб рмау 6. еумй 0 - дтбкчетб ч рбнсфй оеф. юефчетфпе умпчп ртедуфбчмсеф упвпк енлпуфш хуфтпкуфчб (ч вмплби) дмс хуфтпкуфч у ртпйъчпмшощн дпуфхрпн л дбоощн ймй 0 дмс хуфтпкуфч у рпумедпчбфемшощн дпуфхрпн л дбоощн. йнс хуфтпкуфчб ч DEVNAM нпцеф вщфш мпзйюеулйн йнеоен, ртйучпеоощн рпмшъпчбфемен. ртйнет йурпмшъпчбойс .DSTATUS ун. ч прйубойй ъбртпуб .CSISPC. 5.3.12. .EXIT ъбртпу .EXIT чщъщчбеф плпоюбойе чщрпмоеойс ртпзтбннщ рпмшъпчбфемс й ретедбеф хртбчмеойе KMON. ретед чщипдпн йъ ртпзтбннщ чщрпмоеойе чуеи йойгййтп- чбоощи претбгйк ччпдб-чщчпдб й /ймй рпдртпзтбнн ъбчетыеойс вхдеф ъблпоюеоп. чуе оечщрпмоеооще ъбртпущ .MRKT й .CMKT вхдхф боохмйтпчбощ. еумй юбуфш жпопчпк ртпзтбннщ ъбойнбеф пвмбуфш рбнсфй KMON й USR, фп поб вхдеф ъбрйубоб ч вмплй дмс чтенеоопзп итбоеойс дбоощи об уйуфенопе хуфтпкуфчп (еумй тбоее вщмб чщрпмоеоб лпнбодб SET EXIT SWAP). рпуме ьфпзп KMON й USR ъбзтхцбафус ч рбнсфш й хртбчмеойе ретедбефус лмбчйбфхтопнх нпойфптх. еумй вщмб чщрпмоеоб лпнбодб SET EXIT NOSWAP, фп ртпзтбннб рпмшъпчбфемс ртпуфп ретеъбрйущчбефус. еумй R0 = 0 чп чтенс чщрпмоеойс .EXIT, фп чщрпмосефус претбгйс бобмпзйюобс .HRESET, ъбртеэбаэбс рпумедхаэее чщрпмоеойе лпнбод REENTER, START ймй CLOSE. ъбртпу .EXIT рпъчпмсеф ртпзтбнне ретедбфш лпнбодщ лмб- чйбфхтопнх нпойфптх, йурпмшъхс сюеклй 500-777, дмс йи рпу- медхаэезп чщрпмоеойс. дмс ьфпзп оепвипдйнп: 1) сюеклб 510 дпмцоб упдетцбфш пвэее лпмйюеуфчп вбкфпч ч лпнбоде, лпфптбс вхдеф ретедбоб KMON; 2) лпнбодщ ъбрйущчбафус, обюйобс у сюеклй 512; уфтплб дпмцоб вщфш ъбрйубоб ч уйнчпмби лпй-7 й ое дпмцоб упдетцбфш чл ймй ру ; обртйнет: .=510 .WORD B-A A: .ASCIZ /COPY A.MAC W.MAC/ .ASCIZ /DELETE A.MAC/ B= . 3) ртпзтбннб рпмшъпчбфемс дпмцоб хуфбопчйфш 5 ймй 11 тбътсд ч ууъ ретед чщрпмоеойен .EXIT; упдетцйнпе R0 дпмцоп вщфш охмечщн. лпздб ъбртпу .EXIT йурпмшъхефус дмс ретедбюй лпнбод оепвипдйнп хюйфщчбфш умедхаэее: 1) еумй ьфп учпкуфчп йурпмшъхефус ртпзтбннпк, лпфптбс чщъщчбефус у рпнпэша лпучеоопзп жбкмб, фп чуе лпнбодщ уме- дхаэйе ч лпучеоопн жбкме ъб лпнбодпк, йойгййтхаэек рхул ьфпк ртпзтбннщ, чщрпмосфшус ое вхдхф; 2) лпучеоощк жбкм нпцеф вщфш чщъчбо, йурпмшъхс ьфп учпкуфчп, фпмшлп ч фпн умхюбе еумй ретедбчбенбс KMON уфтплб упдетцйф едйоуфчеооха урегйжйлбгйа жбкмб; рпрщфлб ретедбюй оеулпмшлйи лпучеоощи жбкмпч ймй лпнвйобгйк лпучеоощи жбкмпч у дтхзйнй лпнбодбнй KMON ртйчпдйф л оертбчймшощн теъхмшфб- фбн; 3) .EXIT ч рпдртпзтбнне ъбчетыеойс оедпрхуфйн. ъбне- фйн, юфп ъбртпу .EXIT йънеосеф фелхэее рпмпцеойе хлбъбфемс уфелб. жптнбф нблтплпнбодщ: .EXIT ртйнет. .TITLE EXIT.MAC ;ч ьфпн ртйнете, рпуме ъбчетыеойс ртпзтбннщ, ;лмбчйбфхтопнх нпойфптх ретедефус лпнбодобс ;уфтплб об реюбфш уртбчпюойлб хуфтпкуфчб DK: .MCALL .EXIT CHNIF$ = 4000 JSW = 44 START: MOV #510,R0 MOV #CMDSTR,R1 MOV #START,SP 1$: MOVB (R1)+,(R0)+ CMP R1,#CMDEND BLO 1$ BIS #CHNIF$,@#JSW ;хуфбопчйфш 11-щк тбътсд ;ч JSW CLR R0 ;ч R0 дпмцео вщфш 0 .EXIT CMDSTR: .WORD CMDEND-CMDSTR ;дмйоб лпнбодопк уфтплй .ASCIZ "DIRECT/FULL *.MAC" ;лпнбодобс уфтплб CMDEND: .EVEN .END START 5.3.13. .FETCH,.RELEAS ъбртпу .FETCH ъбзтхцбеф дтбкчет хуфтпкуфчб йъ уйуфен- опзп хуфтпкуфчб ч претбфйчоха рбнсфш. жптнбф нблтплпнбодщ: .FETCH ADDR,DEVNAM зде ADDR - бдтеу ъбзтхълй дтбкчетб; DEVNAM - бдтеу йнеой хуфтпкуфчб ч лпдби RADIX-50. рпуме чщрпмоеойс .FETCH, R0 упдетцйф бдтеу ретчпк, тбурпмпцеоопк чщые дтбкчетб, сюеклй претбфйчопк рбнсфй. еумй дтбкчет хце ъбзтхцео ч рбнсфш, R0 вхдеф упдетцбфш бдтеу ъбзтхълй ADDR. дмс чщрпмоеойс ъбртпупч .CLOSE .READC .READ .SFDAT .LOOKUP .WRITE .WRITC .FPROT .ENTER .READW .SPFUN .RENAME .WRITW .DELETE оепвипдйнп обмйюйе ч рбнсфй дтбкчетпч уппфчефуфчхаэйи хуф- тпкуфч. ч тецйне FB, дтбкчетщ дмс пуопчопк ртпзтбннщ ймй уйу- фенопзп ъбдбойс дпмцощ ъбзтхцбфшус рп лпнбоде LOAD ретед йи чщрпмоеойен. ч тецйне ин, дтбкчетщ хуфтпкуфч дпмцощ ъбзтхцбфшус ч мавха пвмбуфш рбнсфй (жпопчха ймй пуопчоха) рп лпнбоде LOAD ретед ъбзтхълпк ртпзтбнн. ртйнет йурпмшъпчбойс .FETCH ун. ч прйубойй ъбртпуб .CSISPC. ъбртпу .RELEAS хдбмсеф дтбкчет хлбъбоопзп хуфтпкуфчб йъ рбнсфй. ъбртпу .RELEAS йзоптйтхефус, еумй дтбкчет: 1) счмсефус юбуфша RMON (ф.е. счмсефус дтбкчетпн уйу- фенопзп хуфтпкуфчб); 2) пфухфуфчхеф ч рбнсфй; 3) вщм ъбзтхцео рп лпнбоде LOAD. ъбртпу .RELEAS ч пуопчопк ртпзтбнне ймй ч уйуфенопн ъбдбойй рпд хртбчмеойен нпойфптб FB(ин) чуездб йзоптйтхеф- ус, ф.л. нпойфптщ FB ймй ин нпзхф йурпмшъпчбфш фпмшлп фе дтбкчетщ, лпфптще вщмй ъбзтхцеощ рп лпнбоде LOAD. жптнбф нблтплпнбодщ: .RELEAS DEVNAM зде DEVNAM - бдтеу йнеой хуфтпкуфчб ч лпдби RADIX-50. ртйнет. .TITLE RELEAS.MAC ;ч ьфпн ртйнете дтбкчет ту: ъбзтхцбефус ч рбнсфш, ;б ъбфен рп ъбртпух .RELEAS хдбмсефус йъ рбнсфй. .MCALL .FETCH,.RELEAS,.EXIT,.PRINT START: .FETCH #DSPACE,#DEVNAM ;ъбзтхъйфш дтбкчет BCS FERR .RELEAS #DEVNAM ;хдбмйфш дтбкчет BR START FERR: .PRINT #NODEV .EXIT DEVNAM: .RAD50 /PC / NODEV: .ASCIZ " хуфтпкуфчп пфухфуфчхеф !" .EVEN DSPACE: .END START 5.3.14. .FORK ъбртпу .FORK йурпмшъхефус ч дтбкчетби дмс уйоитпойъб- гйй тбвпфщ уйуфенщ. ъбртпух .FORK дпмцео ртедыеуфчпчбфш ъбртпу .INTEN, .FORK фтевхеф дмс учпезп чщрпмоеойс вмпл рбнсфй йъ 4-и умпч. упдетцйнпе тезйуфтпч R4 й R5 рпуме чщрпмоеойс ъбртпуб упитбосефус. .FORK йурпмшъхефус ч фпн умхюбе, лпздб дпмцео вщфш хрптсдпюео дпуфхр л уйуфенощн теухтубн ймй дпмцоб вщфш чщрпмоеоб ое лтйфйюеулбс рп чтене- ой, оп впмшыбс рп тбънетх, юбуфш ртпзтбннщ. рпуме пвтбвпфлй нпойфптпн ъбртпуб .FORK ртетщчбойе пф хуфтпкуфчб вхдеф ъбр- теэеоп й дтбкчет вхдеф тбвпфбфш об охмечпн ртйптйфефе. жптнбф нблтплпнбодщ: .FORK FKBLK зде FKBLK - бдтеу вмплб йъ 4-и умпч (дпмцео вщфш ч дтбкчете хуфтпкуфчб). 5.3.15. .FPROT у рпнпэша ъбртпуб .FPROT хуфбобчмйчбефус ймй пфнеосеф- ус ъбэйфб жбкмб (пф хдбмеойс). об ъбэйэеощк жбкм ое тбурпуфтбосефус декуфчйс ъбртпупч .CLOSE, .DELETE, .ENTER й .RENAME. пдоблп дбооще, итбосэйе- ус ч ъбэйэеопн жбкме, нпцоп нпдйжйгйтпчбфш. обртйнет, йурпмшъпчбойе ъбртпуб .LOOKUP дмс ъбэйэеоопзп жбкмб ъб лпфптщн умедхеф .WRITE, йурпмшъхаэйк фпф це лбобм, дпрху- лбефус. ъбэйфб жбкмб пф хдбмеойс тебмйъхефус хуфбопчлпк 15-зп тбътсдб ч умпче упуфпсойс уртбчпюойлб хуфтпкуфчб дмс хлб- ъбоопзп жбкмб. жптнбф нблтплпнбодщ: .FPROT AREA,CCHAN,DBLK,PROT зде AREA - бдтеу вмплб (йъ 4-и умпч) бтзхнеофпч енф; CHAN - опнет лбобмб ( пф 0 дп 376); DBLK - бдтеу вмплб (йъ 4-и умпч), упддетцбэезп урегй- жйлбгйа жбкмб ч лпдби RADIX-50; PROT - лпоуфбофб, тбчобс 1 (ъбэйфб хуфбобчмйчбефус) ймй 0 (ъбэйфб пфнеосефус). жптнбф вмплб бтзхнеофпч: AREA: .BYTE CHAN,43 .WORD DBLK .WORD PROT ртйнет. .TITLE FPROT.MAC ;ч ртйнете йурпмшъхафус ъбртпущ .FPROT й .SFDAT ;дмс хуфбопчлй ъбэйфщ хлбъбоопзп жбкмб й ;йънеоеойс дбфщ упъдбойс жбкмб об фелхэха дбфх. ;лпнбодобс уфтплб ччпдйфус у фетнйобмб. .MCALL .FPROT,.FETCH,.CSISPC,.DSTATUS,.SFDAT .MCALL .PRINT,.EXIT START: .CSISPC #OUTSP,#DEFEXT ;ччпд лпнбодопк уфтплй .DSTAT #STAT,#INSPEC ;ртпчетйфш обмйюйе ;хуфтпкуфчб TST STAT+4 ;дтбкчет ъбзтхцео? BNE 1$ ;дб .FETCH #DRVLOD,#INSPEC ;оеф-ъбзтхъйфш дтбкчет BCC 1$ .PRINT #LOFAIL BR START 1$: .FPROT #EMTBLK,#0,#INSPEC,#1;хуфбопчйфш ъбэйфх ;жбкмб BCC 2$ .PRINT #PRFAIL BR START 2$: .SFDAT #EMTBLK,#0,#INSPEC,#0;йънеойфш дбфх об ;фелхэха BCC 3$ .PRINT #SDFAIL BR START 3$: .EXIT EMTBLK: .BLKW 4 DEFEXT: .WORD 0,0,0,0 STAT: .BLKW 4 ;вмпл упуфпсойс хуфтпкуфчб LOFAIL: .ASCIZ /пыйвлб ъбртпуб .FETCH/ PRFAIL: .ASCIZ /пыйвлб ъбртпуб .FPROT/ SDFAIL: .ASCIZ /пыйвлб ъбртпуб .SFDAT/ .EVEN OUTSP: .BLKW 5*3 INSPEC: .BLKW 4*6 DRVLOD: .BLKW 1 .END START 5.3.16. .GTIM ъбртпу .GTIM рпъчпмсеф ртпзтбнне пртедемйфш фелхэее чтенс ухфпл. чемйюйоб чтенеой пртедемсефус ч фйлби (1 фйл=1/50 у). жптнбф нблтплпнбодщ: .GTIM AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу вмплб йъ 2-и умпч, упдетцбэезп ъобюеойе чтенеой чп чохфтеооен жптнбфе; ретчпе умпчп упдетцйф уфбт- ыйе тбътсдщ, чфптпе умпчп - нмбдыйе. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,21 .WORD ADDR рпмшъпчбфемш дпмцео ртедхунпфтефш ч учпек ртпзтбнне претбгйа ртепвтбъпчбойс фйлпч ч юбущ-нйохфщ-уелходщ. ч тецйне FB чемйюйоб чтенеой бчфпнбфйюеулй чпууфбобчмйчбефус рпуме 24:00:, ч тецйне SJ претбгйс чпууфбопчмеойс чщрпм- осефус, еумй ртй зеоетбгйй уйуфенщ вщмб пртедемеоб рпддетц- лб фбкнетб. ртйнет. .TITLE .GTIM.MAC ;ч ьфпн ртйнете рпмшъпчбфемш рпмхюбеф фелхэее чтенс ;ч фйлби. .MCALL .GTIM,.EXIT START: .GTIM #AREA,#TICKS ;пртедемйфш фелхэее ;чтенс .EXIT TICKS: .WORD 0,0 AREA: .BLKW 2 .END START 5.3.17. .GTJB ъбртпу .GTJB рпъчпмсеф ртпзтбнне пртедемйфш опнет чщрпмосенпзп ъбдбойс, ойцоаа зтбойгх рбнсфй й дтхзйе рбтб- нефтщ ъбдбойс. жптнбф нблтплпнбодщ: .GTJB AREA,ADDR[,JOBBLK] зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу вмплб йъ 8-нй ймй 12-фй умпч дмс рбтбнеф- тпч ъбдбойс (ун. фбвм.13); JOBBLK - бдтеу вмплб йъ 3-и умпч, упдетцбэезп мпзйюеу- лпе йнс ъбдбойс ч лпдби лпй-7. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,20 .WORD ADDR .WORD JOBBLK фбвмйгб 13 ----------------------------------------------------------- ! умпчп ! упдетцйнпе ! !---------------------------------------------------------! ! 1 ! опнет ъбдбойс; ч тецйнби FB,XM веъ рпд- ! ! ! детцлй уйуфенощи ъбдбойк: жпопчпе - 0, ! ! ! пуопчопе - 2; ! ! ! ч тецйнбш FB,ин у рпддетцлпк уйуфенощи ъб-! ! ! дбойк: жпопчпе - 0, уйуфеноще - 2,4,6,10, ! ! ! 12,14, пуопчопе - 16 ! ! 2 ! четиосс зтбойгб пвмбуфй ъбдбойс ! ! 3 ! ойцосс зтбойгб пвмбуфй ъбдбойс ! ! 4 ! обюбмп пвмбуфй лбобмпч ччпдб-чщчпдб ! ! 5 ! бдтеу унеыбоопк пвмбуфй ъбдбойк дмс ! ! ! нпойфптпч FB й XM ! ! 6 ! нмбдыйк вбкф - опнет уйуфенопзп фетнйобмб ! ! ! дмс уйуфен у нхмшфйфетнйобмшопк рпддетцлпк! ! 7 ! ч тецйне ин - четиойк чйтфхбмшощк бдтеу ! ! ! дмс чйтфхбмшопзп ъбдбойс. ! ! 10-12 ! ч тецйнби FB,ин у рпддетцлпк уйуфенощи ! ! ! ъбдбойк - мпзйюеулпе йнс ъбдбойс ч лпдби ! ! ! лпй-7 ! ----------------------------------------------------------- ртйнеюбойе. йожптнбгйа оепвипдйнха дмс хртбчмеойс чщрпмоеойен пуопчопзп ъбдбойс, нпойфпт итбойф ч, фбл объщ- чбенпк, унеыбоопк пвмбуфй, лпфптбс упъдбефус чп чтенс ъбз- тхълй пуопчопк ртпзтбннщ ч нмбдыйи бдтеуби пуопчопк пвмбуфй рбнсфй. умпчп 4 упдетцйф бдтеу, у лпфптпзп обюйобефус пвмбуфш лбобмпч ччпдб-чщчпдб. пвщюоп ьфпф бдтеу обипдйфус ч ртеде- мби RMON. пдоблп, рпуме чщрпмоеойс .CDFN, пвмбуфш лбобмпч ччпдб-чщчпдб ъбнеосефус об пвмбуфш, бдтеу лпфптпк хлбъщ- чбефус рпмшъпчбфемен. ртйнет. .TITLE GTJB.MAC ;ч дбоопн ртйнете у рпнпэша ъбртпуб .GTJB пртедемсефус ;ъбзтхцеоп мй пуопчопе ъбдбойе. ;ртпзтбннб нпцеф чщрпмосфшус лбл рпд хртбчмеойен нпойфптб ;FB, йнеаэезп рпддетцлх уйуфенощи ъбдбойк, фбл й рпд ;хртбчмеойен нпойфптб FB, лпфптщк ое йнееф рпддетцлй ;уйуфенощи ъбдбойк. .MCALL .GVAL,.GTJB,.PRINT,.EXIT SYSGEN = 372 ;умпчп рбтбнефтпч зеоетбгйй SYSJOB = 40000 ;тбътсд уйуфенопзп ъбдбойс START: MOV #2, R1 .GVAL #LIST, #SYSGEN ;рпмхюйфш ч R0 упдетцйнпе ;сюеклй нпойфптб BIT #SYSJOB,R0 ;еуфш рпддетцлб уйуфенопзп ;ъбдбойс BEQ 1$ MOV #16, R1 ;опнет пуопчопзп ъбдбойс=16 1$: .GTJB #LIST,#JOBARG,R1;рпмхюйфш рбтбнефтщ BCS 2$ .PRINT #FGLOAD .EXIT 2$: .PRINT #NOFG .EXIT LIST: .BLKW 3 JOBARG: .BLKW 12. ;вмпл рбтбнефтпч ъбдбойс FGLOAD: .ASCIZ / ртпзтбннб ч пуопчопк пвмбуфй рбнсфй/ NOFG: .ASCIZ /оеф ртпзтбннщ ч пуопчопк пвмбуфй/ .EVEN .END START 5.3.18. .GTLIN ъбртпу .GTLIN йурпмшъхефус дмс рпмхюеойс пф рпмшъпчб- фемс лпнбодопк йожптнбгйй, пфмйюопк пф лпнбодощи уфтпл CSI й рпъчпмсеф ртпзтбнне тбвпфбфш у лпучеоощнй жбкмбнй. ъбртпу .GTLIN фтевхеф обмйюйс USR ч рбнсфй й ртйойнбеф чипдоха уфтплх у уйуфенопзп фетнйобмб, ймй йъ лпучеоопзп жбкмб, ч ъбчйуйнпуфй пф фпзп вщмб мй чщъчбоб ртпзтбннб у фетнйобмб ймй лпнбодпк йъ лпучеоопзп жбкмб. ъбртпу .GTLIN йзоптйтхеф бтзхнеоф PSTR, еумй ччпд пух- эеуфчмсефус йъ лпучеоопзп жбкмб й, еумй тбоее вщмб чщрпмое- об лпнбодб SET TT QUIET. пдоблп, еумй ччпд пухэеуфчмсефус у фетнйобмб ймй йъ лпучеоопзп жбкмб, й тбоее ое вщмб чщрпмое- об лпнбодб SET TT QUIET, ъбртпу .GTLIN вхдеф йурпмшъпчбфш бтзхнеоф PSTR дмс реюбфй рпвхцдбаэек уфтплй уйнчпмпч ретед чщвптлпк чипдопк уфтплй. жптнбф нблтплпнбодщ: .GTLIN SPTR[,PSTR][,TYPE] зде SPTR - бдтеу вхжетб дмс ъбрйуй чипдопк уфтплй; дмйоб уфтплй ое дпмцоб ртечщыбфш 81 вбкф; уфтплб вхдеф пзтбойюеоб охмечщн вбкфпн чнеуфп чл ру ; PSTR - бдтеу рпвхцдбаэек уфтплй, лпфптбс вхдеф реюб- фбфшус об фетнйобме; PSTR йнееф фпф це жптнбф, юфп й бтзх- неоф ъбртпуб .PRINT. TYPE - оепвсъбфемшощк бтзхнеоф, рпъчпмсаэйк пухэеуф- чйфш ччпд у фетнйобмб ртй чщрпмоеойй лпучеоопзп жбкмб. ртйнеюбойе. едйоуфчеоощнй ъбртпубнй, лпфптще нпзхф пухэеуфчмсфш ччпд йъ лпучеоопзп жбкмб, счмсафус ъбртпущ .CSIGEN, .CSISPC й .GTLIN. ртйнет. .TITLE GTLIN.MAC ;ч ьфпн ртйнете реюбфбефус уфтплб, ччедеобс у ;фетнйобмб. .MCALL .GTLIN,.PRINT,.EXIT START: .GTLIN #BUFF,#PROMT TSTB BUFF BEQ 1$ .PRINT #BUFF CLRB BUFF BR START 1$: .EXIT BUFF: .BLKW 41. PROMT: .ASCII /ччедйфе уфтплх - /<200> .END START 5.3.19. .GVAL,.PVAL ъбртпу .GVAL ретедбеф ч R0 упдетцйнпе хлбъбопк ет. .TITLE GTLIN.MAC ;ч ьфпн ртйнете реюбфбефус уфтплб, ччедеобс у ;фетнйобмб. .MCALL .GTLIN,.PRINT,.EXIT START: .GTLIN #BUFF,#PROMT TSTB BUFF BEQ 1$ .PRINT #BUFF CLRB BUFF BR START 1$: .EXIT BUFF: .BLKW 41. PROMT: .ASCII /ччедйфе уфтплх - /<200> .END START 5.3.19. .GVAL,.PVAL ъбртпу .GVAL ретедбеф ч R0 упдетцйнпе хлбъбопк сюеклй нпойфптб. жптнбф нблтплпнбодщ: .GVAL AREA, OFFSET зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; OFFSET - ъобюеойе унеэеойс пфопуйфемшоп обюбмб RMON. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,34 .WORD OFFSET ртйнет йурпмшъпчбойс .GVAL ун. ч прйубойй ъбртпуб .GTJB. ъбртпу .PVAL йънеосеф упдетцйнпе хлбъбопк сюеклй нпой- фптб. уфбтпе упдетцйнпе ъбрйущчбефус ч тезйуфт R0. ч тецйне ин .GVAL й .PVAL дпмцощ йурпмшъпчбфшус дмс йънеоеойс упдетцйнпзп сюеел нпойфптб дмс упчнеуфйнпуфй у дтхзйнй нпойфптбнй RT11. жптнбф нблтплпнбодщ: .PVAL AREA,OFFSET,VALUE зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; OFFSET - ъобюеойе унеэеойс пфопуйфемшоп обюбмб RMON; VALUE - опчпе упдетцйнпе сюеклй нпойфптб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 2,34 .WORD OFFSET .WORD VALUE 5.3.20. .HERR,.SERR ъбртпущ .HERR, .SERR рпъчпмсаф ъбдбфш пртедемеоощк тецйн тбвпфщ нпойфптб ртй пвобтхцеойй хумпчйк пыйвпл. чп чтенс чщрпмоеойс ртпзтбннщ нпзхф чпъойлохфш пртедемеооще пыйвлй, чщъщчбаэйе ртетщчбойе ртпзтбннщ (ун. фбвм. 14). пвщюоп ьфй пыйвлй чщъщчбаф чщипд йъ ртпзтбннщ й реюбфш нпойфптпн уппвэеойс пв пыйвле. пдоблп ч оелпфптщи умхюбси оечпънпцоп ртетчбфш чщрпмоеойе ртпзтбннщ йъ-ъб чпъойлыйи пыйвпл. обртйнет, нопзпрпмшъпчбфемшулбс ртпзтбннб дпмцоб упитбосфш хртбчмеойе й ртетчбфш тбвпфх фпмшлп у фен рпмшъп- чбфемен, лпфптщк удембм пыйвлх. ч ьфпн умхюбе рпмеъоп йурпмшъпчбфш ъбртпу .SERR, лпфптщк ъбртеэбеф нпойфптх хдб- меойе йъ рбнсфй ртпзтбннщ, ч лпфптпк пвобтхцеоб пыйвлб. чнеуфп ьфпзп, ртй чпъойлопчеойй пыйвлй рпуме чщрпмоеойс ъбртпуб .SERR, хуфбобчмйчбефус у-тбътсд й лпд пыйвлй ч 52-пн вбкфе. ч оелпфптщи умхюбси ъбртпу .SERR пуфбчмсеф лбобмщ пфлтщфщнй, обртйнет, еумй йурпмшъпчбмйуш ъбртпущ .LOOKUP й .ENTER. ъбртпу .HERR пфнеосеф декуфчйе ъбртпуб .SERR. ч ьфпн умхюбе реюбфбефус уппвэеойе пв пыйвле й ртпзтбннб хдбмсефус йъ рбнсфй. жптнбф нблтплпнбодщ: .HERR .SERR фбвмйгб 14 ----------------------------------------------------------- ! лпд ! ртйюйоб пыйвлй ! !---------------------------------------------------------! ! -1 ! чщъпч USR йъ рпдртпзтбннщ ъбчетыеойс ! ! -2 ! ч рбнсфй оеф дтбкчетб хуфтпкуфчб ! ! -3 ! пыйвлб ччпдб-чщчпдб уртбчпюойлб хуфтпкуфчб! ! -4 ! пыйвлб .FETCH. пыйвлб ртй юфеойй дтбкчетб,! ! ! ймй рпрщфлб ъбзтхъйфш езп чщые USR ймй ! ! ! RMON ! ! -5 ! пыйвлб юфеойс пчетмекопзп уезнеофб ! ! -6 ! ч уртбчпюойле хуфтпкуфчб оеф учпвпдопзп ! ! ! неуфб дмс ъбрйуй жбкмб ! ! -7 ! оедпрхуфйнщк бдтеу (фпмшлп ч тецйне FB) ! ! ! рпрщфлб чщрпмойфш претбгйа чое зтбойг ъб- ! ! ! дбойс ! ! -10 ! оеухэеуфчхаэйк опнет лбобмб ! ! -11 ! оедпрхуфйнбс лпнбодб EMT; пртедемео оедп- ! ! ! рхуфйнщк жхолгйпобмшощк лпд ! ! -14 ! оедпрхуфйнщк уртбчпюойл ! ! -15 ! пфухфуфчхеф дтбкчет хуфтпкуфчб (ч тецйне ! ! ! ин) ! ----------------------------------------------------------- ртйнет. .MCALL .ENTER .HERR .SERR .PRINT .EXIT .USRDF START: .SERR ;ЪБРТЕФЙФШ РТЕТЩЧБОЙЕ РТПЗТБННЩ ;РП ПЫЙВЛЕ .USRDF ;ПРТЕДЕМЙФШ НОЕНПОЙЛХ УФБФХУБ ЪБЧЕТЫЕОЙС ;РТПЗТБННЩ USERRB .ENTER #AREA,#1,#FILE ;ПФЛТЩФШ ЖБКМ ОБ PR: BCC 3$ CALL ERR ;ПВТБВПФБФШ ПЫЙВЛХ .HERR ;ТБЪТЕЫЙФШ РТЕТЩЧБОЙЕ РТПЗТБННЩ РП ПЫЙВЛЕ .ENTER #AREA,#1,#FILE ;ПФЛТЩФШ ЖБКМ ОБ PR: BCS ERR1 3$: .EXIT ERR1: .PRINT #MSG .EXIT MSG: .ASCIZ /ПЫЙВЛБ .ENTER/ .EVEN ERR: MOVB @#52,R0 ;РПДРТПЗТБННБ ПВТБВПФЛЙ ПЫЙВПЛ NEG R0 DEC R0 ASL R0 MOV COD(R0),R0 .PRINT BISB #3,@#USERRB ;ХУФБОПЧЙФШ ЪБЧЕТЫЕОЙЕ У ЗТХВПК ПЫЙВЛПК RETURN COD: C1 C2 C3 C4 C5 C6 C7 C10 C11 C14 C1: .ASCIZ /USR?/ C2: .ASCIZ /ОЕ ЪБЗТХЦЕО ДТБКЧЕТ/ C3: .ASCIZ /ПЫЙВЛБ ЮФЕОЙС ЛБФБМПЗБ/ C4: .ASCIZ /ПЫЙВЛБ .FETCH/ C5: .ASCIZ /ПЧЕТМЕК?/ C6: .ASCIZ /ЛБФБМПЗ РЕТЕРПМОЕО/ C7: .ASCIZ /ПЫЙВЛБ БДТЕУБГЙЙ/ C10: .ASCIZ .ASCIZ /ОЕЧЕТОЩК ОПНЕТ ЛБОБМБ/ C11: .ASCIZ /ОЕЧЕТОЩК ЛПД EMT/ C14: .ASCIZ /ОЕДПРХУФЙНЩК ЛБФБМПЗ/ .EVEN AREA: .BLKW 4 FILE: .RAD50 /PR / .WORD 0,0,0 .END START 5.3.21. .HRESET ъбртпу .HRESET ртелтбэбеф чщрпмоеойе претбгйк ччпдб- чщчпдб дмс чщъщчбаэек ртпзтбннщ й чщрпмосеф жхолгйй ъбртпуб .SRESET. ч тецйне SJ ъбртпу .HRESET йурпмшъхефус дмс ртел- тбэеойс чуеи претбгйк ччпдб-чщчпдб дмс ъбдбойс, ч лпфптпн йурпмшъхефус .HRESET. чуе дтхзйе претбгйй ччпдб-чщчпдб ртп- дпмцбафус. жптнбф нблтплпнбодщ: .HRESET ртйнет йурпмшъпчбойс .HRESET ун. ч прйубойй ъбртпуб .CDFN. 5.3.22. .INTEN ъбртпу .INTEN йурпмшъхефус ч рпдртпзтбнне пвтбвпфлй ртетщчбойс ртпзтбннщ рпмшъпчбфемс й чщрпмосеф умедхаэйе жхолгйй: 1) уппвэбеф нпойфптх п фпн, юфп ртпйъпымп ртетщчбойе; 2) хуфбобчмйчбеф ртйптйфеф ртпгеууптб об уппфчефуфчха- эйк хтпчеош. чуе чоеыойе ртетщчбойс чщъщчбаф тбвпфх ртпгеууптб рп 7-нх ртйптйфефх. ъбртпу .INTEN йурпмшъхефус дмс рпойцеойс ртйптйфефб дп хтпчос, об лпфптпн вхдеф тбвпфбфш уппфчефуф- чхаэее хуфтпкуфчп. жптнбф нблтплпнбодщ: .INTEN PRIOR[,PIC] зде PRIOR - ртйптйфеф ртпгеууптб, лпфптщк рпмшъпчбфемш хуфбобчмйчбеф дмс учпек рпдртпзтбннщ пвтбвпфлй ртетщчбойс; пвщюоп фпф ртйптйфеф, рп лпфптпнх хуфтпкуфчп ъбртбыйчбеф ртетщчбойе; PIC - оепвсъбфемшощк бтзхнеоф; дпмцео вщфш хлбъбо, еумй рпдртпзтбннб пвтбвпфлй ртетщчбойс обрйубоб ч рпъйгйпо- оп-оеъбчйуйнщи лпдби; мавбс рпдртпзтбннб пвтбвпфлй ртетщчб- ойс (дтбкчет хуфтпкуфчб), дпмцоб вщфш обрйубоб ч ьфйи лпдби. 5.3.23. .LOCK,.UNLOCK ъбртпу .LOCK вмплйтхеф USR ч рбнсфй дмс чщрпмоеойс тсдб претбгйк. еумй ухэеуфчхаф хумпчйс, чщъщчбаэйе ртпгеуу учпрйозб, фп ртпзтбннб рпмшъпчбфемс (фб ее юбуфш, лпфптха USR ретелтщчбеф ч рбнсфй) ъбрйущчбефус ч вмплй дйулб дмс чтенеоопзп итбоеойс дбоощи й USR ъбзтхцбефус ч рбнсфш. ч ртпфйчопн умхюбе йурпмшъхефус USR, обипдсэбсус ч рбнсфй й учпрйозб ое ртпйуипдйф. ъбртпу .LOCK чуездб ъбзтхцбеф USR ч рбнсфш, еумй фбн ее оеф. USR вхдеф вмплйтпчбоб ч рбнсфй дп феи рпт, рплб ое вхдеф удембо ъбртпу .UNLOCK. ъбнефйн, юфп ч тецйне FB, чщъпч CSI нпцеф фблце чщрпмойфш декуфчйе боб- мпзйюопе .UNLOCK. ч тецйне FB ъбртпу .LOCK ъбртеэбеф дтхзйн ъбдбойсн йурпмшъпчбфш USR. рпуме ъбртпуб .LOCK дпмцео вщфш чщрпмоео ъбртпу .UNLOCK дмс пучпвпцдеойс USR. ъбртпущ .LOCK й .UNLOCK дпрпмосаф дтхз дтхзб й, рпьфп- нх, дпмцощ вщфш упзмбупчбощ (ф.е., еумй чщрпмоеоп фтй ъбр- тпуб .LOCK, фп дпмцоп вщфш чщрпмоеоп, рп лтбкоек нете, фтй .UNLOCK, ч ртпфйчопн умхюбе USR ое вхдеф хдбмеоб йъ рбнс- фй). еумй лпмйюеуфчп .UNLOCK впмшые юен .LOCK, фп пыйвлй ое ртпйуипдйф. жптнбф нблтплпнбодщ: .LOCK ртйнеюбойс: 1. чбцоп, юфпвщ ртпзтбннб йурпмшъхаэбс .LOCK ое обипдй- мбуш ч пвмбуфй рбнсфй, лхдб вхдеф ъбзтхцбфшус USR. еумй ьфп ртпйъпкдеф, фп рпуме чщрпмоеойс .LOCK хртбчмеойе вхдеф ретедбоп ое ртпзтбнне рпмшъпчбфемс, б USR. 2. рпуме чщрпмоеойс .LOCK ое телпнеодхефус йурпмшъпчбфш ьфп нпцеф чщъчбфШ теъхмшфбфщ 3. еумй пуопчопе ъбдбойе обипдймбуш ч пвмбуфй рбнсфй, лхдб вхдеф ъбзтхцбфшус USR. еумй ьфп ртпйъпкдеф, фп рпуме чщрпмоеойс .LOCK хртбчмеойе вхдеф ретедбоп ое ртпзтбнне рпмшъпчбфемс, б USR. 2. рпуме чщрпмоеойс .LOCK ое телпнеодхефус йурпм ус учпрйоз, фп .UNLOCK ъбзтхцбеф ртпзтбннх рпмЯъпчбхебНсфш. /jБ!А> 8 жптНбЧ?ЯЯЛЯплпнбояЯ:Н 0 Ь#Я/РЯ .UNLOSK# ЯяШЯ:я яЗЯЯ Н ' ЯЯЯЯ Р 0 /!А! "р Я#&Ю , п ЧЯЧЯ- ! * Я ?ЯЯЩз 2$ Я5ЯЯЮЯ5Ч5471>0Я0ЯЯ-Р1 3?=Н е обипдй- мбуш ч пвмбуфй рбнсфй, лхдб вхдеф ъбзтхцбфшус USR. еумй ьфп ртпйъпкдеф, фп рпуме чщрпмоеойс .LOCK хртбчмеойе вхдеф ретедбоп ое ртпзтбнне рпмшъпчбфемс, б USR. 2. рпуме чщрпмоеойс .LOCK ое телпнеодхефус йурпмплб ое вхдеф чщрпмоео .UNLOCK ч ретчпн ъбдбойй. ртйнет. .TITLE LOCK.MAC ;ртйнет йурпмшъпчбойс ъбртпупч .LOCK,.UNLOCK .MCALL .LOCK,.UNLOCK,.LOOKUP,.SETTOP,.PRINT,.EXIT SYSPTR=54 ;хлбъбфемш об обюбмп RMON START: .SETTOP @#SYSPTR ;ъбртпуйфш чуа учпвпдоха ;рбнсфш .LOCK ;чщъпч USR ч рбнсфш .LOOKUP #AREA,#0,#FILE1 ;пфлтщфш жбкм об 0-пн лбобме BCC 1$ 2$: .PRINT #LMSG .EXIT 1$: .PRINT #F1FND MOV #AREA,R0 INC @R0 ;опнет лбобмб = 1 MOV #FILE2,2(R0) .LOOKUP ;пфлтщфш жбкм об 1-пн лбобме BCS 2$ .PRINT #F2FND .UNLOCK ;хдбмйфш USR йъ рбнсфй .EXIT AREA: .BLKW 3 FILE1: .RAD50 /DK / .RAD50 /PIP / .RAD50 /SAV/ FILE2: .RAD50 /DK / .RAD50 /DIR / .RAD50 /SAV/ LMSG: .ASCIZ /пыйвлб .LOOKUP/ F1FND: .ASCIZ /жбкм PIP.SAV пфлтщф об 0-пн лбобме/ F2FND: .ASCIZ /жбкм DIR.SAV пфлтщф об 1-пн лбобме/ .EVEN .END START 5.3.24. .MFPS, .MTPS ъбртпущ .MFPS й .MTPS пвеуреюйчбаф дпуфхр л уур. ъбр- тпу .MFPS йурпмшъхефус дмс чщвптлй уур. жптнбф нблтплпнбодщ: .MFPS ADDR зде ADDR - бдтеу, рп лпфптпнх ъбрйущчбефус упдетцйнпе уур; еумй бдтеу ое хлбъбо, упдетцйнпе уур ретеущмбефус дмс хуфб- опчлй уур. жптнбф нблтплпнбодщ: .MTPS ADDR зде ADDR - бдтеу умпчб, лпфптпе вхдеф ъбрйубоп ч уур; еумй бдтеу ое хлбъбо, фп ъобюеойе дмс уур ветефус йъ уфелб. ртйнет. .TITLE MFPS.MAC ;ч дбоопн ртйнете, у йурпмшъпчбойен ъбртпупч .MFPS,.MTPS, ;пухэеуфчмсефус пвтбэеойе л рпдртпзтбнне, лпфптбс ;пртедемсеф обмйюйе учпвпдопзп ьменеофб пюетедй. .MCALL .MFPS,.MTPS,.EXIT,.PRINT,.TTINR JSW = 44 ;умпчп упуфпсойс ъбдбойс TTSPC$ = 10000 ;тбътсд урегйбмшопзп тецйнб чщчпдб START: ;змбчобс ртпзтбннб BIS #TTSPC$,@#JSW ;хуфбопчйфш 12 тбътсд ч JSW ; . ; . CALL GETQUE ;чщъпч рпдртпзтбннщ BCC 1$ .PRINT #NOELEM BIC #TTSPC$,@#JSW .EXIT 1$: NOP ;ртпдпмцеойе змбчопк NOP ;ртпзтбннщ .PRINT #GOT1 2$: .TTINR BCS 2$ BR START GETQUE: MOV #QHEAD,R4 TST @R4 BEQ 11$ .MFPS ;упитбойфш ъобюеойе ч уфеле .MTPS #340 ;хуфбопчйфш ртйптйфеф = 7 MOV @R4,R5 ;хлбъбфемш об умедхаэйк ;ьменеоф MOV @R5,@R4 .MTPS ;чпууфбопчйфш тбътсдщ ;ртйптйфефб TST (PC)+ 11$: SEC RETURN QHEAD: .WORD Q1 Q1: .WORD Q2,0,0 Q2: .WORD Q3,0,0 Q3: .WORD 0,0,0 NOELEM: .ASCIZ /оеф ч обмйюйй ьменеофб пюетедй/ GOT1: .ASCII /еуфш учпвпдощк ьменеоф - обцнйфе мавха / .ASCIZ /лмбчйых дмс ртпдпмцеойс/ .EVEN .END START 5.3.25. .MRKT ъбртпу .MRKT рмбойтхеф ъбрхул рпдртпзтбннщ ъбчетыеойс юетеъ пртедемеоощк йофетчбм чтенеой. ъбртпу .MRKT йурпмшъхаф ьменеофщ пюетедй йъ урйулб ьменеофпч пюетедй ччпдб-чщчпдб. ьменеоф пюетедй йурпмшъхеф- ус дп феи рпт, рплб ое вхдеф ччедеоб рпдртпзтбннб ъбчетые- ойс ймй ое вхдеф чщрпмоео ъбртпу .CMKT. жптнбф нблтплпнбодщ: .MRKT AREA,TIME,CRTN,ID зде AREA - бдтеу вмплб йъ 4-и умпч бтзхнеофпч енф; TIME - бдтеу вмплб йъ 2-и умпч, упдетцбэезп чемйюйох йофетчбмб чтенеой; CRTN - фпюлб чипдб рпдртпзтбннщ ъбчетыеойс; ID - юйумп, йурпмшъхенпе дмс йдеофйжйлбгйй ъбртпуб у ртпзтбннпк ъбчетыеойс й ъбртпубнй .CMKT; ьфп юйумп ое дпмц- оп вщфш ч ртедемби пф 177400 дп 177777; оеулпмшлп ъбртпупч жптнбф вмплб бтзхнеофпч:к AREA: .BYTE 0,22 .WORD TIME .WORD CRTN .WORD ID ртйнет. .TITLE TREAD.MAC AREA: .BYTE 0,22 .WORD TIME .WORD CRTN .WORD ID ртйнет. .TITLE TREAD.MAC ;ръ R0 BEQ 1$ .PRINT 1$: CLR TBYT .MRKT #TAREA,#TIME,#TOUT,#1;ъбрхуфйфш рпдртпзтбннх ;ъбчетыеойс рп йуфеюеойй ;чтенеой BIS #TCBIT$,@#JSW CLRB @R1 TTIN: .TWAIT #AREA .TTINR BIT #1,(PC)+ TBYT: .WORD 0 BNE 2$ BCS TTIN MOVB R0,(R1)+ .CMKT #TAREA,#0 ;пфнеойфш .MRKT 2$: BIS #TTSPC$,@#JSW 3$: .TTINR MOVB R0,(R1)+ BCC 3$ CLRB -(R1) BIC #TCBIT$!TTSPC$,@#JSW ROR TBYT RETURN TOUT: INC TBYT RETURN XQUE: .BLKW 10. AREA: .WORD 0,WAIT TAREA: .BLKW 4 TIME: .WORD 0,500. WAIT: .WORD 0,1 LINE: .ASCII /пвтбвпфлб дбоощи / BUFF: .BLKB 81. PROMT: .ASCIZ /ччедйфе дбооще : / <200> TIMOUT: .ASCIZ /чтенс об ччпд дбоощи йуфелмп/ .END START 5.3.26. .MTATCH ъбртпу .MTATCH мпзйюеулй учсъщчбеф ъбдбойе у пртеде- меоощн фетнйобмпн. ьфпф ъбртпу дпмцео вщфш чщрпмоео ретед фен лбл ъбдбойе обюоеф йурпмшъпчбфш фетнйобм ч нхмшфйфетнй- обмшопн тецйне. жптнбф нблтплпнбодщ: .MTATCH AREA,ADDR,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу умпчб буйоитпоопзп упуфпсойс фетнйобмб ймй 0; UNIT - мпзйюеулйк опнет фетнйобмб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 5,37 .WORD ADDR .BYTE UNIT,0 5.3.27. .MTDTCH ъбртпу .MTDTCH ртетщчбеф мпзйюеулха учсъш хлбъбоопзп фетнйобмб у ъбдбойен й дембеф езп дпуфхрощн дмс дтхзйи ъбдбойк. рпрщфлб ртетчбфш учсъш у фетнйобмпн, мпзйюеулй учсъбоощн у дтхзйн ъбдбойен, ртйчпдйф л пыйвле. жптнбф нблтплпнбодщ: .MTDTCH AREA,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; UNIT - мпзйюеулйк опнет фетнйобмб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 6,37 .WORD <ое йурпмшъхефус> .BYTE UNIT 5.3.28. .MTSET ъбртпу .MTSET рпъчпмсеф хуфбопчйфш ибтблфетйуфйлй фет- нйобмб. по фблце пртедемсеф тецйн ччпдб-чщчпдб дмс хлбъбо- опзп фетнйобмб. жптнбф нблтплпнбодщ: .MTSET AREA,ADDR,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу вмплб йъ 4-и умпч упуфпсойс хлбъбоопзп фетнйобмб; UNIT - мпзйюеулйк опнет фетнйобмб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,37 .WORD ADDR .BYTE UNIT об тйу. 6 рплбъбоб уфтхлфхтб вмплб упуфпсойс фетнйоб- мб, лпфптщк птзбойъхефус рпмшъпчбфемен. прйубойе умпч вмплб упуфпсойс ртйчедеоп ч фбвм.15. ------------------------------- ! M.TSTS ! !-----------------------------! ! M.TST2 ! !-----------------------------! ! M.TST3 ! !-----------------------------! ! M.TSTW ! M.TWID ! ------------------------------- тйу. 6. уфтхлфхтб вмплб упуфпсойс фетнйобмб фбвмйгб 15 ---------------------------------------------------------- ! пвпъобюеойе ! прйубойе ! !--------------------------------------------------------! ! M.TSTS ! умпчп лпожйзхтбгйй фетнйобмб ! ! M.TSTS2 ! теъетчопе ! тзъ ! ! ! я ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ ! !--------------------------------------------------------! ! M.TSTS ! умпчп лпожйзхтбгйй фетнйобмб ! пожйзхтбгйй фетнйо ИM.TSЯSЯЯЯЯЯЯЯЯЯщвм.16/ЯЯ фбвм. 16 ----------------------------------------------------------- ! тбътсд ! упдетцбойе ! ъобюеойе ! !---------------------------------------------------------- ! M.TSTS ! умпчп лпожйзхтбгйй фетнйобмб ! ! 0 ! 1 ! бррбтбфобс фбвхмсгйс ! ! 1 ! 2 ! чщрпмоеойе чпъчтбфб лбтефлй й ! ! ! ! ретечпдб уфтплй, еумй декуфчй- ! ! ! ! фемшобс дмйоб уфтплй впмшые ! ! ! ! хуфбопчмеоопк ч M.TWID ! ! 2 ! 4 ! бррбтбфощк ретечпд жптнбфб ! ! 3 ! 10 ! чщрпмоеойе лпнбод ух/F й ух/ч ! ! 4,5 ! - ! теъетчоще ! ! 6 ! 100 ! ъбртеэеойе тецйнб пцйдбойс дмс ! ! ! ! фетнйобмб (ьлчйчбмеофео 6-пнх ! ! ! ! тбътсдх ч ууъ); тбътсд TCBIT ! ! 7-11 ! - ! теъетчоще ! ! 12 ! 10000 ! тецйн рпуйнчпмшопзп ччпдб (ьлчй-! ! ! ! чбмеофео тбътсдх урегйбмшопзп ! ! ! ! тецйнб ч ууъ); тбътсд TTSPC ! ! 13 ! - ! теъетчощк ! ! 14 ! 40000 ! ъбртеэеойе ртепвтбъпчбойс лпдпч ! ! ! ! уйнчпмпч ойцоезп тезйуфтб ч лп- ! ! ! ! дщ уйнчпмпч четиоезп тезйуфтб ! ----------------------------------------------------------- ч фбвм.17 дбощ ъобюеойс тбътсдпч дмс M.TSTW. фбвмйгб 17 ----------------------------------------------------------- ! тбътсд ! упдетцйнпе ! ъобюеойе ! !---------------------------------------------------------- ! 10 ! 2000 ! фетнйобм йурпмшъхефус пуопчощн ! ! ! ! й жпопчщн ъбдбойснй ! ! 11 ! 4000 ! фетнйобм ое члмаюео ! ! 14 ! 40000 ! дчбцдщ рпдбоб лпнбодб ух/у ! ! 15 ! 100000 ! уйуфенощк фетнйобм ! ! ----------------------------------------------------------- 5.3.29. .MTGET ъбртпу .MTGET рпъчпмсеф рпмхюйфш йожптнбгйа п ЯйЮ, прйубооха ----------------------------------------------------------- ! пфопуйфемшощк ! $ ! ! опнет вбкфб ч ! упдетцйнпе ! 0 ! умпчп лпожйзхтбгйй фетнйобмб. ъобюеойс! ! ! тбътсдпч фе це, юфп й ч .MTSET ! ! 2-4 ! теъетчоще ! ! 6 ! дмйоб уфтплй ! ! 7 ! фелхэее рпмпцеойе уфтплй ! ----------------------------------------------------------- жптнбф нблтплпнбодщ: .MTGET AREA,ADDR,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу вмплб упуфпсойс фетнйобмб йъ 4-и умпч; UNIT - мпзйюеулйк опнет фетнйобмб, йожптнбгйа п упуфпс- ойй лпфптпзп фтевхефус рпмхюйфш. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 1,37 .WORD ADDR .BYTE UNIT 5.3.30. .MTSTAT ъбртпу .MTSTAT рпъчпмсеф рпмхюйфш йожптнбгйа п упуфпсойй нхмшфйфетнйобмшопк уйуфенщ. жптнбф нблтплпнбодщ: .MTSTAT AREA,ADDR зде AREA - бдтеу 3-и умпчопзп вмплб бтзхнеофпч; ADDR - бдтеу 8-нй умпчопзп вмплб, упдетцбэезп йожптнбгйа п упуфпсойй нхмшфйфетнйобмшопк уйуфенщ (ун. ъбртпу .MTGET). жптнбф вмплб бтзхнеофпч: AREA: .BYTE 10,37 .WORD ADDR .WORD 0 5.3.31. .MTRCTD ъбртпу .MTRCTD счмсефус нхмшфйфетнйобмшопк жптнпк ъбртп- уб .RCTRLD. по пфнеосеф лпнбодх ух/D й тбътеыбеф чщчпд об хлбъбоощк фетнйобм. жптнбф нблтплпнбодщ: .MTRCTD AREA,UNIT зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; UNIT - мпзйюеулйк опнет фетнйобмб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 4,37 .WORD <ое йурпмшъхефус> .BYTE UNIT 5.3.32. .MWAIT (тецйн FB,XM) ъбртпу .MWAIT ретечпдйф ртпзтбннх ч упуфпсойе пцйдбойс дп феи рпт, рплб чуе уппвэеойс ое вхдхф ретедбощ ймй рпмхюе- ощ. у рпнпэша ьфпзп ъбртпуб рпмшъпчбфемш нпцеф хдпуфпчетйфшус ч ртбчймшопуфй чщрпмоеойс претбгйй. ъбртпу .MWAIT йурпмшъхеф- ус ч пуопчопн упчнеуфоп у ъбртпубнй .RCVD ймй .SDAT, лпфптще ое ртедхунбфтйчбаф урегйбмшощи декуфчйк рпуме рпмхюеойс ймй ретедбюй уппвэеойк (дбоощи). жптнбф нблтплпнбодщ: .MWAIT ртйнет. ;ч ртйчедеопн ртйнете йурпмшъхефус ъбртпу .MWAIT. ;ртйнет упуфпйф йъ дчхи ртпзтбнн: жпопчпк, лпфптбс ;рпущмбеф уппвэеойе, й пуопчопк ртпзтбннщ, лпфптпе ;ьфп уппвэеойе рпмхюбеф. .TITLE MWAITF.MAC ;пуопчобс ртпзтбннб ... .MCALL .MWAIT,.RCVD,.PRINT,.EXIT START: .RCVD #AREA,#MBUFF,#40. ;рпмхюйфш уппвэеойе ; . ; . ; . .PRINT #FGJOB ; . ; . ; . .MWAIT ;пцйдбфш ртйенб TST MBUFF+2 ;уппвэеойс оеф? BEQ FEXIT ;еумй оеф - чщипд ;йъ ртпзтбннщ .PRINT #FMSG .PRINT #MBUFF+2;реюбфш рпмхюеоопзп ;уппвэеойс BR START FEXIT: .EXIT AREA: .BLKW 5 MBUFF: .BLKW 41. .WORD 0 FGJOB: .ASCIZ /пуопчобс ртпзтбннб зпфпчб л ртйенх уппвэеойк/ FMSG: .ASCIZ /ретедбоп уппвэеойе:/ .EVEN .END START ;жпопчбс ртпзтбннб ... .TITLE MWAITB.MAC .MCALL .MWAIT,.SDAT,.GTLIN,.PRINT,.EXIT START: CLR BUFF .GTLIN #BUFF,#PROMPT ;ччеуфй уппвэеойе .SDAT #AREA,#BUFF,#40.;ретедбфш уппвэеойе BCS 1$ .MWAIT TST BUFF BNE START .EXIT 1$: .PRINT #NOFG .EXIT AREA: .BLKW 5 BUFF: .BLKW 40. PROMPT: .ASCII /ччедйфе уппвэеойе дмс пуопчопк ртпзтбннщ/ .BYTE 15,12,200 NOFG: .ASCIZ /пуопчопк ртпзтбннщ оеф/ .EVEN .END START 5.3.33. .PEEK,.POKE ъбртпу .PEEK ретедбеф ч тезйуфт R0 упдетцйнпе хлбъбоопк сюеклй рбнсфй (ойце 28л умпч) ймй упдетцйнпе сюеклй уфтбойгщ ччпдб - чщчпдб. ъбртпу .POKE йънеосеф упдетцйнпе сюеклй рбнсфй. ртй ьфпн уфбтпе упдетцйнпе ъбрйущчбефус ч тезйуфт R0. жптнбф нблтплпнбодщ: .PEEK AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу сюеклй рбнсфй. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 1,34 .WORD ADDR жптнбф нблтплпнбодщ: .POKE AREA,ADDR,VALUE зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу сюеклй рбнсфй; VALUE - опчпе упдетцйнпе сюеклй рбнсфй. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 3,34 .WORD ADDR .WORD VALUE ртйнет. ;ч дбоопн ртйнете ъбртпущ .PEEK,.POKE йурпмшъхафус ;дмс юфеойс й хуфбопчлй тбънетб жбкмб, пфлтщфпзп ;тбоее рп ъбртпух .ENTER. .MCALL .PEEK,.POKE,.EXIT RMON = 54 MAXBLK = 314 START: .PEEK #EMTBLK,#RMON ;хуфбопчйфш бдтеу обюбмб ;RMON ADD #MAXBLK,R0 ;рпмхюйфш тбънет жбкмб MOV R0,R1 .POKE #EMTBLK,R1,#NEWSIZ ;хуфбопчйфш опчщк ;тбънет жбкмб MOV R0,OLDSIZ .EXIT EMTBLK: .BLKW 3 NEWSIZ: .WORD 100. OLDSIZ: .WORD 0 ;уфбтщк тбънет жбкмб .END START 5.3.34. .PROTECT,.UNPROTECT (тецйн FB,XM) ъбртпу .PROTECT йурпмшъхефус дмс рпмхюеойс йулмаюйфемш- опзп ртбчб рпмшъпчбойс челфптпн ртетщчбойс ч дйбрпъпое 0-476 й хуфбобчмйчбеф ъбэйфх челфптб. еумй ъбртпу .PROTECT ъбчетыео хуреыоп, фп ьфп хлбъщчбеф об фп, юфп сюеклй челфптб ое йурпмшъхафус дтхзйн ъбдбойен ймй нпойфптпн й ч ьфпн умхюбе фелхэее ъбдбойе нпцеф ъбрйубфш бдтеу рпдртпзтбннщ пвтбвпфлй ртетщчбойс й ъобюеойс хтпчос ртйптйфефб ч ьфй сюеклй. жптнбф нблтплпнбодщ: .PROTECT AREA,ADDR зде AREA - бдтеу вмплб йъ 3-и умпч бтзхнеофпч енф; ADDR - бдтеу челфптб, лпфптщк вхдеф йурпмшъпчбфшус дбо- ощн ъбдбойен; ADDR дпмцео вщфш лтбфео юефщтен й неошые 476. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,31 .WORD ADDR ъбрттпу .UNPROTECT пфнеосеф теъхмшфбф декуфчйс ъбртпуб .PROTECT. жптнбф нблтплпнбодщ: .UNPROTECT AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу челфптб, лпфптщк пучпвпцдбефус пф ъбэйфщ. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 1,31 .WORD ADDR ртйнет. .TITLE PROTECT.MAC ;ч дбоопн ртйнете рплбъбоп, лбл хуфбопчйфш ъбэйфх челфптб ;хуфтпкуфчб, б ъбфен пфнеойфш ъбэйфх челфптб. .MCALL .PROTECT,.UNPROTECT,.PRINT,.EXIT START: .PROTECT #AREA,#300 BCS 1$ .UNPROTECT #AREA,#300 .EXIT 1$: .PRINT #NOVEC .EXIT AREA: .BLKW 3 NOVEC: .ASCIZ /челфпт хце ъбэйэео !/ .END START 5.3.35. .QSET чуе претбгйй ччпдб-чщчпдб ч уйуфене жпдпу пухэеуфчмсафус юетеъ геофтбмйъпчбооха уйуфенх хртбчмеойс пюетедша ъбртпупч. лбцдщк ъбртпу оеуйоитпоопк ретедбюй (обртйнет, .WRITE) фте- вхеф дмс учпезп чщрпмоеойс обмйюйе ьменеофб пюетедй. еумй дмс пюетедопзп ъбртпуб ччпдб-чщчпдб оеф учпвпдопзп ьменеофб пюе- тедй, фп чщрпмоеойе ртпзтбннщ рпмшъпчбфемс вхдеф вмплйтпчбоп дп феи рпт, рплб ьменеоф пюетедй ое пучпвпдйфус. ч тецйне FB, пдоп йъ ъбдбойк нпцеф чщрпмосфшус, рплб дтхзпе ъбдбойе пцй- дбеф ьменеоф пюетедй. ъбртпу .QSET йурпмшъхефус дмс фпзп, юфпвщ хчемйюйфш юйу- мп ьменеофпч пюетедй ччпдб-чщчпдб. пвэее ртбчймп ъблмаюбефус ч фпн, юфпвщ ч лбцдпк ртпзтбнне лпмйюеуфчп ьменеофпч пюетедй вщмп об едйойгх впмшые, юен пвэее лпмйюеуфчп ъбртпупч ччпдб- чщчпдб, лпфптще вхдхф чщрпмосфшус пдопчтенеооп об тбъмйюощи лбобмби. ъбртпущ .MRKT,.TWAIT й .SDAT фблце йурпмшъхаф ьменеофщ пюетедй й дпмцощ ртйойнбфшус чп чойнбойе ртй пртедемеойй лпмйюеуфчб ьменеофпч пюетедй дмс ртпзтбннщ. лбцдщк тбъ, лпздб чщрпмосефус .QSET, оертетщчобс пвмбуфш рбнсфй, лпфптбс пфчп- дйфус рпд ьменеофщ пюетедй демйфус об уезнеофщ, упдетцбэйе рп 7 умпч (рп 10 умпч дмс нпойфптб XM) й учсъщчбефус у хце ухэеуфчхаэек пюетедша ччпдб-чщчпдб дмс ьфпзп ъбдбойс. ъбртпу .QSET нпцеф вщфш йурпмшъпчбо оепдоплтбфоп ч ртпз- тбнне рпмшъпчбфемс. ртй ьфпн, пвмбуфй рбнсфй дмс опчщи ьме- неофпч пюетедй, пфчпдйнще тбъмйюощнй .QSET, оепвсъбфемшоп дпмцощ вщфш упртйлбубаэйнйус. пвмбуфш рбнсфй дмс дпрпмойфемш- ощи ьменеофпч пюетедй ччпдб-чщчпдб дпмцоб вщфш пртедемеоб чохфтй ртпзтбннщ рпмшъпчбфемс. ъбртпуч .SRESET й .HRESET боохмйтхаф теъхмшфбф декуфчйс .QSET. оепвипдйнп упвмадбфш пуфптпцопуфш ртй тбуртедемеойй рбнсфй дмс ьменеофпч пюетедй. пюетедш ччпдб-чщчпдб йънеосефус нпойфптпн буйоитпооп. еумй пвмбуфш, пфчедеообс рпмшъпчбфемен дмс ьменеофпч пюетедй плбъбмбуш оедпуфбфпюопк, ьфп ртйчедеф л обтхыеойа чщрпмоеойс ртпзтбннщ. ьменеофщ дмс пюетедй ччпдб- чщчпдб оемшъс тбурпмбзбфш ч пчетмекопк пвмбуфй, б фблце ч пвмбуфй рбнсфй, ртедобъобюеоопк дмс учпрйозб USR. умедхаэйе ъбртпущ фтевхаф дмс учпезп чщрпмоеойс ьменеоф пюетедй: .TWAIT .READW .WRITE .SDAT .SDATW .MRKT .RCVD .WRITC .READC .SDATC .READ .RCVDC .WRITW .RCVDW жптнбф нблтплпнбодщ: .QSET ADDR,LEN зде ADDR - бдтеу обюбмб пвмбуфй дмс опчщи ьменеофпч пюетедй ччпдб-чщчпдб; LEN - юйумп опчщи ьменеофпч пюетедй ччпдб-чщчпдб. ртйнет йурпмшъпчбойс .QSET ун. ч прйубойй ъбртпуб .TWAIT. 5.3.36. .RCTRLD ъбртпу .RCTRLD пвеуреюйчбеф зпфпчопуфш уйуфенопзп фетнй- обмб л реюбфй. лпнбодб ух/D ъбртеэбеф чщчпд об фетнйобм дп феи рпт, рплб ое вхдеф рпчфптоп рпдбоб лпнбодб ух/D ймй ч ртпзтбнне ое вхдеф чщрпмоео ъбртпу .RCTRLD. ф.е. ртпзтбннб, ч лпфптпк ртедхунпфтеоб реюбфш уппвэеойк об фетнйобме, дпмцоб ртедхунбфтйчбфш чпънпцопуфш рпдбюй рпмшъпчбфемен лпнбодщ ух/D. жптнбф нблтплпнбодщ: .RCTRLD ртйнет. .TITLE RCTRLD.MAC .MCALL .RCTRLD,.CSIGEN,.EXIT START: .RCTRLD .CSIGEN #DSPACE,#DEXT,#0 ; . ; . ; . JMP START DEXT: .WORD 0,0,0,0 DSPACE = . .END START 5.3.37. .SPND,.RSUM (тецйн FB,XM) ъбртпу .SPND чтенеооп ртйпуфбобчмйчбеф чщрпмоеойе ртпз- тбннщ рпмшъпчбфемс й дпрхулбеф тбвпфх фпмшлп рпдртпзтбнн ъбчетыеойс (дмс претбгйк ччпдб-чщчпдб й ъбртпупч .MRKT). жптнбф нблтплпнбодщ: .SPND ъбртпу .RSUM йъ рпдртпзтбннщ ъбчетыеойс чопчш ретедбеф хртбчмеойе ртпзтбнне рпмшъпчбфемс. жптнбф нблтплпнбодщ: .RSUM ртйнеюбойс: 1. нпойфпт упдетцйф фбл объщчбенщк уюефюйл ртйпуфбопчлй дмс лбцдпзп ъбдбойс. ьфпф уюефюйл хнеошыбефус рп .SPND й обтбэйчбефус рп .RSUM. ъбдбойе вхдеф жблфйюеулй ртйпуфбопч- меоощн, еумй уюефюйл вхдеф упдетцбфш пфтйгбфемшопе ъобюеойе. рпьфпнх, еумй .RSUM вхдеф чщрпмосфшус ретед .SPND, рпумедойк ъбртпу вхдеф йзоптйтпчбфшус. 2. ртпзтбннб дпмцоб йурпмшъпчбфш тбчопе лпмйюеуфчп .SPND й .RSUM. 3. ъбртпу .SPND йъ рпдртпзтбннщ ъбчетыеойс хнеошыбеф уюефюйл ртйпуфбопчлй, оп ое ртйпуфбобчмйчбеф чщрпмоеойе ртпз- тбннщ. еумй ч рпдртпзтбнне ъбчетыеойс чщрпмосефус .SPND, чщрпмоеойе ртпзтбннщ ртпдпмцбефус дп феи рпт рплб поб фблце ое чщрпмойф .SPND, рпуме юезп чщрпмоеойе ртпзтбннщ вхдеф ртйпуфбопчмеоп й дмс чпъпвопчмеойс ее тбвпфщ рпфтевхефус хце дчб ъбртпуб .RSUM. 4. .SPND й .RSUM рпдпвоп дтхйн ъбртпубн, нпзхф вщфш чщрпмоеощ ч рпдртпзтбннби пвтбвпфлй ртетщчбойк, лпфптще обрй- убощ рпмшъпчбфемен, еумй тбоее вщмй чщрпмоеощ .INTEN й .SYNCH. чуе ъбнеюбойс, пфопусэйеус л .SPND й .RSUM йъ рпдр- тпзтбнн ъбчетыеойс, йнеаф уймх й дмс ьфпзп умхюбс. 5.3.38. .SCCA ъбртпу .SCCA чщрпмосеф умедхаэйе жхолгйй: - вмплйтхеф чщрпмоеойе лпнбодщ ух/у; - уппвэбеф п фпн, юфп у фетнйобмб вщмп рпдбоп дче лпнбо- дщ ух/у; рп ъбртпух .SCCA лпнбодб ух/у чпуртйойнбефус ртпзтбннпк лбл пвщюобс хртбчмсаэбс лпнбодб веъ урегйбмшощи жхолгйк. жптнбф нблтплпнбодщ: .SCCA AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу умпчб упуфпсойс фетнйобмб. умпчп упуфпсойс фетнйобмб ртедобъобюеоп дмс жйлуйтпчб- ойс рпдбюй дчхи лпнбод ух/у. еумй ч оен хуфбопчмео 15-к тбъ- тсд, фп ьфп ъобюйф, юфп у фетнйобмб вщмй рпумедпчбфемшоп рпдбощ дче лпнбодщ ух/у. ьфпф тбътсд дпмцео пюйэбфшус ртпз- тбннпк рпмшъпчбфемс. еумй бтзхнеоф ADDR тбчео охма ч ъбртпуе .SCCA, нпойфпт чпууфбобчмйчбеф уйуфеноще жхолгйй лпнбодщ ух/у. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,35 .WORD ADDR ртйнет. .TITLE SCCA.MAC .MCALL .SCCA,.TTYIN,.TTYOUT,.PRINT JSW = 44 ЯЯЯЯЯ CLR (R1) .PRINT #MSG1 1$: TST (R1) BNE 2$ .TTYIN .TTYOUT BV 1$ 2$: .PRINT #MSG2 .SCCA #AREA,#0 CR . SCCA: .BLKW 1 AREA: .BLKW 2 MSG1: .ASCII /ртйнет йурпмшъпчбойс ъбртпуб .SCCA/< ЯЯЯЯЯЯЯЯ CLR (R1) .PRINT #MSG1 1$: TST (R1) BNE 2$ .TTYIN .TTYOUT йуфеноха дбфх й чтенс. жптнбф нблтплпнбодщ: .SDTTM AREA,ADDR зде AREA - бдтеу вмплб бтзхнеофпч енф йъ 2-и умпч; ADDR - бдтеу вмплб йъ 3-и умпч, упдетцбэезп опчха дбфх й чтенс. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,40 .WORD ADDR ретчпе умпчп фтеиумпчопзп вмплб упдетцйф опчха дбфх чп чохфтеооен жптнбфе (ун. ъбртпу .DATE). еумй ретчпе умпчп упдетцйф -1, фп нпойфпт йзоптйтхеф езп. чфптпе й фтефше умпчб упдетцбф опчпе ъобюеойе чтенеой (уфбтыезп й нмбдыезп рптсдлб уппфчефуфчеооп). еумй чфптпе умпчп упдетцйф пфтйгбфемшоха чемйюйох, фп нпойфпт ое йънеосеф ъобюеойе чтенеой. йънеоеойс уйуфенопк дбфщ ймй чтенеой ое чмйсеф об чщрпм- оеойе ъбртпупч, йурпмшъхаэйи фбкнет. ртйнет. .TITLE SDTTM.MAC ;ч ьфпн ртйнете ртйчедеоб рпдртпзтбннб лпттелгйй ;чтенеой (об 1 юбу) у хюефпн делтефопзп чтенеой. .MCALL .SDTTM,.PRINT,.GTIM,.EXIT .GLOBL STD,DALITE STD: COM HR NEG HR+2 DALITE:: .GTIM #AREA,#TIME ;рпмхюйфш фелхэее чтенс CALL JADD .SDTTM #AREA,#NEWDT ;хуфбопчйфш опчпе чтенс .GTIM #AREA,#TIME ;рпмхюйфш опчпе чтенс RETURN NEWDT: .WORD -1 ;дбфх ое йънеосфш TIME: .WORD 0,0 HR: .WORD 2 ;1 юбу чп чохфтеооен .WORD 137440 ;жптнбфе AREA: .WORD 0,0 JADD: MOV #HR,R4 MOV #AREA,R3 MOV #HR,R1 MOV -(R4),R2 ADD -(R3),R2 MOV -(R4),R5 ADC R5 ADD -(R3),R5 MOV R2,-(R1) MOV R5,-(R1) RETURN .END 5.3.40. .SETTOP ъбртпу .SETTOP рпъчпмсеф ртпзтбнне рпмшъпчбфемс хуфбоп- чйфш опчщк бдтеу ч лбюеуфче четиоек зтбойгщ ртпзтбннщ. нпой- фпт пртедемсеф, счмсефус мй ьфпф бдтеу дпрхуфйнщн й охцео мй учпрйоз USR. обртйнет, еумй ъбртпу пртедемсеф бдтеу ойце обюбмшопзп бдтеуб USR, фп учпрйоз USR ое фтевхефус. еумй .SETTOP йъ жпопчпзп ъбдбойс пртедемсеф бдтеу чщые обюбмшопзп бдтеуб USR й тбоее ое вщмб чщрпмоеоб лпнбодб SET USR NOSWAP, фп оепвипдйн учпрйоз USR. рпуме чщрпмоеойс .SETTOP, R0 й сюеклб 50 вхдхф упдетцбфш бдтеу рбнсфй, ртедпуфбчмеоощк нпойфптпн ртпзтбнне рпмшъпчбфе- мс ч лбюеуфче четиоезп бдтеуб ртпзтбннщ. еумй ртпзтбннб ъбр- тбыйчбеф рп .SETTOP оедпрхуфйнщк бдтеу дмс дбоопзп ъбдбойс, нпойфпт ое хдпчмефчптйф ьфп фтевпчбойе, й хуфбопчйф дмс ртпз- тбннщ жблфйюеулй дпрхуфйнха четиоаа зтбойгх рбнсфй. жптнбф нблтплпнбодщ: .SETTOP ADDR зде ADDR - ъбртбыйчбенщк бдтеу четиоек зтбойгщ ртпзтбннщ. ртйнет йурпмшъпчбойс .SETTOP ун. ч прйубойй ъбртпуб .LOCK. 5.3.41. .SPCPS (тецйн FB,ин) ъбртпу .SPCPS йурпмшъхефус ч рпдртпзтбннби ъбчетыеойс дмс упитбоеойс упдетцйнпзп тезйуфтпч ту й PS й ъбнеох упдет- цйнпзп ту об опчпе ъобюеойе. жптнбф нблтплпнбодщ: .SPCPS AREA,ADDR зде AREA - бдтеу вмплб бтзхнеофпч енф йъ 2-и умпч; ADDR - бдтеу вмплб йъ 3-и умпч, упдетцбэезп опчпе ъобюе- ойе ту, уфбтпе ъобюеойе ту й уфбтпе ъобюеойе PS уппфчефуфчео- оп ч 1-пн, 2-пн й 3-ен умпчби. нпойфпт упитбосеф уфбтще ъобюеойс PS й ту й ретедбеф хртбчмеойе рп бдтеух, лпфптщк счмсефус упдетцйнщн 1-зп умпчб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,41 .WORD ADDR ртйнет. .TITLE SPCPS.MAC ;ртйнет йурпмшъпчбойс ъбртпуб .SPCPS. .MCALL .READC,.WRITC,.CSIGEN,.PRINT,.SPCPS .MCALL .CLOSE,.WAIT,.SRESET,.EXIT ERRBYT = 52 .ENABL LSB START: .CSIGEN #DSPACE,#DEFEXT ;ччпд лпнбодопк уфтплй CALL IOXFER .PRINT #MES 1$: DEC R5 BR 1$ FINI: .CLOSE #0 ;>0- лпоег жбкмб MOV #DONE,R0 BR EXIT WERR: MOV #WRERR,R0 BR EXIT RERR: MOV #RDERR,R0 EXIT: .PRINT .SRESET ;хдбмйфш ъбзтхцеооще ;дтбкчетщ .EXIT WRDONE: .WAIT #0 BCS 3$ IOXFER: .READC #AREA,#3,,,#6$ ;юйфбфш вмпл BCC 5$ TSTB @#ERRBYT ;лпоег жбкмб? BEQ 4$ ;дб 2$: MOV #RERR,SBLOK BR 4$ 3$: MOV #WERR,SBLOK 4$: TSTB SPCALL BNE 5$ .SPCPS #AREA,#SBLOK INCB SPCALL BCS 7$ 5$: RETURN 6$: .WAIT #3 BCS 2$ .WRITC #AREA,#0,,,#WRDONE;ъбрйубфш вмпл BCS 3$ INC BLOK RETURN 7$: .PRINT #SPERR RETURN AREA: .WORD 0 ;вмпл бтзхнеофпч енф BLOK: .WORD 0 ;опнет вмплб .WORD BUFF ;бдтеу вхжетб .WORD 256. ;уюефюйл умпч .WORD 0 ;бдтеу рпдртпзтбннщ ъбчетыеойс SBLOK: .WORD FINI,0,0 BUFF: .BLKW 256. DEFEXT: .WORD 0,0,0,0 SPCALL: .BYTE 0 .NLIST BEX DONE: .ASCIZ /лпоег ртпзтбннщ/ MES: .ASCIZ /чщрпмоеойе ртпзтбннщ ртпдпмцбефус/ WRERR: .ASCIZ /пыйвлб .WRITC/ RDERR: .ASCIZ /пыйвлб .READC/ SPERR: .ASCIZ /пыйвлб .SPCPS/ .EVEN DSPACE =. .END START 5.3.42. .SFDAT ъбртпу .SFDAT рпъчпмсеф ртпзтбнне рпмшъпчбфемс хуфбоп- чйфш ймй йънеойфш дбфх упъдбойс хлбъбоопзп жбкмб (лбл ъбэй- эеоопзп фбл й ое ъбэйэеоопзп). жптнбф нблтплпнбодщ: .SFDAT AREA,CHAN,DBLK,DATE зде AREA - бдтеу вмплб бтзхнеофпч енф йъ 3-и умпч; CHAN - опнет лбобмб; DBLK - бдтеу вмплб йъ 4-и умпч, упдетцбэезп урегйжйлбгйа жбкмб; DATE - бдтеу сюеклй, упдетцбэек опчпе ъобюеойе дбфщ (ч жптнбфе RT11); еумй бтзхнеоф тбчео охма, фп йурпмшъхефус уйуфенобс дбфб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE CHAN,42 .WORD DBLK .WORD DATE ртйнет йурпмшъпчбойс .SFDAT ун. ч прйубойй ъбртпуб .FPROT. 5.3.43. .SFPA ъбртпу .SFPA рпъчпмсеф рпмшъпчбфема, тбвпфбаэенх у ртп- геууптпн рмбчбаэек ъбрсфпк, хуфбопчйфш бдтеу рпдртпзтбннщ пвтбвпфлй ртетщчбойс пф рръ. еумй бдтеу рпдртпзтбннщ пвтбвпф- лй ртетщчбойс ое пртедемео й ртпйуипдйф ртетщчбойе пф рръ, нпойфпт реюбфбеф уппвэеойе пв пыйвле й хдбмсеф ртпзтбннх рпмшъпчбфемс йъ рбнсфй. жптнбф нблтплпнбодщ: .SFPA AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу рпдртпзтбннщ пвтбвпфлй ртетщчбойс пф рръ. рп плпоюбойй тбвпфщ рпдртпзтбннщ пвтбвпфлй ртетщчбойс пф рръ, оепвипдйнп рпчфптйфш ъбртпу .SFPA, ф.л. нпойфпт ъбрте- эбеф пвтбвпфлх ртетщчбойк рпуме пвумхцйчбойс пдопзп йъ ойи. ьфп дембефус дмс фпзп, юфпвщ йулмаюйфш чпънпцопуфш ъбгйлмйчб- ойс ртпзтбннщ ртй нопзплтбфопн рпчфптеойй ртетщчбойс пф рръ. ртй йурпмшъпчбойй рръ, нпойфпт чщрпмосеф лпнбодх STST -(SP). рпьфпнх, ретед лпнбодпк RTI, рпдртпзтбннб рпмшъпчбфемс дпмцоб хчемйюйфш хлбъбфемш уфелб об дчб. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,30 .WORD ADDR 5.3.44. .SRESET ъбртпу .SRESET чщрпмосеф умедхаэйе жхолгйй: 1) хдбмсеф йъ рбнсфй дтбкчетщ хуфтпкуфч, лпфптще вщмй ъбзтхцеощ рп ъбртпух .FETCH; дтбкчетщ, лпфптще вщмй ъбзтхцеощ рп лпнбоде LOAD, пуфбафус теъйдеофощнй, фбл це лбл й дтбкчет уйуфенопзп хуфтпкуфчб; 2) уфйтбеф пфлтщфще ч обуфпсэее чтенс жбкмщ (жбкмщ, пфл- тщфще рп .ENTER, ойлпздб ое уфбохф рпуфпсоощнй); 3) чпууфбобчмйчбеф юйумп лбобмпч ччпдб-чщчпдб (16 (деус- фйюопк)); лбобмщ, пртедемеооще рп .CDFN, боохмйтхафус; 4) чпууфбобчмйчбеф пюетедш ччпдб-чщчпдб (ретчпобюбмшоп - пдйо ьменеоф); QSET дпмцео чщрпмосфшус рпчфптоп дмс пртедеме- ойс дпрпмойфемшощи ьменеофпч пюетедй; 5) пюйэбеф пюетедш рпдртпзтбнн ъбчетыеойс. жптнбф нблтплпнбодщ: .SRESET ртйнет йурпмшъпчбойс .SRESET ун. ч прйубойй ъбртпуб .READ. 5.3.45. .SYNCH ъбртпу .SYNCH рпъчпмсеф ч рпдртпзтбнне пвтбвпфлй ртетщ- чбойс йурпмшъпчбфш ртпзтбнноще ъбртпущ. веъ .SYNCH ъбртпущ йъ рпдртпзтбннщ пвтбвпфлй ртетщчбойс ое вхдхф пвтбвбфщчбфшус нпойфптпн. жптнбф нблтплпнбодщ: .SYNCH AREA[,PIC] зде AREA - бдтеу вмплб йъ 7-нй умпч; ьфпф вмпл оепвипдйн ртй йурпмшъпчбойй .SYNCH; упдетцйнпе вмплб жптнйтхефус рпмшъпчб- фемен (ун. фбвм.19); PIC - оепвсъбфемшощк бтзхнеоф, лпфптщк дбеф нблтплпнбоде .SYNCH чпънпцопуфш пвтбъпчбойс PIC - лпдпч дмс йурпмшъпчбойс дтбкчетбнй хуфтпкуфч. фбвмйгб 19 ---------------------------------------------------------- ! умпчп ! упдетцйнпе ! !--------------------------------------------------------! ! 1 ! йурпмшъхефус фпмшлп уйуфенпк; езп упдет- ! ! ! цйнпе ое дпмцоп йънеосфшус рмшъпчбфемен ! ! 2 ! опнет фелхэезп ъбдбойс (0 ймй 2); нпцеф ! ! ! вщфш рпмхюео у рпнпэша ъбртпуб .GTJB ! ! 3,4 ! ое йурпмшъхафус ! ! 5 ! бтзхнеоф R0; ртй хуреыопн чщрпмоеойй ! ! ! .SYNCH тезйуфт R0 вхдеф упдетцбфш ьфпф ! ! ! бтзхнеоф ! ! 6 ! -1 ! ! 7 ! 0 ! ---------------------------------------------------------- ртйнеюбойе. нецдх чщрпмоеойен ъбртпупч .INTEN й .SYNCH оемшъс чщрпмосфш претбгйй уп уфелпн. 5.3.46. .TLOCK ъбртпу .TLOCK нпцеф йурпмшъпчбфшус ртпзтбннбнй, лпфп- тще чщрпмосафус ч тецйне FB, дмс фпзп юфпвщ удембфш USR теъйдеофопк, еумй фпмшлп USR ое ъбосфб пвумхцйчбойен дтхзп- зп ъбдбойс. еумй USR йурпмшъхефус дтхзйн ъбдбойен, фп ртй чщрпмоеойй .TLOCK вхдеф хуфбопчмео у-тбътсд, юфп хлбъщчбеф об фп, юфп ъбртпу ое чщрпмоео. жптнбф нблтплпнбодщ: .TLOCK ртйнет. .TITLE TLOCK.MAC ;ртйнет йурпмшъпчбойс ъбртпуб .TLOCK. .MCALL .TLOCK,.UNLOCK,.LOOKUP,.PRINT,.EXIT START: .TLOCK ;USR ъбосфб? BCS SUSPND ;дб .LOOKUP #AREA,#4,#FILE ;пфлтщфш жбкм BCS LKERR .PRINT #J1MSG .UNLOCK ;пучпвпдйфш USR TSTB J2SW BNE 1$ CALL JOB2 1$: .EXIT SUSPND: TSTB J2SW BNE START JSR PC,JOB2 INC J2SW BR START AREA: .BLKW 5 FILE: .RAD50 /DK / .RAD50 /FILE / .RAD50 /TMP/ LKERR: .PRINT #LKMSG .EXIT LKMSG: .ASCIZ /жбкм ое обкдео/ J1MSG: .ASCIZ /чщрпмосефус ъбдбойе 1/ J2MSG: .ASCIZ /чщрпмосефус ъбдбойе 2/ J2SW: .BYTE 0 .EVEN JOB2: .PRINT #J2MSG RTS PC .END START 5.3.47. .TRPSET ъбртпу .TRPSET рпъчпмсеф хуфбопчйфш бдтеу рпдртпзтбннщ пвтбвпфлй ртетщчбойс рп 4-нх й 10-нх челфптбн. ъобюеойе у- тбътсдб об чипде ч рпдртпзтбннх хлбъщчбеф об фп, лблпе рте- тщчбойе ртпйъпымп: пюйэеоощк у-тбътсд - ртетщчбойе рп 4 челфптх; хуфбопчмеоощк у-тбътсд - рп 10 челфптх. чщипд йъ рпдртпзтбннщ пвтбвпфлй ртетщчбойс рпмшъпчбфемс пухэеуфч- мсефус рп лпнбоде RTI. еумй ртй чщрпмоеойй уфелб ртпйъпымп ртетщчбойе рп 4-нх челфптх, фп поп ое пвтбвбфщчбефус рп .TRPSET й об фетнйобме реюбфбефус уппвэеойе ?MON-F-STACK OVERFLOW нпойфптпн SJ ймй ?MON-F-TRAP TO 4 нпойфптпн FB й XM. жптнбф нблтплпнбодщ: .TRPSET AREA,ADDR зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; ADDR - бдтеу рпдртпзтбннщ пвтбвпфлй ртетщчбойс; еумй ADDR=0, фп ртедщдхэйк .TRPSET пфнеосефус. жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,3 .WORD ADDR ртйнет. .TITLE TRPSET.MAC .MCALL .TRPSET,.PRINT,.EXIT DIVZ =67 START: .TRPSET #AREA,#TRPLOC ;ъбртефйфш хдбмеойе ;ртпзтбннщ DIVZ ;оедпрхуфйнбс лпнбодб TST @#166666 ;оеухэеуфчхаэйк бдтеу .EXIT TRPLOC: ;рпдртпзтбннб пвтбвпфлй ;ртетщчбойк BCS 1$ .PRINT #TRP4 BR 2$ 1$: .PRINT #TRP10 .TRPSET #AREA,#TRPLOC 2$: RTI AREA: .WORD 0,0 TRP4: .ASCIZ /ртетщчбойе рп 4 челфптх/ TRP10: .ASCIZ /ртетщчбойе рп 10 челфптх/ .EVEN .END START 5.3.48. .TWAIT ъбртпу .TWAIT ртйпуфбобчмйчбеф чщрпмоеойе ртпзтбннщ рпмшъпчбфемс об хлбъбоощк йофетчбм чтенеой. ъбртпу .TWAIT фтевхеф дмс учпезп чщрпмоеойс ьменеоф пюетедй. жптнбф нблтплпнбодщ: .TWAIT AREA,TIME зде AREA - бдтеу вмплб йъ 2-и умпч бтзхнеофпч енф; TIME - бдтеу вмплб йъ 2-и умпч, лпфптще упдетцбф чемй- юйох йофетчбмб чтенеой (ретчпе умпчп - ойцоаа зтбойгх йофетчбмб, чфптпе умпчп - четиоаа зтбойгх йофетчбмб). жптнбф вмплб бтзхнеофпч: AREA: .BYTE 0,24 .WORD TIME ртйнет. .TITLE TWAIT.MAC .MCALL .TWAIT,.QSET,.PRINT,.EXIT START: CALL TASK 1$: .TWAIT #AREA,#TIME BCS NOQ CALL TASK DEC COUNT BNE 1$ .PRINT #EXIT .EXIT TASK: INC TCNT BIT #1,TCNT BEQ 1$ .PRINT #TIK RETURN 1$: .PRINT #TAK RETURN NOQ: .PRINT #QERR .EXIT AREA: .WORD 0,0 TIME: .WORD 0,50.*2 COUNT: .WORD 7 TCNT: .WORD 0 TIK: .ASCII /фйл - /<200> TAK: .ASCIZ /фбл/ EXIT: .ASCIZ /лпоег ртпзтбннщ/ QERR: .ASCIZ /оеф ьменеофб пюетедй/ .EVEN .END START 5.3.49. .WAIT ъбртпу .WAIT ртйпуфбобчмйчбеф чщрпмоеойе ртпзтбннщ дп феи рпт, рплб ое ъблпоюйфус претбгйс ччпдб-чщчпдб об хлб- ъбоопн лбобме. рп ьфпнх ъбртпух нпцоп рпмхюйфш йожптнбгйа п ртбчймшопуфй чщрпмоеойс претбгйй: еумй лбобм ое пфлтщф ймй ртпйъпымб бррбтбфобс пыйвлб, хуфбобчмйчбефус у-тбътсд. ч тецйне FB(XM) ъбртпу .WAIT, еумй претбгйс ччпдб- чщчпдб ое ъбчетыеоб чщъщчбеф ъбдетцлх чщрпмоеойс пдопзп йъ ъбдбойк й чщрпмоеойе дтхзпзп, еумй поп ухэеуфчхеф. жптнбф нблтплпнбодщ: .WAIT CHAN ртйнет йурпмшъпчбойс .WAIT ун. ч прйубойй ъбртпуб .READ. 6. уппвэеойс йожптнбгйс п уппвэеойси дбоб ч [3]. ртймпцеойе 1 лпдщ пыйвпл ртпзтбннощи ъбртпупч ч фбвмйге ртйчедеощ лпдщ пыйвпл ртпзтбннощи ъбртпупч й ртйюйощ, чщъщчбаэйе ьфй пыйвлй. фбвмйгб ----------------------------------------------------------- ! ъбртпу ! лпд ! ртйюйоб пыйвлй ! ! ! пыйвлй ! ! !---------------------------------------------------------! ! .CDFN ! 0 ! рпрщфлб пртедемйфш неошыее юйумп ! ! ! ! лбобмпч, юен еуфш ч обмйюйй ! ! .CHCOPY ! 0 ! дтхзпе ъбдбойе ое ухэеуфчхеф ймй ! ! ! ! лбобм (OCHAN) ое пфлтщф ! ! ! 1 ! лбобм (CHAN) ъбосф ! ! .CLOSE ! 3 ! ъбэйэеоощк жбкм у фен це йнеоен ! ! ! ! хце ухэеуфчхеф ! ! .CMKT ! 0 ! ъбртпу у хлбъбоощн ID (ID=0) ! ! ! ! ое ухэеуфчхеф ! ! .CNTXSW ! 0 ! ч урйуле бдтеупч хлбъбо оедпрху- ! ! ! ! фйнщк бдтеу ! ! .CSIGEN ! 0 ! оедпрхуфйнбс лпнбодб ! ! ! 1 ! хлбъбоопзп хуфтпкуфчб оеф ч ! ! ! ! фбвмйгби уйуфенщ ! ! ! 2 ! рпрщфлб пфлтщфш ъбэйэеоощк жбкм, ! ! ! ! йнеаэйк фп це йнс ! ! ! 3 ! рпрщфлб пфлтщфш жбкм рп .ENTER ! ! ! ! оехдбюоб йъ-ъб ретерпмоеойс ! ! ! ! уртбчпюойлб хуфтпкуфчб ! ! ! 4 ! чипдопк жбкм ое обкдео ртй ! ! ! ! чщрпмоеойй .LOOKUP ! ! .CSISPC ! 0 ! оедпрхуфйнбс лпнбодб ! ! ! 1 ! оедпрхуфйнпе хуфтпкуфчп ! ! .CSTAT ! 0 ! лбобм ое пфлтщф ! ! .DELETE ! 0 ! хлбъбоощк лбобм ъбосф ! ! ! 1 ! жбкм ое обкдео ч уртбчпюойле ! ! ! ! хуфтпкуфчб ! ! ! 2 ! оедпрхуфйнбс претбгйс ! ! ! 3 ! ъбэйэеоощк жбкм ! ! .DSTATUS ! 0 ! хуфтпкуфчп ое обкдеоп ч фбвмйгби ! ! ! ! уйуфенщ ! ! .ENTER ! 0 ! хлбъбоощк лбобм ъбосф ! ! ! 1 ! об хуфтпкуфче ое обкдеоб пвмбуфш ! ! ! ! впмшыбс ймй тбчобс н (LEN=н); ймй ! ! ! ! хуфтпкуфчп ймй уртбчпюойл хуфтпк- ! ! ! ! уфчб ретерпмоео ! ! ! 3 ! ъбэйэеоощк жбкм у фен це йнеоен ! ! ! ! хце ухэеуфчхеф ! ! .FETCH ! 0 ! оедпрхуфйнпе йнс хуфтпкуфчб ймй ч ! ! ! ! уйуфене пфухфуфчхеф дтбкчет хлб- ! ! ! ! ъбоопзп хуфтпкуфчб ! ! .RELEAS ! 0 ! оедпрхуфйнпе йнс хуфтпкуфчб ! ! .FPROT ! 0 ! хлбъбоощк лбобм ъбосф ! ! ! 1 ! жбкм ое обкдео ! ! ! 2 ! оедпрхуфйнбс претбгйс ! ! ! 3 ! оедпрхуфйнпе ъобюеойе бтзхнеофб ! ! ! ! "PROT" ! ! .GTJB ! 0 ! оеф ъбдбойс ! ! .GVAL ! 0 ! хлбъбоопе ъобюеойе унеэеойс обип- ! ! .PVAL ! ! ! ! ! ! дйфус чое пвмбуфй RMON ! ! .LOOKUP ! 0 ! хлбъбоощк лбобм ъбосф. оеф ъбдбойс! ! .MRKT ! 0 ! оеф учпвпдопзп ьменеофб пюетедй ! ! .MTATCH ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 4 ! фетнйобм мпзйюеулй учсъбо у дтхзйн! ! ! ! ъбдбойен ! ! ! 5 ! оедекуфчйфемшощк бдтеу умпчб буйои! ! ! ! тпоопзп упуфпсойс фетнйобмб (ч те-! ! ! ! цйне XM) ! ! .MTDTCH ! 1 ! оедпрхуфйнщк мпзйюеулйк опнет фет-! ! ! ! нйобмб; фетнйобм ое учсъбо у ъбдб-! ! ! ! ойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! .MTGET ! 1 ! оедпрхуфйнщк опнет фетнйобмб; фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеучхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 4 ! фетнйобм учсъбо у дтхзйн ъбдбойен ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! ! ! буйоитпоопзп упуфпсойс фетнйобмб ! ! .MTIN ! 0 ! оеф уйнчпмпч ч вхжете ччпдб ! ! ! 1 ! оедпрхуфйнщк опнет фетнйобмб; фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! ! ! (ч тецйне XM) ! ! .MTOUT ! 0 ! оеф учпвпдопзп неуфб ч вхжете чщ- ! ! ! ! чпдб ! ! ! 1 ! оедпрхуфйнщк опнет фетнйобмб, фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! .MTPRNT ! 1 ! оедпрхуфйнщк опнет фетнйобмб; фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! ! ! уфтплй ! ! .MTRCTD ! 1 ! оедпрхуфйнщк опнет фетнйобмб; фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! .MTSET ! 1 ! оедпрхуфйнщк опнет фетнйобмб; фет-! ! ! ! нйобм ое учсъбо у ъбдбойен ! ! ! 2 ! оеухэеуфчхаэйк моф ! ! ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! .MTSTAT ! 3 ! оедпрхуфйнщк жхолгйпобмшощк лпд ! ! ! 5 ! оедекуфчйфемшощк бдтеу вхжетб ! ! .PROTECT ! 0 ! хлбъбоощк челфпт хце йурпмшъхефус ! ! ! 1 ! бдтеу челфптб впмшые 474 ймй ое ! ! ! ! лтбфео юефщтен ! ! .UNPROTECT ! 1 ! бдтеу челфптб впмшые 474 ймй ое ! ! ! ! лтбфео юефщтен ! ! .RCVD ! 0 ! рпрщфлб пвтбэеойс л оеухэеуфчхаэе-! ! .RCVDC ! ! нх ъбдбойа ! ! .RCVDW ! ! ! ! .READ ! 0 ! рпрщфлб юфеойс рпуме лпогб жбкмб ! ! .READC ! ! ! ! .READW ! ! ! ! ! 1 ! бррбтбфобс пыйвлб об лбобме ! ! ! 2 ! хлбъбоощк лбобм ое пфлтщф ! ! .RENAME ! 0 ! хлбъбоощк лбобм ъбосф ! ! ! 1 ! жбкм ое обкдео ! ! ! 2 ! оедпрхуфйнбс претбгйс ! ! ! 3 ! рпрщфлб ретейнеопчбойс ъбэйыеоопзп! ! ! ! жбкмб ! ! .REOPEN ! 0 ! хлбъбоощк лбобм ъбосф ! ! .SAVESTATUS! 0 ! хлбъбоощк лбобм ое пфлтщф ! ! ! 1 ! жбкм пфлтщф рп .ENTER ймй обипдйф-! ! ! ! ус об нбзойфопк меофе, рпьфпнх ! ! ! ! .SAVESTATUS дмс оезп оедпрхуфйн ! ! .SDAT ! 0 ! рпрщфлб пвтбэеойс л оеухэеуфчхаэе-! ! .SDATC ! ! нх ъбдбойа ! ! .SDATW ! ! ! ! .SFDAT ! 0 ! лбобм ъбосф ! ! ! ! жбкм ое обкдео ! ! ! ! хуфтпкуфчп оежбкмпчпк уфтхлфхтщ ! ! .SPCPS ! 0 ! рпрщфлб йурпмшъпчбфш .SPCPS ч ! ! ! ! змбчопк ртпзтбнне (б ое ч рпдртпз-! ! ! ! тбнне ъбчетыеойс) ! ! ! 1 ! ртедщдхэйк .SPCPS ое чщрпмоео ! ! .SPFUN ! 0 ! рпрщфлб юфеойс ймй ъбрйуй рпуме ! ! ! ! лпогб жбкмб ! ! ! 1 ! бррбтбфобс пыйвлб об лбобме ! ! ! 2 ! лбобм ое пфлтщф ! ! .TLOCK ! 0 ! USR хце йурпмшъхефус дтхзйн ъбдб- ! ! ! ! ойен ! ! .TTYIN ! 0 ! оеф уйнчпмб ч вхжете ччпдб ! ! .TTINR ! ! ! ! .TTYOUT ! 0 ! вхжет чщчпдб ретерпмоео ! ! .TTOUTR ! ! ! ! .TWAIT ! 0 ! оеф учпвпдопзп ьменеофб пюетедй ! ! .WAIT ! 0 ! хлбъбоощк лбобм ое пфлтщф ! ! ! 1 ! бррбтбфобс пыйвлб об лбобме чп ! ! ! ! чтенс чщрпмоеойс ртедщдхэек претб-! ! ! ! гйй ччпдб-чщчпдб ! ! .WRITE ! 0 ! рпрщфлб ъбрйуй рпуме лпогб жбкмб ! ! .WRITC ! 1 ! бррбтбфобс пыйвлб об лбобме ! ! ! 2 ! лбобм ое пфлтщф ! ----------------------------------------------------------- ртйнеюбойс: 1. дмс ъбртпуб .SYNCH чпъчтбф рп пыйвле ртпйуипдйф ч умедхаэйи умхюбси: - ое ъблпоюеоб нблтплпнбодб .SYNCH, йурпмшъхаэбс фпф це вмпл бтзхнеофпч енф; - хлбъбо оедпрхуфйнщк опнет ъбдбойс; - еумй ртпйъпымп хдбмеойе ймй пуфбопч ртпзтбннщ. ртй ьфпн хртбчмеойе ретедбефус об умедхаэха ъб .SYNCH сюеклх. еумй нблтплпнбодб .SYNCH чщрпмоеоб хуреыоп, фп чпъчтбф ртпйуипдйф ч умедхаэха ъб чпъчтбфпн рп пыйвле сюек- лх. 2. ртй чщрпмоеойй ъбртпупч, ое хлбъбоощи ч фбвмйге, пыйвпл ое ртпйуипдйф. ртймпцеойе 2 уфтхлфхтб вмплб CBLK фбвмйгб ----------------------------------------------------------- ! умпчп ! тбътсд ! ъобюеойе ! прйубойе ! !---------------------------------------------------------! ! 1 ! 0 ! 1 !бррбтбфобс пыйвлб об лбобме! !(умпчп ! 1-5 ! N ! N-йоделу хуфтпкуфчб ч фбв-! !упуфпс- ! ! ! мйгби нпойфптб (йдеофйжй- ! !ойс лб- ! ! ! гйтхеф жйъйюеулпе хуфтпк- ! !обмб) ! ! ! уфчп, лпфптпе учсъбоп у ! ! ! ! ! йурпмшъхенщн лбобмпн) ! ! ! 6 ! 1 ! об лбобме чщрпмосефус ! ! ! ! ! ъбртпу .RENAME ! ! ! 7 ! 1 ! об лбобме чщрпмоео .ENTER;! ! ! ! ! уртбчпюойл хуфтпкуфчб дпм-! ! ! ! ! цео нпдйжйгйтпчбфшус рп ! ! ! ! ! ъбртпух .CLOSE ! ! ! 8-12 ! ! опнет уезнеофб уртбчпюойлб! ! ! ! ! (1-37(чпушнетйюопк)), ч ! ! ! ! ! лпфптпн обипдйфус ъбрйуш п! ! ! ! ! фелхэен жбкме ! ! ! 13 ! 1 ! пвобтхцеоб нефлб лпогб жбк! ! ! ! ! мб (EOF) ! ! ! 14 ! - ! ое йурпмшъхефус ! ! ! 15 ! 1 ! лбобм ъбосф ! ! 2 ! ! ! опнет обюбмшопзп вмплб ! ! ! ! ! жбкмб об фпне; ъобюеойе ! ! ! ! ! умпчб тбчоп охма, еумй ! ! ! ! ! хуфтпкуфчп рпумедпчбфемшоп! ! ! ! ! зп дпуфхрб ! ! 3 ! ! ! дмйоб жбкмб ч вмплби ! ! 4 ! ! ! ое йурпмшъхефус ! ! 5 ! ! ! юефощк вбкф - юйумп оеъб- ! ! ! ! ! четыеоощи претбгйк ччпдб- ! ! ! ! ! чщчпдб об лбобме; оеюефощк! ! ! ! ! вбкф - опнет ртйчпдб ! ! ! ! ! хуфтпкуфчб, учсъбоопзп у ! ! ! ! ! лбобмпн (пф 0 дп 7) ! ----------------------------------------------------------- ретеюеош уущмпюощи дплхнеофпч 1.претбгйпообс уйуфенб жпдпу-2 ртпзтбннйтпчбойе ретйжетйкощи хуфтпкуфч тхлпчпдуфчп уйуфенопзп ртпзтбннйуфб 589.7547471.00042-01 32 03 2.претбгйпообс уйуфенб жпдпу-2 нпойфпт тбуыйтеоопк рбнсфй тхлпчпдуфчп ртпзтбннйуфб 589.7547471.00042-01 33 04 3.претбгйпообс уйуфенб жпдпу-2 уппвэеойс уйуфенщ 589.7547471.00042-01 90 03 4.претбгйпообс уйуфенб жпдпу-2 прйубойе ртйнеоеойс 589.7547471.00042-01 31 01