СОДЕРЖАНИЕ
ОСНОВНЫЕНАПРАВЛЕНИЯПРИМЕНЕНИЯВЫЧИСЛИТЕЛЬНОЙТЕХНИКИ В УЧЕБНОМПРОЦЕССЕ4
1. ОБЩИЙРАЗДЕЛ11
1.1. Характеристикиаппартныхсредств вычислительнойтехники11
1.2. Характеристикипрограммныхсредств вычислительнойтехники19
1.3. Постановказадачи20
2. СПЕЦИАЛЬНЫЙРАЗДЕЛ22
2.1. Разработкаалгоритмапрограммногообеспечения22
2.2. Разработкауниверсальнойуправляющейпрограммы23
2.3. Разработкапрограммногоинтерфейса27
2.4. Описание процесса отладки28
2.5. Разработкаэксплуатационно-методическойдокументации29
2.6. Результатыиспытаний30
3.ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКИЙРАЗДЕЛ32
3.1. Оценкаиздержек наразработкупрограммногоинтерфейсадля программатораПЗУ32
3.2. Анализэффективностивнедренияразработаннойпрограммы в учебный процесс34
4. МЕРОПРИЯТИЯПО ОХРАНЕ ТРУДА.БЕЗОПАСНОСТЬТРУДА ПРИОБСЛУЖИВАНИИПРОГРАММАТОРА37
4.1 Требованиябезопасностик техническимсредствамПЭВМ37
4.2. Требованиябезопасностик микроклиматув учебныхлабораториях38
4.3. Меры безопасностипри сервисномобслуживаниипрограмматора.40
Стремительноевнедрение всферу материальногопроизводствановой информационнойтехнологии,широкая электронизациявсех машин иоборудованиятребует сегодняот многомиллионнойармии специалистовзнания микропроцессорныхсредств и систем,владения компьютернойтехникой.
В настоящийпериод времявнедрениянаучных открытий,освоение новыхтехнологийв ведущих отрасляхпромышленностистановитсясоизмеримымс продолжительностьюучебы в вузе,техникуме. Этотребует поискатаких методови средств обучения,которые сократилибы расстояниемежду достиженияминауки, производственнойпрактикой исодержаниемобразования.Изменяютсяв значительнойстепени и целиобучения. Сегодняпрофессиональноважным дляспециалистаявляется умениесамостоятельнои непрерывнопополнять,обновлятьзнания, веститворческийпоиск, способностьответственноприниматьоригинальныерешения.
Новые задачиобразованиятребуют современнойтехническойбазы, и, в первуюочередь, широкоговнедрениякомпьютеровв учебном процессе.Реализацияучебного процесса,обеспечивающеговысокую образовательнуюактивностьучащихся,самостоятельностьих работы,индивидуализациюобучения внастоящее времяневозможнабез широкогоприменениявычислительнойтехники идидактическихматериалов,обеспечивающихреальностьтакого использования.
Успехи в делекомпьютеризацииучебного процессаопределяютсятремя существеннымифакторами:
наличиемвычислительнойтехники;
производствоми распределениемпрограммногообеспечения;
готовностьюпреподавателейметодическиграмотно использоватьвычислительнуютехнику.
Определенныйопыт освоенияи использованияэлектроннойвычислительнойтехники вучебно-воспитательномпроцессе накопленв Винницкомтехникумеэлектронныхприборов [7].
Начало освоенияэлектронно-вычислительныхмашин (ЭВМ) относитсяк 1977-78 году, когдавычислительныйцентр техникума,оснащенныймашинами«Электроника-1004»,занималсястатистическойобработкойрезультатовуспеваемостии посещаемости.Это позволилоруководителямтехникумаежедневнополучать оперативнуюинформациюо состояниидел в каждомучебной группе.
В 1980-1981 году былисделаны первыешаги по использованиюЭВМ для решениятворческихзадач в периодкурсового идипломногопроектирования.Начало этойработы поставилоперед педагогическимколлективомтехникума рядпроблем:
необходимостьпсихологическойподготовкипреподавателейк внедрениювычислительнойтехники;
необходимостьразработкиметодик инженерныхрасчетов,ориентированныхна применениеЭВМ;
пересмотрметодики проведениязанятий;
отсутствиеинформационно-методическогои программногообеспечениявычислительнойтехники.
Возникшиепроблемы решалисьв техникумепостепенно,сначала работойпо внедрениювычислительнойтехники занялисьпреподавателиспециальныхдисциплин,хорошо владеющиеметодикойобучения, содной стороны,и знающие основывычислительнойтехники с другой.Это позволилоуже в 1980-81 годуразработатьи внедрить вучебный процесспакет программ«Расчет элементовинтегральныхмикросхем».Выполненнаяучащимися двухучебных группрасчетная частькурсовогопроекта показалавысокую эффективностьприменениятехники в курсовомпроектировании.Проведенныев том же годуоткрытые урокипозволили напрактике показатьбольшинствучленов коллективавозможностьи эффективностьиспользованиявычислительнойтехники в учебномпроцессе. Былпреодоленпсихологическийбарьер. В работупо внедрениювычислительнойтехники сталиподключатьсявсе новые иновые преподаватели.С 1983-84 года на ЭВМпроводятсярасчеты функциональныхузлов по предмету«Радиоприемныеустройства»,трудоемкиерасчеты надежностиРЭА, экономическиерасчеты и др.Только за 4 годаболее 200 учащихсявыполниликурсовые проектыс расчетамина ЭВМ. Высокаяточность расчетов,производительностьпозволиливысвободитьу них время натворческую,содержательнуючасть проекта.
Общие методическиепринципы проведениязанятий припомощи ЭВМ,сформулированныев техникумена основечетырехлетнегоопыта, былиперенесенына другие предметыобщеобразовательного,общетехническогои специальногоцикла. Этомуспособствовалорганизованныйв 1985 году постояннодействующийсеминар дляпреподавателейпо программированиюи применениювычислительнойтехники в учебномпроцессе. Дляучащихся былвведен факультативныйкурс «Применениемикропроцессорныхсредств и микро-ЭВМ».
1984-85 год сталгодом массовогоосвоенияпрограммируемыхмикрокалькуляторов,которые широкоиспользовалисьпри выполнениилабораторныхи практическихработ по ТОЭ,физике, математике,общетехническихи специальныхдисциплин.Создание прикладныхрасчетныхпрограмм дляпрограммируемыхмикрокалькуляторов- неотъемлемаячасть научно-методическойработы в техникуме.Более 30% преподавателейпрошли переподготовкуна факультетахповышенияквалификациипри ведущихучебных заведеняхминвуза СССРи отраслевогоминистерства[7].
Внедрениевычислительнойтехники в нашемучебном заведении- это планомерный,постоянноразвивающийсяпроцесс. Опытподтвердилизвестноеположение отом, что совершенствованиюметодики ипрограмм нетпредела.
В 1982 году положеноначало использованиювычислительнойтехники внаучно-техническомтворчестве.Так при выполнениихоз. договорныхэкспериментально-конструктивныхработ учащиесяготовят программытрассировкипечатных платдля системавтоматическогопроектирования(САПР), разрабатываюти отлаживаютпрограммысверловки платдля станковс числовымпрограммнымуправлением(ЧПУ), проводяттиповые расчеты,учет материальныхценностей,документооборотпо ЭКВ ведетсяс 1987 года припомощи автоматизированнойинформационнойсистемы, созданнойна базе СУБД-микродля ДВК.
Постояннаяработа учащихсяс ЭКБ с вычислительнойтехникой приноситсвои плоды,сегодняшниестаршекурсники,работающиев ЭКВ, свободновладеют микрокомпьютерамина уровнепользователя.Можно предположить,что результатыподготовкипо вычислительнойтехнике значительновозрастут приорганизациинепрерывногопроцесса формированияпрофессиональноважных качествпользователяЭВМ у каждогоучащегося,начиная с изученияоснов информатикии вычислительнойтехники вобщетехническихи специальныхдисциплинахи заканчиваяиспользованиемее в различныхучебных формахнаучно-техническоготворчества.
Программирование- один из интересныхвидов творческойдеятельности.Важная организационнаяформа научно-техническоготворчества- кружок программирования.Занятия в немпривлекаютмногих учащихсяи дают практическиезнания попрограммированиюи пользованиюЭВМ. Он становитсябазой для подготовкии отладке многихприкладныхпрограмм.
Автоматизацияпроцесса обработкиинформации- одна из сферэффективногоприменениявычислительнойтехники. Рациональнаяорганизацияинформационныхресурсов втехникуме -задача, котораястоит передколлективом.С этой цельюв ЭКБ техникумаведутся работыпо созданиюавтоматизированныхинформационно-поисковыхсистем на основемикрокомпьютеров.
В 1987 году фрагментинформационно-поисковойсистемы «Банкпередовогопедагогическогоопыта» внедренв опытнуюэксплуатациюсовместно скафедрой педагогикимосковскогообластногопединститутаим Н.К. Крупской.Пакет программинформационно- поисковойсистемы внедряетсяпри изучениитемы «Информационноеобеспечениепрофессиональнойдеятельностиспециалиста»в курсе «основынаучно - техническоготворчества».Работа учащихсяс информационнымифондами намашинах носителях- важный этапформированиякультурыинформационнойдеятельностикак преподавателей,так и учащихся[7].
В 1988 году втехникумесоздана хорошаяучебно-материальнаябаза:
класс диалоговыхвычислительныхкомплексов;
2 классакомпьютеров;
более 300 программируемыхкалькуляторов
Широкоеприменениеэлементовмикропроцессорнойтехники внаучно-техническомтворчествепозволяетпроизводитьразработкипо совершенствованиюнаучно-техническихсредств вычислительнойтехники, созданиюучебно-лабораторногооборудованиядля изученияработы микро-ЭВМи программногоуправлениятехнологическимоборудованием.
Так в 1985 годубыл создантренажер учебноймикро-ЭВМ«Электроника-ВТЭПмикро». Натематическойвыставке «Инженернотематическоеоборудование»ВДНХ СССР в1986 году учебнаямикро-ЭВМ отмеченасеребряноймедалью. Десятьтаких тренажероввнедрены вучебный процессв 1986 году[7].
В 1986 году втехникумесоздана локальнаясеть диалоговыхвычислительныхмашин. Ее внедрениесущественнорасширилодиалектическиевозможностипримененияДВК-1 в условияхгрупповогообучения. В1987 году ЭКБ техникумасоздает локальныесети по заказуряда техникумовотрасли.
Призеромвыставки «Итоги11-го всесоюзногосмотра-конкурсана лучшуюэкспериментально-конструктивнуюработу учащихсяССУЗ», проводимойв феврале-марте1987 года на ВДНХСССР, сталспециализированныймикрокомпьютер«Спектр», созданныйв ЭКБ для управлениятехнологическимоборудованием.
МедалямиВДНХ отмеченыпакеты программ«Расчет элементовинтегральныхсхем» и «Определениепрофессиональнойнадежностиличности». Трипреподавателятехникумаявляются членамиметодическойкомиссии минвузаСССР по вычислительнойтехнике инаучно-техническомутворчеству.
Опытом работытехникум делитсяна всесоюзных,республиканскихи областныхсовещаниях,семинарах,проводимыхминвузом СССР.
Масштабностьзадач, связанныхс внедрениемвычислительнойтехники, выдвигаетна повесткудня вопрос оцелесообразностисоздания набазе ведущихтехникумовряда лабораторий,занимающихсяразработкойинформационно-методическогои программногообеспеченияпо каждому изнаправленийс последующимвнедрениемво все учебныезаведенияотрасли и системысреднего специальногообразования.Это может статьодним из направленийэкспериментально-конструкторскойработы, проводимойпо хоздоговорампри условииукрепленияЭКБ специалистамипо системотехникеи системномупрограммированию.
Когда произносятслова «персональныйкомпьютер»,обычно подразумеваетсяне что иное,как компьютертипа IBM PC. Именноамериканскаякомпания IBM вавгусте 1981 годаобъявила овыпуске самогопервого компьютера,получившегоназвание PersonalComputer, или простоPC. [6]
Впрочем, ещедо созданияIBM PC множествомразных фирмвыпускалиськомпьютеры,которые былобы вполне уместноназыватьперсональными.Даже весьмадалекая отэлектроникифирма Coca - Cola пыталасьвыпускатьсобственнуюмодель персональногокомпьютера!
Несовместимостьмногочисленныхмоделей компьютеровбыла главнымпрепятствиемдля созданиясовершенныхпрограммуниверсальногоприменения.
Когда IBM вышлана рынок настольныхкомпьютеров,казавшийсясомнительными рискованным,разнобой средиперсональныхкомпьютеровдовольно быстропошел на убыль.Маленькийперсональныйкомпьютер IBMPC на процессоре8088 фирмы Intel оказалсятем долгожданнымстандартом,который с радостьюподдержалимногочисленныепрограммистыи фирмы - изготовителиприкладногопрограммногообеспечения:наконец-топоявился компьютерсолидной фирмы,для которогоможно былоразрабатыватьи успешно продаватьбольшими тиражамидостаточносложные, совершенныеи универсальныепрограммы. Посути дела, компьютерIBM PC создал нетолько стабильныйи обширныйрынок персональныхкомпьютеров,но и огромныйрынок прикладногопрограммногообеспечения,на котором запоследниеполтора десятилетияразбогателомножествовенчурных фирм[6].
Вот яркийтому пример.Компьютер IBMPC почти с самогоначала работалпод управлениемдисковой операционнойсистемы DOS, которуюразработаладля IBM маленькаяи никому тогдане известнаяфирма Microsoft. СегодняMicrosoft - бесспорныйфлагман индустриипрограммногообеспечения,одна из богатейшихфирм мира,выпускающаяне толькооперационныесредства MS-DOS иWindows для управлениякомпьютерами,но и различныеприкладныепакеты. А основательи руководительMicrosoft Билл Гейтс,несмотря намолодость, одиниз самых богатыхлюдей.
Разумеется,персоналкаIBM PC оказаласьтолько первымшагом в верномнаправлении.Затем фирмаIBM выпустиламножествомоделей персональныхкомпьютеровXT, AT, PC/1 и PC/2 на различныхпроцессорахIntel 8086, 80286, 80386, 80486. Все этикомпьютерыпредназначеныдля работы подуправлениемоперационнойсистемы DOS илив графическойсреде Windows.
Множестводругих фирмнемедленнопринялисьподражать IBM иразвивать ееуспех, выпускаясвои собственныемодели персоналок,полностьюсовместимыес IBM PC, либо выпускаяразличноепериферийноедополнительноеоборудованиедля IBM PC. Ведь однойиз замечательныхособенностейперсоналкиIBM PC была так называемая«открытаяархитектура»,позволявшаядаже неспециалистамлегко и простоизменять устройствои техническиевозможностисвоего компьютера.Для этого частодостаточнобыло воспользоватьсяразъемамипоследовательногоили параллельногопортов, добавитьна пустующихпанелькахнесколькомикросхемпамяти, вставитьв плату сопроцессор,переставитьв другое положениеDIP-переключатели,поменять спомощью отверткиблоки, воткнутьили вынутьплату расширенияиз слота системнойшины. В результатебуквально занесколько минутвсякий мог, нерасполагаясколько - нибудьглубокимизнаниями исложным инструментом,построить изготовых компонентовсовершенноновую персональнуюкомпьютернуюсистему снеобходимымитехническимипараметрами[6].
Вообще-то,самый первыйперсональныйкомпьютерсоздали инженерыамериканскойфирмы Xerox. Именнотой самой фирмы,которая подариламиру копировальныйаппарат, известныйу нас под именем«ксерокс». Это,оставшеесяпочти незамеченным,историческоесобытие произошлов исследовательскомцентре фирмыXerox PARC (Palo - Alto Research Center) в Пало-Альто,в Калифорнии.Уже на первыхперсоналкахXerox двадцать летназад применялсяграфическийинтерфейс,очень похожийна современнуюграфическуюсреду Windows[6].
С тех порпрошло немаловремени, и сейчасдиапазонконструктивныхрешений персональныхкомпьютеровочень широк.Но несмотряна конструктивныевнешние различия(от напольныхбашен до карманныхмоделей), всеперсоналкиочень похожидруг на друга.Другими словами,если «анатомия»компьютеровразлична, тоих «физиология»практическиидентична.
Современныйперсональныйкомпьютервключает следующиеустройства[1]:
системныйблок, выполняющийуправлениекомпьютером,вычисления;
клавиатуру,позволяющуювводить символыв компьютер;
монитор(дисплей) дляизображениятекстовой играфическойинформации;
накопители(дисководы) нагибких магнитныхдисках (дискетах),используемыедля чтения изаписи информации(для транспортировки);
накопительна жесткоммагнитномдиске (винчестер),предназначенныйдля записи ичтения информации(стационарный);
К системномублоку компьютераIBM PC можно подключатьразличныеустройстваввода-выводаинформации,расширяя темсамым егофункциональныевозможности.Многие устройстваподсоединяютсячерез специальныегнезда (разъемы),находящиесяобычно на заднейпанели системногоблока компьютера.Кроме монитораи клавиатуры,такими устройствамиявляются:
принтер - длявывода на печатьтекстовой играфическойинформации;
мышь - устройство,облегчающееввод информациив компьютер;
джойстик- манипуляторв виде укрепленнойна шарниреручки с кнопкой,употребляетсяв основном длякомпьютерныхигр;
плоттер -подключаетсяк компьютерудля выводарисунков идругой графическойинформациина бумагу;
графопостроитель- подключаетсядля выводачертежей набумагу;
сканер - устройстводля считыванияграфическойи текстовойинформациив компьютер.Сканеры могутраспознаватьшрифты букв,что дает возможностьбыстро вводитьнапечатанный(а иногда ирукописный)текст в компьютер;
стример -устройстводля быстрогосохранениявсей информации,находящейсяна жесткомдиске. Стримерзаписываетинформациюна кассеты смагнитнойлентой. Обыкновеннаяемкость стримера60 Мбайт;
CDпривод- устройствадля храненияинформациибольших объемов;
сетевойадаптер - даетвозможностьподключатькомпьютер влокальнуюсеть. При этомпользовательможет получатьдоступ к данным,находящимсяв других компьютерах.
1.1.2. Оперативнаяпамять
Объем доступнойоперативнойпамяти - одиниз важнейшихпараметровлюбого компьютера.Оперативнаяпамять илиоперативноезапоминающееустройство(ОЗУ или RAM) представляетсобой совокупностьмикросхем насистемнойплате, способныхнакапливатьи временнохранить программыи обрабатываемыеданные. Этаинформацияпо мере надобностиможет быстросчитыватьсяиз оперативнойпамяти процессороми записыватьсятуда вновь. Приотключениипитания содержимоеоперативнойпамяти полностьюстирается иутрачивается.Поэтому послевключениякомпьютерапрограммы иданные всякийраз необходимозаново загружатьв оперативнуюпамять из источниковдолговременногохранения информации.Для долговременногохранения информациичаще всегоприменяютсямагнитные иоптическиедиски или иныенакопителицифровой информации[2].
В современныхкомпьютерахприменяетсяглавным образомдинамическаяоперативнаяпамять или DRAM(Dynamic Random Access Memory). Она строитсяна микросхемах,требующих воизбежаниепотерь периодическогообновленияинформации.Этот процессполучил название«регенерацияпамяти». Онреализуетсяспециальнымконтроллером,установленнымна материнскойплате. На периодическуюрегенерациюданных в микросхемахдинамическойоперативнойпамяти расходуетсянекотороевремя. Поэтомусбои в памятинередко оказываютсяодной из распространенныхпроблем в работенедорогихперсональныхкомпьютеров«желтой» или«черной» сборки,даже если в нихиспользуютсясовершенноисправныемикросхемыдинамическойоперативнойпамяти.
Объем любойкомпьютернойпамяти, в томчисле и оперативнойпамяти, измеряетсяв килобайтахи мегабайтах.Наименьшейединицей измеренияинформационнойемкости и наименьшейединицей деленияпамяти компьютераявляется байт.Собственнобайт - это, в своюочередь, совокупностьвосьми мельчайшихединиц информации,которые называютбитами. Разницамежду простейшимистационарнымидвоичнымисостояниями,например,«включено»/«выключено»или между 0 и 1составляетвсего один бит.Байтовая (или8 - битовая) структураизмерениявыбрана из - задвоичной организациивычислительнойтехники. Дляпередачи илисохраненияодного любогосимвола - буквы,цифры или знака- требуетсяминимум одинбайт.
1 килобайтравен 1024 байтам,1 мегабайт - 1024килобайтам,1 гигабайт - 1024мегабайтам.
Самые первыеIBM PC имели оперативнуюпамять всеголишь 16 Кбайт.Последующиемодели персоналоктипа IBM PC и PC/XT располагалиобъемом оперативнойпамяти до 640 Кбайт- именно таковмаксимальныйобъем памяти,которым способнауправлятьоперационнаясистема MS-DOS.А для увеличенияобъема памятииспользовалисьспециальныеплаты расширения,позволявшиедополнительноувеличитьобъем памятидо 16 - 64 Мбайт[2].
Оперативнаяпамять компьютераIBM PC с процессоромIntel - 8088 или Intel - 8086 (например,IBM PC XT) может иметьразмер не более1 Мбайта, посколькуэти микропроцессорымогут обращатьсяне чем к 1 Мбайтупамяти. Этапамять состоитиз двух частей.Первые 640 Кбайтпамяти могутиспользоватьсяприкладнымипрограммамии операционнойсистемой. Остальныеадреса памяти(«верхняя память»)зарезервированыдля служебныхцелей:
для хранениячасти операционнойсистемы DOS, котораяобеспечиваеттестированиекомпьютера,начальнуюзагрузкуоперационнойсистемы, а такжевыполнениеосновныхнизкоуровневыхуслуг ввода- вывода;
для передачиизображенияна экран;
для храненияразличныхрасширенийоперационнойсистемы, которыепоставляютсявместе с дополнительнымиустройствамикомпьютера.
Как правило,тогда говорятоб объемеоперативнойпамяти компьютера,то имеют в видуименно первуюее часть, котораяможет использоватьсяприкладнымипрограммамии операционнойсистемой.
Барьер 640 Кбайт.Для многихпрограмм 640 Кбайтмало (к томуже из этих 640 Кбайтдо 100 Кбайт могутзанимать DOS иразличныесистемныепрограммы -драйверы устройстви резидентныепрограммы).Поэтому былиразработанырасширенная(extended) и дополнительная(expanded) памяти.
В качествекомпонентовпамяти в современныхкомпьютерахиспользуютсяглавным образоммодули памятис одноряднымрасположениемвыводов, которыеназываютсяSIMM. Эти модуливыпускаютсяс 30 и с 72 контактамиемкостью 256 Кбайт,1 Мбайт, 4 Мбайт,16 Мбайт или 32Мбайта.
1.1.3.Дисковая операционнаясистема (DOS)
Дисковаяоперационнаясистема - этопрограмма,которая загружаетсяпри включениикомпьютера.Она производитдиалог с пользователем,посредствомкоманд (каждаякоманда означаетдействие, котороеDOS должна выполнить)осуществляетуправлениекомпьютером,его ресурсами(оперативнойпамятью, местомна дисках и т.д.), выводитинформациюна видеомонитор,запускаетдругие (прикладные)программы навыполнение.Операционнаясистема обеспечиваетпользователюи прикладнымпрограммамудобный способобщения (интерфейс)с устройствамикомпьютера.Она выполняеттакже различныевспомогательныедействия, напримеркопированиеили печатьфайлов (файл-- это поименованныйнабор информациина диске илидругом машинномносителе). Всефункции пообслуживаниютаблиц размещенияфайлов, поискуинформациив них, выделениюместа для файловна дискетахвыполняютсяоперационнойсистемой.
ГлавнымдостоинствомDOS является ееспособностьуправлятьустройствамипамяти на магнитныхдисках (именнопоэтому онаназвана - дисковаяоперационнаясистема) [7].
Операционнаясистема осуществляетзагрузку воперативнуюпамять всехпрограмм, передаетим управлениев начале ихработы, выполняетразличныедействия позапросу выполняемыхпрограмм иосвобождаетзанимаемуюпрограммамиоперативнуюпамять при ихзавершении.
СистемапрограммированияТурбо Паскаль(TurboPascal), разработаннаяамериканскойкорпорациейБорланд (Borland),остается однойиз самых популярныхсистем программированияв мире. Этомуспособствуют,с одной стороны,простота, лежащаяв основе языкапрограммированияПаскаль, а сдругой - труди талант сотрудниковкорпорацииБорланд воглаве с идеологоми создателемТурбо ПаскаляАндерсом Хейлсбергом.[3]
Придуманныйшвейцарскимученым НикласомВиртом каксредство дляобучения студентовпрограммированию,язык ПаскальстараниямиА. Хейлсбергапревратилсяв мощную современнуюпрофессиональнуюсистему программирования,которой поплечу любыезадачи - от созданияпростых программ,до разработкисложнейшихреляционныхсистем управлениябазами данных.[4]
Турбо Паскаль- это строготипизированныйязык. Развитаясистема типовпозволяет легкоразрабатыватьадекватныепредставлениядля структурданных любойрешаемой задачи.В то же времясуществующиев Турбо Паскалесредствапреобразованиятипов даютвозможностьгибко манипулироватьразличнымиданными.
Основныеоператоры языкаявляются хорошейиллюстрациейбазовых управляющихконструкцийструктурногопрограммирования.Их использованиепозволяетзаписыватьсложные алгоритмыобработкиданных в компактнойформе. Гармоничноевключение вструктуру языкасредствобъектно-ориентированногопрограммированияделает переходот традиционныхтехнологийпрограммированияк объектно-ориентированномудля тех, ктопрограммируетна Турбо Паскале,достаточнобезболезненным.
СистемапрограммированияТурбо Паскальподдерживаетмодульныйпринцип программирования,который лежитв основе всехсовременныхтехнологийразработокпрограмм. Программа,написаннаяна Турбо Паскале,обычно разбиваетсяна модули, ате, в свою очередь,состоят изподпрограмм.[4]
Целью задачиявляется разработкапрограммногоинтерфейса(ПИ), которыйдолжен связыватьперсональныйкомпьютер илабораторныймакет «ПрограмматорПЗУ».
ПИ долженобеспечиватьподачу входныхвоздействийна все контактыИМС (шину адреса,шину данных,управляющиесигналы), осуществлятьсчитываниеи запись данных,используястандартныйпорт ввода-выводаLPT (параллельный).
Требованияк интерфейсу:ПИ долженобеспечиватьформированиеи подачу адреса,содержащегошесть информационныхи четыре управляющихбита данныхна соответствующиеконтактыпрограммируемойПЗУ, обеспечитьстробированиечтения/записиинформации.ПИ должен обеспечитьудобный выводтекстовойинформациина экран дляупрощенияработы пользователяс программой.
Структурапрограммногоинтерфейсабыла построенана основеиерархическойсистемы экранногоменю.
Эта системапозволяетобеспечитьдля пользователяудобный переходи взаимодействиеразличныхуровней иерархииданного алгоритмаструктуры меню.
При разработкеалгоритмапрограммногообеспечениябыли использованыследующиепрограммныемодули:
модуль главногоменю;
модуль настройкипрограммы;
модуль чтенияПЗУ;
модуль записиПЗУ;
модуль просмотранастроеннойпрограммы.
Модуль главногоменю обеспечиваетотображениена экране всехпунктов меню,и, соответственно,осуществляетпередачу управленияпрограммы поэтим пунктамс предварительнымсохранениеминформационныхпеременныхи массивов.
Модуль настройкипрограммыосуществляетопределениепользователемвсех входныхи выходныхпараметров,которые необходимыдля дальнейшейработы модулейчтения и записиПЗУ, а такжетестированияпрограмматора.
Модули чтенияи записи ПЗУ,обеспечиваетсвязь программногоинтерфейсас аппаратнойчастью лабораторногомакета, и осуществляетосновную связьпо работе сПЗУ.
Модуль просмотранастроеннойпрограммыосуществляетвыдачу на экрантекста настроеннойуниверсальнойпрограммы.
Управляющаяпрограммапостроена врежиме менюдля обеспечениянаибольшейпростоты ееиспользования.
Программабыла реализованана экране сразрешающейспособностьюв текстовомрежиме 80x60.Для упрощенияпрограммногоалгоритма былиразработаныпроцедуры,которые позволиливыводить меню,управлятькурсором, работатьс файловойсистемой DOS.
ПроцедураWaitRt- ждетвертикальногообратного ходалуча
ПроцедураColor- установкацвета
Таблица 2.1
Переменныеиспользуемыев процедуреColor
Переменная | Назначение |
C1 | Цветсимвола |
С2 | Цветэкрана |
ПроцедураLoc- позициякурсора наэкране
Таблица 2.2
Переменныеиспользуемыев процедуреLoc
Переменная | Назначение |
X | Позициякурсора по X |
С2 | Позициякурсора по Y |
2.2.4.ПроцедураWchar- печатьсимвола
2.2.5. ПроцедураShade-созданиетени для окна.
2.2.6 ПроцедураWrt- выводтекста на экран.
2.2.7. ПроцедураMap- выводимсозданныйвиртуальнойэран на дисплей.
2.2.8. ПроцедураCls- очисткаэкрана.
2.2.9. ПроцедураScanKey- выдаетASCIIкод нажатойклавиши.
2.2.10. ПроцедураSkipTime- пропускаетвремя (таймерпроцессора).
2.2.11. ПроцедураMoveMan- анимациячеловека истрелки.
2.2.12. ПроцедураMakeMan- созданиечеловека.
2.2.13. ПроцедураLoadFont- загрузкамоего шрифта.
2.2.14. ПроцедураWaitKey- ожиданиенажатия любойклавиши.
ПроцедураWindow- созданиеокон.
Таблица 2.3
Переменныеиспользуемыев процедуреWindow
Переменная | Назначение |
XUL | Позициялевого верхнегоугла поX |
YUL | Позициялевого верхнегоугла поY |
XDR | Позицияправого нижнегоугла поX |
XDR | Позицияправого нижнегоугла поY |
ПроцедураMorph- созданиеэффекта “Морфий”,плавное преоразованиеодного окнав другое.
Таблица 2.4
Переменныеиспользуемыев процедуреMorph
Переменная | Назначение |
1 | 2 |
XF1 | Позициялевого верхнегоугла поX исходногоокна |
YF1 | Позициялевого верхнегоугла поY исходногоокна |
XF2 | Позицияправого нижнегоугла поX исходногоокна |
YF2 | Позицияправого нижнегоугла поY исходногоокна |
XT1 | Позициялевого верхнегоугла поX получаемогоокна |
Продолжениетаблицы 2.4
1 | 2 |
YT1 | Позициялевого верхнегоугла поY получаемогоокна |
XT2 | Позицияправого нижнегоугла поX получаемогоокна |
YT2 | Позицияправого нижнегоугла поY получаемогоокна |
ПроцедураMorphL- созданиеэффекта “Морфий”с последнимикоординатами.
Таблица 2.5
Переменныеиспользуемыев процедуреMorphL
Переменная | Назначение |
XF1 | Последняяпозиция левоговерхнего угла поX |
YF1 | Последняяпозиция левоговерхнего угла поY |
XF2 | Последняяпозиция правогонижнего угла поX |
YF2 | Последняяпозиция правогонижнего угла поY |
2.2.18. ПроцедураWindowL- созданиеокна с последнимикоординатами.
ПроцедураMenu- работас меню, выборпункта менюи перемещениекурсора.
Таблица 2.6
Переменныеиспользуемыев процедуреMenu
Переменная | Назначение |
X1 | Координатыпо Xпервойстрочки меню |
Y1 | Координатыпо Yпервойстрочки меню |
STEPY | Шагпунктов меню |
ALL | Количествопунктов в меню |
COL | Цветпозиций в меню |
S1...S5 | Названиепунктов меню |
2.2.20.ПроцедураHexL2Str- представлениесимвола в ввидешестнадцатиричногокода.
2.2.21. ПроцедураHexB2Str- представлениесимвола в ввидевосьмеричногокода.
2.2.22. ПроцедураMemEd- редактортекста.
2.2.23. ПроцедураFfile- работас файлами, запись,создание ичтение.
2.2.24. ПроцедураReadROM- работас программатором,чтение и записьданных ПЗУ,тестировнаиеустройства.
Программныйинтерфейс былразработанс учетом всехего эксплуатационныххарактеристик.Он должен отвечатьследующимтребованиям:
полнота икраткостьотображаемойинформации;
удобноерасположениеинформациина экране;
оперативностьработы.
Интерфейспрограммногообеспечениябыл построенпо иерархическойструктуре.
Вся программапостроена наоснове типизированныхменю, которыепозволят легкои интуитивноработать, и непотребуютдополнительноговремени отучащихся наизучение интерфейсапрограммы. Фон,окна меню, итекст отвечаютвсем требованиямпредъявляемымк цветовомуоформлению;цветовая палитраподобрана так,чтобы глазаучащихся какможно меньшеуставали приработе с программатором.Также был разработанновый шрифт,что позволилообеспечитькрупные символыбукв, и русифицированныйпрограммныйинтерфейс.
Кадровыеокна основногоменю и все подпунктыменю на каждомуровне иерархиивыполнены ввиде окон ссоответствиемкаждого окнаего информационномуназначению.
Межоконныйпереход осуществляетсявыбором соответствующегопункта перемещением по экрану маркера,в виде стрелки,позиция которогоуказывает навыбранный пунктменю.Обратныйпереход виерархическомменю осуществлятьсявыбором последнегопункта меню- «НАЗАД», илинажатиемфункциональнойклавиши «ESC».
Работа спунктом меню«Работа с ПЗУ»возможна толькопосле выборатипа ПЗУ в пунктеменю «ВыборПЗУ», это связаннос особенностьюработы аппаратнойчасти лабораторногомакета «ПрограмматорПЗУ».
При отладкепрограммногоинтерфейсалабораторногомакета былиспользованпошаговый режимпяти основныхпрограммныхмодуля: модульменю, модульчтения ПЗУ,модуль записиПЗУ, модультестированияпрограмматора,модуль файловыхопераций.
В процессеотладки былииспользованапромежуточнаяпечать дляопределениянекоторыхпромежуточныхвычисленийи кода вводимыхс клавиатурысимволов иклавиш.
Была произведенаотладка программына выявлениеорфографических,синтаксических,логическихи графическихошибок в экранныхчастях программы.
Осуществленаотладка программногоинтерфейсасовместно сего аппаратнойчастью. Быливнесены некоторыеизменения впрограмму,связанные собеспечениемсинхронизацииработы программногоинтерфейсалабораторногомакета с егоаппаратнойчастью.
При эксплуатациилабораторногомакета “ПрограматорПЗУ” по проведениюлабораторныхработ необходимо:
Подсоединитьинтерфесныйпродов к программаторуи параллельномупорту персональногокомпьютера(оба должныбыть обесточены)
Включитьпитание копьютера
Включитьпитание налабораторноммакете
Загрузитьна компьютерепрограммныйинтерфейс
ВставитьмикросхемуПЗУ в слот налабораторноммакете
Ознакомитьсяс программой
Выбрать впрограмме типмикросхемыПЗУ, вставленнуюв слот лабораторногомакета
Провеститестированиеработоспособностипрограмматора
Выполнитьзадание поработе с лабораторныммакетом
Выйти изпрограммы
Выключитьлабораторныймакет
Выключитьперсональныйкомпьютер
Снять микросхемуПЗУ со слоталабораторногомакета
Для ознакомленияс устройствоми работойпрограмматораПЗУ пользователюпредоставленадокументация.
В процесседипломногопроектированиябыли полученыследующиерезультаты:
Был разработанпрограммныйинтерфейслабораторногомакета «ПрограмматорПЗУ», которыйобеспечиваетсвязь аппаратногоинтерфейсалабораторногомакета с последовательнымпортом (LPT)персональногокомпьютераIBMPC, позволяетсчитывать изаписыватьинформациюна микросхемыПЗУ.
Также программныйинтерфейссоздает удобныйрежим общенияпользователяс программойпо принципуэкранных меню.
Вся программареализованана персональномкомпьютереIBMPC 486 с мониторомразрешающейспособностьюв текстовомрежиме 80x60,при палитры16цветов.
В ходу отладкипрограммногоинтерфейсаэкспериментнымпутем былиустановленыминимальныетребованияк персональномукомпьютеру:
IBMсовместимыперсональныйкомпьютер;
процессор286;
цветнойдисплей;
видеоадаптерEGA;
операционнаяоболочка DOS3.0 или старше;
объем оперативнойпамяти 416 Kb;
свободноепространствона жесткомдиске из расчета:программа(20Kb)+ 64Kb*кол.прошивок ПЗУ.
Техническаяхарактеристикапрограммы:
Объемпрограммы нажестком диске | 20Kb |
Занимаемаяпамять во времяисполнения | 17Kb |
Скоростьчтения микросхемыПЗУ | 1Kb/сек. |
Скоростьзаписи прошивкив ПЗУ | 0.5Kb/сек. |
Тестированиепрограмматора | 13сек |
3.1.1 Статья I.Материальныересурсы
Статья Iвключаетстоимость всехвидов сырьяи материалов,расходуемыхна изготовлениепродукции, атакже транспортно-заготовительныерасходы.
Расчет сырьяи материаловприведен втаблице 3.1.
Таблица3.1 |
Расчет сырьяи материалов
Наименование | Ед.Измерения | Цена, руб. | Норма расходов, шт. | Стоимость, руб. | ||
Операционнаясистема MS-DOS6.20 | шт. | 342000.00 | 1 | 342000.00 | ||
ЯзыкпрограммированияBorlandTurbo Pascal v7.0 | шт. | 570000.00 | 1 | 570000.00 | ||
Итого: | 912000.00 | |||||
ТЗР= | (3.1) |
ТЗР=912000.00*1%/100%=9120.00 руб.
Ст.I= | (3.2) |
Ст.I=912000.00+9120.00=921120.00руб.
3.1.2. Статья II.Оплататруда
Статья IIвключаетзаработнуюплату основныхпроизводственныхрабочих, в которыенепосредственнона рабочихместах выполняютоперации, пообработкепродукции.
Определениенорм временина операцииприведено втаблице 3.2.
Таблица3.2 |
Нормы времени
Должность | Стоимость1 часа | Кол-вочасов | Оплата |
Программист | 15000.00руб. | 60 | 900000.00руб. |
Отладчик | 5000.00руб. | 15 | 75000.00руб. |
Итого: | 975000.00руб. |
Ст.2=975000.00 руб.
3.1.3 Статья III.Отчисленияво внебюджетныефонды
Статья IIIвключаетв себя отчисленияв пенсионныйфонд (28%), фондзанятости (1.5%), медицинскоестрахование(3.6%), социальноестрахование(5.4%), в фондобразования(1%) и транспортныйналог(1 %).
Всего 40,5% от начисленнойзаработнойплаты.
Ст.3= | (3.3) |
Ст.3=
=394875.00 руб.3.1.4.СтатьяIV. Расходына содержаниеи обслуживаниеоборудования
Статья IVвключаетв себя расходына зарплатувспомогательнымрабочим, наладчикам,механикам,стоимостьзапасных частей,вспомогательныхсредств иамортизацию.
НачальнаястоимостьперсональногокомпьютераIBMPC/AT 386 - 2425920.00руб., нормаамортизации- 4% (КОМ), расходысоставили97036.80руб.
Во времяразработкии отладкипрограммногообеспечениябыло потрачена89 кВт (ЭНЕР)электроэнергии:1 кВт - 512.00 руб., 89 кВт- 45568.00 руб.
Ст.4=КОМ+ЭНЕР | (3.4) |
Ст.4= 97036.80+45568.00=142604.80руб.
3.1.5. Полнаясебестоимость
Пол.Себ.= | (3.5) |
Пол.Себ.=921120.00+975000.00+394875.00+142604.80=2433559.80руб.
Эффективностьвнедренияпрограммызаключаетсяв том, что лабораторныймакет, для которогонаписана программа,позволяетнагляднопродемонстрироватьчтение и записьПЗУ в производственныхусловиях.
Лабораторныймакет и программноеобеспечениеобслуживающиемакет, позволитулучшить качествообучающегопроцесса попредмету «Импульснаятехника», потому,что позволитучащимсянепосредственнона практикеизучить методчтения и записимикросхем.
Программадля лабораторногомакета простаи интуитивнапонятна в обращении;Сам макет, такжепрост, что позволяетсразу преступитьк выполнениюлабораторнойработы, необходимовсего лишьтолько подключитьсямакет в сеть,подсоединитьразъем к параллельномупорту персональногокомпьютера(порт LPT),вставить прошиваемуюмикросхемуПЗУ в панельи запуститьпрограммноеобеспечениена персональномкомпьютере.Эта простотав обращениипозволит незатрачиватьмного временина обучениеучащихся пользованиюмакетом.
Лабораторныймакет имеетхорошие показателиповторяемости,не требуетсложного оборудованиядля отладки,что позволяетлегко внедритьмакет в производствоили собиратьего непосредственнов радиомастерскихучебных заведенийили в домашнихусловиях.
К достоинствумакета относятсяи
низкаясебестоимость,так как использованыширокодоступныедетали и материалы;
малый токпотребления;
малые габаритныеразмеры;
интуитивнопонятный программныйинтерфейс.
Все вышеперечисленныефакторы позволятснизить розничнуюцену макетаи программногообеспечениядля него, а такжеуменьшитьзатраты наэксплуатацию,что в условияхрыночной экономикипозволяетповсеместновнедрить лабораторныймакет по программированиюПЗУ в учебныйпроцесс. Самкак таковойлабораторныйстенд безпрограммногообеспеченияне имеет смысларассматривать,так как безпрограммы, этопросто грудаметалла, также как и программабез металла,это простобессмысленныйнабор команд.Поэтому дальшепод словоммакет будетрассматриватьсовокупностьлабораторногостенда и программногообеспечениядля него.
Так как разработкамакета носитсоциально-направленныйхарактер (дляпроведениялабораторныхработ в учебныхзаведенияхпо курсу «Импульснаятехника») и встоимостномвыражении неоценивается.
Техническиеи периферийныесредства ПЭВМдолжны отвечатьтребованиямбезопасностипри их эксплуатации,монтаже, ремонтеи обслуживанииотдельныхкомплексови систем в целом.УстройствауправленияПЭВМ, устройстваввода-выводаи подготовкиданных в процессеэксплуатациидолжны бытьпожаробезопаснымии соответствоватьтребованиямбезопасностив течение всегосрока службы.
Органы управлениятехническимисредствамиПЭВМ, устройстваввода-вывода,средства диагностикии контроляработы должнывключать накоплениестатическогоэлектричествав опасныхколичествах.Отдельные блокиЭВМ допускаетсяэксплуатироватьс устройствамиснятия электрическогозаряда.
Для предотвращенияобразованияи защиты студентовот статическогоэлектричествав помещенияхучебно-вычислительногоцентра (УВЦ)необходимоиспользоватьнейтрализаторыи увлажнителивоздуха, а полыдолжны иметьантистатическоепокрытие. Допустимыйуровень напряженностиэлектрическогополя в помещенияхУВЦ не долженпревышать 20кВ/м.
Конструктивноотдельныемодули и блокитехническихсредств ПЭВМдолжны иметьместное освещениедля обслуживания,диагностикии контроляработы, приэтом должнаисключатьсявозможностьсоприкосновениес токоведущимичастямиэлектрооборудования.
Устройствауправлениятехническимии периферийнымисредствамиПЭВМ, обеспечивающиевзаимодействиесоставныхчастей ПЭВМ,должны бытьвыполнены так,чтобы не моглавозникнутьопасность впроцессе совместногодействия отдельныхсистем и комплексав целом.
Видео терминальноеустройствоотображенияинформациидолжно отвечатьосновным требованиямбезопасности:яркость экранадисплея неменее 100 кд/м2,высота символовна экране неменее 3.8 мм, расстояниеот глаз до экранане менее 400 мм,размер экранапо диагоналине менее 310 мм,количествоточек на однойстроке не менее640, минимальныйразмер светящейсяточки не более0.4 мм, для монохромногодисплея и 0.6 ммдля цветного.
Оптимальныеи допустимыеусловия микроклиматав лабораторияхучебноговычислительногоцентра (УВЦ)устанавливаютсяс учетом избыткатепла, выделяемогоот техническихи периферийныхустройствПЭВМ, тяжестивыполняемойработы, а такжевремени года.Микроклиматопределяетсядействующимина организмпрограммистовсочетаниямитемпературы,влажности искорости движениявоздуха.
В лабораторияхУВЦ необходимоподдерживатьоптимальныеусловия микроклиматас помощьювентиляционныхи отопительныхсистем, выполненныхв соответствиис СНИП II-33-75.Температуравоздуха в холодныйи теплы периодгода должнабыть в пределах+20...25 оС, относительнаявлажность60...40 %при скоростидвижения воздухане более 0.2 м/с,подача наружноговоздуха в помещениелабораторииобъемом до 20м3 наодного студентане должна бытьменее 30 м3/ч.
Воздух впомещенияхработы программистови оператороввычислительныхсистем долженбыть очищенот вредныхвеществ, пылии микроорганизмов.Патогеннаяфлора должнабыть исключена.В помещенияхлабораторийУВЦ общее количествоколоний на 1м3 недолжна превышать1000. В помещенияхУВЦ воздухрабочей зоныдолжен соответствоватьустановленнымтребованиямГОСТ 12.1.005-76 с незначительнымизбытком теплаот видеотерминалови устройствотображенияинформации.
При одновременномнахождениив помещенияхУВЦ техническихи периферийныхустройствПЭВМ, программистови оператороввычислительныхсистем, когдатемпературавнешней средывыше +25 оС,допустимаятемпературавоздуха в помещенияхне должна превышать+31...+33 оСсо значительнымизбытком теплаот ПЭВМ. Придлительномвоздействииповышеннойтемпературыпроисходитнарушениеводно-солевого,белкового ивитаминногообменов в организместудентов УВЦ.В результатенаступаетрасслаблениеорганизмаучащихся, снижениевнимания искорости восприятияс устройствотображенияинформации.
В лабораторноммакете присутствуетопасное дляжизни напряжение220 вольт 50 герц.Это напряжениепитает трансформаторныйблок. В остальныхблоках лабораторногомакета напряженияне превышают27 вольт, что неявляется опасным.В блоке стабилизатораи блоке нагрузкипроисходиттепловыделение.Температурачастей этихблоков не превышает50оС,что не представляетопасности длячеловека.
Корпус блокатрансформаторавыполнен издиэлектрическогоматериала.Шасси выполненоиз дюралюминия.Клемма заземленияшасси должнабыть выведенана корпус. Кэтой клеммедолжно бытьподключенозаземление.
Шнур питанияи вилка должнысоответствоватьТУ на них, и неиметь изломови нарушенийв изоляции.
Сетевойтумблер типаПТ2-2 (напряжение600 вольт, ток до2 ампер) отвечаеттребованиямэлектробезопасности.
Должны бытьиспользованысетевые предохранителив стандартныхдержателях.
Напряженияи температурыв остальныхблоках лабораторногомакета непредставляютопасности ине требуютособых мерпредосторожности.
Так как программаторвзаимодействуетпри работе сПЭВМ, а ПЭВМявляетсяэлектроустановкой,то к ней предъявляютсятребованиясоблюдениявсех параметровэлектробезопасностисогласно ТУна ПЭВМ. Вреднымифакторами длячеловека являются:
мягкоерентгеновскоеизлучениеэкрана;
мерцаниеэкрана с частотойкадровой развертки;
электростатическоеполе вокругэкрана;
ультрафиолетовоеизлучениеэкрана.
СПИСОК ЛИТЕРАТУРЫ
Скотт Мюллер«Модернизацияи ремонт персональныхкомпьютеров»,Москва, изд.«ВосточнаяКнижная Компания»,1996г., ISBN0-7897-0321-1
Гук «Аппаратныесредства IBMPC», Санкт-Петербург,изд. «ПитерПресс», 1996г., ISBN5-88782-036-5
Фаронов В.В.«Турбо Паскаль7.0. Начальныйкурс. Учебноепособие», Москва,изд. «Нолидж»,1997г., ISBN5-89251-012-3
М.В.Сергиевский,А.В. Шалашов«Турбо Паскаль7.0: Язык, средапрограммирования»,Москва, изд.«Машиностроение»,1994г., ISBN5-217-02468-2
Абель П. «ЯзыкАссемблер дляIBMPC и программирования»,Москва, изд.«Высшая школа»,1992г., ISBN5-101-123447-1
Гейтс Б. «Дорогав будующее»,Москва, изд.«Русская редакция»,1996г., ISBN5-7502-0019-1
Информацияс сервераwww.referats.aha.ru,изд. INTERNET
CD-библиотека«Все для инженера»,изд. InfoLink,1997г.
ПРИЛОЖЕНИЕ1
ПРОГРАММНЫЙИНТЕРФЕЙС
Uses DOS;
Type TNT = Array[0..65534]Of Byte;
Filearray = Array[1..5000]Of String[12];
Const
U0 = Char(200);
U1 = Char(201);
U2 = Char(202);
U3 = Char(199);
U4 = Char(198);
U5 = Char(203);
U6 = Char(193);
U7 = Char(192);
Up = Char(194)+Char(195);
Uf = Char(196)+Char(185);
Us = Char(197)+Char(186);
Speed = 3;
Hex : Array[0..15]Of Char =('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
Var
Buffer : ^TNT;
Filx : ^filearray;
Dirx : ^filearray;
Fake : ^TNT;
ScanCode: Byte;
Key : Char;
Screen : Array[0..50*90] of byte;
Segscr : Word;
Ofsscr : Word;
px,py : Byte;
Clr : Byte;
MenuP : Byte;
F : File;
RomSize : Longint;
Curd : String;
RomName : String;
lxul,lyul,lxdr,lydr : byte;
Procedure WaitRt; assembler;
Asm
mov dx,$3da
@wa1:
in al,dx
test al,8
je @wa1
@wa2:
in al,dx
test al,8
jne @wa2
End;
Procedure Color(c1,c2 : byte);
Begin
clr:=c1+16*c2;
End;
Procedure Loc(x,y: byte);
Begin
px:=x;
py:=y;
End;
Procedure WChar(c : char);
Begin
screen[py*160+px+px]:=byte(c);
screen[py*160+px+px+1]:=clr;
inc(px);
If px=80 Then
Begin px:=0; inc(py);
If py>25 Then py:=25;
End;
End;
Procedure Shade(x : byte);
Var
m : byte;
Begin
For m:=1 To x Do
Begin
Screen[py*160+px+px+1]:=screen[py*160+px+px+1]And $7;
inc(px);
If px=80 Then
Begin px:=0; inc(py);
If py>25 Then py:=25;
End;
End;
End;
Procedure Wrt(s : string);
Var
x: word;
Begin
For x:=1 To length(s) Do WChar(s[x]);
End;
Procedure WrtLn(s : string);
Var
x: word;
Begin
For x:=1 To length(s) Do WChar(s[x]);
px:=0;
inc(py);
If py>25 Then py:=25;
End;
Procedure Map;
Begin
Move(screen,mem[$b800:0],80*50);
End;
Procedure Cls;
Begin
FillChar(screen,80*50,0);
End;
Procedure ReadKey; assembler;
Asm
xor ax,ax
int 16h
End;
Function ScanKey : char;
Var
x : byte;
Begin
x:=255;
Asm
mov ah,01
int 16h
jz @nokey
mov x,al
mov ScanCode,ah
@nokey:
End;
If x255 Then ReadKey;
ScanKey:=char(x);
End;
Procedure SkipTime;
Var
h,m,s,c : word;
lh,lm,ls,lc : longint;
abstime1,abstime2: longint;
Begin
GetTime(h,m,s,c);
lh:=h; lm:=m; ls:=s; lc:=c;
abstime1:=lc+(ls*100)+(lm*60*100)+(lh*60*60*100);
Repeat
GetTime(h,m,s,c);
lh:=h; lm:=m; ls:=s; lc:=c;
abstime2:=lc+(ls*100)+(lm*60*100)+(lh*60*60*100);
Until (abstime2abstime1);
End;
Procedure MoveMan;
Var
addr : word;
a : byte;
x : word;
Begin
addr:=0;
For x:=0 To 80*25-1 Do
Begin
a:=screen[addr];
If (a>207)And(a
inc(a);
If a=217 Then a:=208;
If a=205 Then a:=204 Else If a=204 Thena:=205;
screen[addr]:=a;
inc(addr,2);
End;
End;
Procedure MakeMans;
Var x: word;
Begin
For x:=0 To 80*25-1 Do
Begin
screen[x+x] :=177;
screen[x+x+1]:=16+7;
End;
End;
Procedure LoadFont;
Var
f: file;
Begin
Assign(f,curd+'axefont.fnt');
Reset(f,1);
Blockread(f,screen,50*80);
Close(f);
Asm
push bp
mov ax,segscr
mov es,ax
mov bp,ofsscr
mov bx,1000h
xor dx,dx
mov cx,256
mov ax,1100h
int 10h
pop bp
mov ah,1
mov cx,1000h
int 10h
End;
Cls;
End;
Procedure WaitKey;
Begin
WaitRt;
Map;
Repeat
Key:=ScanKey;
If Key=char(255) Then
Begin
Map;
MoveMan;
SkipTime;
End;
Until Keychar(255);
End;
Procedure Window(xul,yul,xdr,ydr : byte; name : string);
Var
x,y : word;
Begin
Loc(xul,yul);
Wrt(up);
For x:=xul+2 To xdr Do Wrt('-');
For y:=yul+1 To ydr-1 Do
Begin
Loc(xul,y); Wrt(u0);
For x:=xul+1 To xdr-1 Do Wrt(' ');
Wrt(u1);
Shade(2);
End;
Loc(xul,y);
Wrt(u4);
For x:=xul+1 To xdr-1 Do Wrt(u7);
Wrt(u5);
Loc(xul+2,ydr);
Shade(xdr-xul+1);
x:=length(name) shr 1;
y:=(xdr-xul)shr 1+xul;
y:=y-x;
Loc(y+1,yul);
y:=clr;
x:=(clr and $F0)shr 4;
color(x,clr and $0F);
Wrt(name);
clr:=y;
lxul:=xul;
lyul:=yul;
lxdr:=xdr;
lydr:=ydr;
End;
Procedure Morph(xf1,yf1,xf2,yf2,xt1,yt1,xt2,yt2 : byte);
Var
x : word;
Begin
Window(xf1,yf1,xf2,yf2,'');
Repeat
MakeMans;
If xf1>xt1 Then dec(xf1,((xf1-xt1)Shr speed)+1);
If xf1 If yf1>yt1 Then dec(yf1,((yf1-yt1)Shrspeed)+1); If yf1 If xf2>xt2 Then dec(xf2,((xf2-xt2)Shrspeed)+1); If xf2 If yf2>yt2 Then dec(yf2,((yf2-yt2)Shrspeed)+1); If yf2 Window(xf1,yf1,xf2,yf2,''); Map; WaitRt; Until (xf1=xt1)And(xf2=xt2)And(yf1=yt1)And(yf2=yt2); End; Procedure MorphL(xt1,yt1,xt2,yt2 : byte); Var x : word; xf1,xf2,yf1,yf2 : byte; Begin xf1:=lxul; xf2:=lxdr; yf1:=lyul; yf2:=lydr; MorPh(xf1,yf1,xf2,yf2,xt1,yt1,xt2,yt2); End; Procedure WindowL(name : string); Var xf1,xf2,yf1,yf2 : byte; Begin xf1:=lxul; xf2:=lxdr; yf1:=lyul; yf2:=lydr; Window(xf1,yf1,xf2,yf2,name); End; Procedure Menu(x1,y1,stepy,all,col : byte;s1,s2,s3,s4,s5 : string;lenx : byte); Var x : byte; yt : byte; yp : byte; Begin yt:=y1; For x:=1 To all Do Begin Loc(x1,yt); Case x oF 1: Wrt(s1); 2: Wrt(s2); 3: Wrt(s3); 4: Wrt(s4); 5: Wrt(s5); End; yt:=yt+stepy; End; yp:=0; yt:=clr; clr:=col; Repeat Repeat {??} Loc(x1-2,y1+(stepy*yp)); Wrt(char(204)); WaitKey; Until(Key=chr(13))or(ScanCode=byte('H'))or(ScanCode=byte('P'))or(Key=chr(27)); Loc(x1-2,y1+(stepy*yp)); Wrt(' '); If Key=chr(27) Then yp:=all-1; If ScanCode=byte('P') Then If yp If ScanCode=byte('H') Then If yp>0 Thendec(yp); Until (Key=chr(13))or(Key=chr(27)); x:=x1-2; Repeat Loc(x,y1+(stepy*yp)); Wrt(' '+chr(205)); WaitRt; Map; inc(x,1); Until x>=x1+lenx; clr:=yt; MenuP:=yp; End; Procedure HexL2Str(l : longint; var s : string); Begin s:=hex[(l shr (4*7))and 15]; s:=s+hex[(l shr (4*6))and 15]; s:=s+hex[(l shr (4*5))and 15]; s:=s+hex[(l shr (4*4))and 15]; s:=s+hex[(l shr (4*3))and 15]; s:=s+hex[(l shr (4*2))and 15]; s:=s+hex[(l shr (4*1))and 15]; s:=s+hex[(l)and 15]; End; Procedure HexB2Str(l : byte; var s : string); Begin s:=hex[(l shr 4)and 15]; s:=s+hex[(l)and 15]; End; Procedure MemEd(name: string); Var x,y : word; l,l1,p,lpos : longint; s,st : string; stc : byte; size : longint; readsize : longint; bank : word; b1,b2 : byte; flag : boolean; i : searchrec; Label Repaint, TryAgain; Begin TryAgain: FindFirst(name,AnyFile,i); If i.Attr And ReadOnly = ReadOnly Then Begin stc:=clr; color(7,4); MorPhL(20,7,56,15); WindowL('File has ReadOnly Attribute!'); Menu(30,9,2,3,$4b,'Remove it','Reselectfile','Exit','xxx4','xxx5',6); If MenuP=1 Then Begin MenuP:=8; exit; End; If MenuP=2 Then Begin MenuP:=0; exit; End; clr:=stc; assign(f,name); SetFattr(f,(i.Attr xor ReadOnly)); MorPhL(0,0,77,24); Color(7,6); WindowL('Memory Editor'); goto TryAgain; End; Assign(f,name); reset(f,1); size:=FilesiZe(f); l1:=0; p:=0; lpos:=0; bank:=0; flag:=false; If size>35000 Then readsize:=35000 Elsereadsize:=size; blockread(f,buffer^,readsize); RePaint: If l1 Div 32767 bank Then Begin If flag Then Begin color(7,4); MorPhL(24,7,50,14); WindowL('Save Changed Data?'); Menu(36,9,3,2,$4b,'YES','NO','xxx3','xxx4','xxx5',6); If MenuP=0 Then Begin Seek(f,lpos); blockwrite(f,buffer^,readsize); End; MorPhL(0,0,77,24); Color(7,6); WindowL('Memory Editor'); End; lpos:=(l1 div 32767)*32767+(l1 div 32767); Seek(f,lpos); If size-l1>35000 Then readsize:=35000 Elsereadsize:=size-l1; blockread(f,buffer^,readsize); bank:=l1 div 32767; flag:=false; end; l:=l1 and 32767; Loc(2,1); Wrt('address 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII'); For x:=2 To 22 Do Begin Loc(2,x); HexL2Str(l+(l1 and (32767 xor $FFFFFFFF)),s); Wrt(s+': '); For y:=1 to 16 do Begin HexB2Str(buffer^[l],s); Wrt(s+' '); inc(l); End; For y:=16 Downto 1 Do Begin Wrt(char(buffer^[l-y])); End; End; l:=l1 and 32767; Repeat Repeat stc:=clr; color(6,7); HexB2Str(buffer^[l+p],s); Loc((((p) and 15)*3)+13,(p) shr 4+2); Wrt(s); Loc((((p) and 15))+61,(p) shr 4+2); Wrt(char(buffer^[l+p])); clr:=stc; WaitKey; Until(Key=chr(13))or(ScanCode=$49)or(ScanCode=$51)or(ScanCode=$48) or(ScanCode=$4D)or(ScanCode=$4B)or(ScanCode=$50)or(Key=chr(27)) or((Key>='0')and(Key='A')and(Upcase(Key) If(ScanCode=$48)or(ScanCode=$4d)or(ScanCode=$4b)or(ScanCode=$50) Then Begin HexB2Str(buffer^[l+p],s); Loc((((p) and 15)*3)+13,(p) shr 4+2); Wrt(s); Loc((((p) and 15))+61,(p) shr 4+2); Wrt(char(buffer^[l+p])); End; If((Key>='0')And(Key='A')And(Upcase(Key) Begin stc:=clr; Key:=upcase(Key); If (Key>='0')And(Key color(6,7); Loc((((p) and 15)*3)+13,(p) shr 4+2); Wrt(Key+'?'); Loc((((p) and 15))+61,(p) shr 4+2); Wrt('?'); Repeat WaitKey; Until((Key>='0')and(Key='A')and(Upcase(Key) Key:=upcase(Key); If (Key>='0')And(Key If((Key>='0')And(Key='A')And(Upcase(Key) Begin buffer^[l+p]:=b1*16+b2; flag:=true; end; clr:=stc; end; Case ScanCode of $50: if l1+p+16 $48: begin if (p>15)or(l10)then dec(p,16);if p $4D: if l1+p+1 $4B: begin if (p>0)or(l10)then dec(p); ifp $49: begin if (l1>319) then begin dec(l1,320) endelse l1:=0; goto RePaint; end; $51: begin inc(l1,320); if l1>size-336 thenl1:=size-336; goto RePaint; end; end; Until (key=chr(13))or(Key=chr(27)); If flag Then Begin color(7,4); MorPhL(24,7,50,14); WindowL('Save Changed Data?'); Menu(36,9,3,2,$4b,'YES','NO','','','',6); If MenuP=0 Then Begin Seek(f,lpos); blockwrite(f,buffer^,readsize); End; End; close(f); End; Function LowCase(s : string) : string; Var x : integer; Begin LowCase:=s; For x:=1 To length(s) Do Begin If (s[x]>='A')And(s[x] End; End; Procedure FFile(var s : string); Var i : searchrec; name : string; x,y,z: integer; curp : integer; curps: integer; maxp : integer; mask : string; zs : string; fz,dz: integer; f : file of byte; pos : longint; Label Repaint; Begin s:=''; RePaint: For y:=1 To 17 Do Begin Loc(23,3+y); Wrt(' '); End; z :=0; fz :=0; dz :=1; curp :=1; curps:=1; mask :='*.*'; FindFirst(mask,Directory,i); Repeat If (i.attr)And(Directory)=Directory Then Begin filx^[dz]:=i.name; If i.name'.' Then inc(dz); End Else Begin dirx^[fz+1]:=LowCase(i.name); inc(fz); End; FindNext(i); Until DOSERROR0; z:=dz+fz; x:=1; For y:=dz To z Do Begin filx^[y]:=dirx^[x]; inc(x); End; Repeat maxp:=curp+17; If maxp>(z-1) Then maxp:=(z-1); For y:=curp To maxp Do Begin Loc(23,3+y-curp); name:=filx^[curp+(y-curp)]; For x:=17 DownTo length(filx^[curp+(y-curp)])Do name:=name+' '; If curps=(y-curp+1) Then color(1,2) Elsecolor(7,1); Wrt(' '+name); End; Repeat WaitKey; Until(Key=chr(13))or(ScanCode=$48)or(ScanCode=$50)or(Key=chr(27))or(ScanCode=82); Case ScanCode Of $50: inc(curps); $48: dec(curps); 82: Begin MOrPhL(10,10,40,15); WindowL('Input File Name .ROM'); y :=1; zs:=' '; Loc(22,12); Wrt('-'); Repeat WaitKey; Loc(21+y,12); If (Keychr(13))And(Keychr(27)) Then If (Keychr(08)) Then Begin If y9 Then Begin zs[y]:=Key; Wrt(key+'-'); inc(y); End; End Else If y1 Then Begin dec(y); Loc(21+y,12); zs[y]:=' '; Wrt('- '); End; Until (Key=Chr(13))or(Key=chr(27)); MorPhL(20,8,50,12); Color(7,4); WindowL('!!!!!!!!!!!!'); Loc(30,10); Wrt('Жди давай!'+chr(208)); Map; Assign(f,zs+'.ROM'); Rewrite(f); y:=$FF; For pos:=1 To romsize Do Write(f,byte(y)); close(f); Key:=chr(255); ScanCode:=0; color(7,1); MorPhL(20,2,50,22); WindowL('Выберитефайл'); s:=''; Goto RePaint; End; End; If curps>(z-1) Then curps:=(z-1); If (curps>18) Then Begin curps:=18; If curp End; If (curps Begin curps:=1; If curp>1 Then dec(curp); End; Until (Key=chr(13))or(Key=chr(27)); Color(7,1); If Key=chr(13) Then Begin FindFirst(filx^[curp+curps-1],00,i); If DOSERROR0 Then Begin chdir(filx^[curp+curps-1]); Goto RePaint; End; s:=filx^[curp+curps-1]; End; End; Procedure ReadROM(addr : longint); Var x : word; y : byte; Begin x:=addr; port[$378]:=x and 65535; port[$379]:=x shr 16; y:=port[$380]; fake^[x and 65535]:=y; End; Var x : byte; s : string; l : LONGINT; y : longint; zs : string; rsz : longint; fi,fo : file; Label OpenF; Begin New(buffer); New(filx); New(dirx); New(fake); ofsscr:=ofs(screen); segscr:=seg(screen); LoadFont; MakeMans; GetDir(0,curd); romsize:=0; color(7,5); Window(1,1,26,12,'Главноеменю'); Repeat MorPhL(1,1,26,12); Color(7,5); WindowL('Main Menu'); Menu(4,3,2,4,$5b,'ВыборПЗУ','Работа сПЗУ','Опрограмме','Вы'+char(208)+'ход','',20); case MenuP of 0: Begin Repeat MorPhL(20,10,50,18); color(7,1); WindowL('Выбор типаПЗУ'); Menu(23,12,2,3,$1b,'УФ ПЗУ','ПЗУс плавкимиперемычками','Назад','','',26); case MenuP of 0: Begin MorPhL(10,10,29,18); color(7,5); WindowL('УФ ПЗУ'); Menu(13,12,2,3,$5b,'2176','573РФ','Назад','','',16); If MenuP2 Then Begin romsize:=8*1024; romname:=curd+'\amibio'; End; If MenuP2 Then MenuP:=2 Else MenuP:=0; End; 1: Begin MorPhL(40,8,70,16); Color(7,5); WindowL('ПЗУ с плавкимиперемычками'); Menu(43,10,2,3,$5b,'155РЕ3','556РТ6','Назад','','',16); If MenuP2 Then Begin romsize:=16*1024; romname:=curd+'\amibio1'; end; If MenuP2 Then MenuP:=2 Else MenuP:=0; end; end; Until MenuP=2; MenuP:=5; end; 1: Begin If romsize=0 Then Begin MorPhL(21,6,49,10); Color(7,4); WindowL('Варнинг!!!'); Loc (25,8); Wrt ('Пипл!!! ВыбериПЗУ!!!!'); WaitKey; End Else Repeat MorPhL(40,5,60,15); Color(7,1); WindowL('Работас ПЗУ'); Menu(44,7,2,4,$1b,'Чтение','Запись','Тестирование','Назад','Num5',12); Case MenuP Of 0: Begin MorPhl(22,7,50,11); color(7,1); WindowL('ЧтениеПЗУ'); Loc(24,9); Wrt('-------------------------'); For l:=0 To romsize Do Begin Loc(24+(l*24 div romsize),9); Wrt ('-'+chr(208)); Color (3,1); Map; ReadROM(l); End; Color(7,1); MorPhL(0,0,77,24); Color(7,6); WindowL('Просмотрпрошивки'); MemEd(romname); Color(7,4); MorPhL(24,7,60,14); WindowL('Сохранитьпрочитанныеданные?'); Menu(40,9,3,2,$4b,'YES','NO','','','',6); Case MenuP of 0: Begin MOrPhL(10,10,50,15); WindowL('Имя сохраняемогообраза .ROM'); y:=1; zs:=' '; Loc(26,12); Wrt('-'); Repeat WaitKey; Loc(25+y,12); If (Keychr(13))And(Keychr(27))Then If (Keychr(08)) Then Begin If y9 Then Begin zs[y]:=Key; Wrt(key+'-'); inc(y); End; End Else If y1 Then Begin dec(y); Loc(25+y,12); zs[y]:=' '; Wrt('- '); End; Until (Key=Chr(13))or(Key=chr(27)); If key=chr(13) Then Begin MorPhL(20,8,50,12); Color(7,4); WindowL('!!!!!!!!!!!!'); Loc(30,10); Wrt('Жди давай!'+chr(208)); Map; Assign(fo,zs+'.ROM'); Rewrite(fo,1); Assign(fi,romname); Reset(fi,1); rsz:=FileSize(fi); Repeat y:=rsz; If y>65535 Then y:=65535; BlockRead(fi,buffer^,y); BlockWrite(fo,buffer^,y); rsz:=rsz-y; Until rsz=0; Close(fi); Close(fo); End; End; End; MenuP:=5; End; 1: Begin Repeat MenuP:=1; MorPhL(20,2,50,22); color(7,1); WindowL('Выберитефайл'); FFile(s); If s'' Then Begin MorPhL(0,0,77,24); Color(7,6); WindowL('Редактировениепрошивки'); MemEd(s); Color(7,4); MorPhL(24,7,60,14); WindowL('ПрошитьПЗУ?'); Menu(40,9,3,2,$4b,'YES','NO','xxx3','xxx4','xxx5',6); If MenuP=0 Then Begin MorPhl(22,7,50,11); Color(7,1); WindowL('ПрошиваемПЗУ'); Loc(24,9); Wrt('-------------------------'); For l:=0 To romsize Do Begin Loc(24+(l*24 div romsize),9); Wrt ('-'+chr(208)); Color (3,1); Map; ReadROM(l); End; End; End; Until MenuP8; end; 2: Begin MorPhl(22,7,50,11); color(7,1); WindowL('Тестируемпрограмматор'); Loc(24,9); Wrt('-------------------------'); For l:=0 To 1000 Do Begin Loc(24+(l*24 div 1000),9); Wrt ('-'+chr(208)); Color (3,1); Map; End; Loc(23,9); Wrt(chr(209)+' Все впорядке, аднака '); waitkey; End; end; Until MenuP=3; MenuP:=5; end; 2: Begin MorPhL(9,2,70,23); color(7,0); WindowL('О программе'); Loc(10,10); For x:=1 To 60 Do Wrt(chr(210)); Loc(12,4); Wrt('Дипломныйпроект "Лабораторныймакет программатораПЗУ"'); Loc(11,6); Wrt('Это программкабыла написанав среде Borland Pascal v7.0'); Loc(13,8); Wrt('Программарасчита нароботу с 2 типамимикросхемПЗУ'); Loc(36,12); Wrt('Авторы:'); Loc(11,14); Wrt('Идея и текстпрограммы:'); Loc(25,15); Wrt('ДмитрийВ. Румянцев'); Loc(11,17); Wrt('Помощь внаписаниепрограммы:'); Loc(25,18); Wrt('Dead Emotion //HellraiseR Group'); Loc(11,20); Wrt('Тестированиепрограммы:'); Loc(25,21); Wrt('АлексекА. Иванов'); WaitKey; MenuP:=5; end; end until MenuP=3; MorPhL(13,7,13,7); asm mov ax,3 int 10h end; end. - РумянцевДмитрий Владимирович 49РА7-93 Июнь 1997 МОСКОВСКИЙКОЛЛЕДЖ ЭЛЕКТРОННОЙТЕХНИКИ ДИПЛОМНАЯРАБОТА “ПрограмматорПЗУ (программнаячасть)” Работу выполнилстудент: РумянцевД.В. Научныйруководитель:ГуськовБ.Г. Москва,1997