Рефераты

Программатор ПЗУ (программный интерфейс)

Программный интерфейс был разработан с учетом всех его

эксплуатационных характеристик. Он должен отвечать следующим требованиям:

полнота и краткость отображаемой информации;

удобное расположение информации на экране;

оперативность работы.

Интерфейс программного обеспечения был построен по иерархической

структуре.

[pic]

Рис. 2.1. Интерфейс программного обеспечения

Вся программа построена на основе типизированных меню, которые

позволят легко и интуитивно работать, и не потребуют дополнительного

времени от учащихся на изучение интерфейса программы. Фон, окна меню, и

текст отвечают всем требованиям предъявляемым к цветовому оформлению;

цветовая палитра подобрана так, чтобы глаза учащихся как можно меньше

уставали при работе с программатором. Также был разработан новый шрифт, что

позволило обеспечить крупные символы букв, и русифицированный программный

интерфейс.

Кадровые окна основного меню и все подпункты меню на каждом уровне

иерархии выполнены в виде окон с соответствием каждого окна его

информационному назначению.

Межоконный переход осуществляется выбором соответствующего пункта

перемещением по экрану маркера, в виде стрелки, позиция которого указывает

на выбранный пункт меню. Обратный переход в иерархическом меню

осуществляться выбором последнего пункта меню - «НАЗАД», или нажатием

функциональной клавиши «ESC».

Работа с пунктом меню «Работа с ПЗУ» возможна только после выбора

типа ПЗУ в пункте меню «Выбор ПЗУ», это связанно с особенностью работы

аппаратной части лабораторного макета «Программатор ПЗУ».

2.4. Описание процесса отладки

При отладке программного интерфейса лабораторного макета был

использован пошаговый режим пяти основных программных модуля: модуль меню,

модуль чтения ПЗУ, модуль записи ПЗУ, модуль тестирования программатора,

модуль файловых операций.

В процессе отладки были использована промежуточная печать для

определения некоторых промежуточных вычислений и кода вводимых с клавиатуры

символов и клавиш.

Была произведена отладка программы на выявление орфографических,

синтаксических, логических и графических ошибок в экранных частях

программы.

Осуществлена отладка программного интерфейса совместно с его

аппаратной частью. Были внесены некоторые изменения в программу, связанные

с обеспечением синхронизации работы программного интерфейса лабораторного

макета с его аппаратной частью.

2.5. Разработка эксплуатационно-методической документации

При эксплуатации лабораторного макета “Програматор ПЗУ” по проведению

лабораторных работ необходимо:

1. Подсоединить интерфесный продов к программатору и параллельному

порту персонального компьютера (оба должны быть обесточены)

2. Включить питание копьютера

3. Включить питание на лабораторном макете

4. Загрузить на компьютере программный интерфейс

5. Вставить микросхему ПЗУ в слот на лабораторном макете

6. Ознакомиться с программой

7. Выбрать в программе тип микросхемы ПЗУ, вставленную в слот

лабораторного макета

8. Провести тестирование работоспособности программатора

9. Выполнить задание по работе с лабораторным макетом

10. Выйти из программы

11. Выключить лабораторный макет

12. Выключить персональный компьютер

13. Снять микросхему ПЗУ со слота лабораторного макета

Для ознакомления с устройством и работой программатора ПЗУ

пользователю предоставлена документация.

2.6. Результаты испытаний

В процессе дипломного проектирования были получены следующие

результаты:

Был разработан программный интерфейс лабораторного макета

«Программатор ПЗУ», который обеспечивает связь аппаратного интерфейса

лабораторного макета с последовательным портом (LPT) персонального

компьютера IBM PC, позволяет считывать и записывать информацию на

микросхемы ПЗУ.

Также программный интерфейс создает удобный режим общения

пользователя с программой по принципу экранных меню.

Вся программа реализована на персональном компьютере IBM PC 486 с

монитором разрешающей способностью в текстовом режиме 80x60, при палитры 16

цветов.

В ходу отладки программного интерфейса экспериментным путем были

установлены минимальные требования к персональному компьютеру:

IBM совместимы персональный компьютер;

процессор 286;

цветной дисплей;

видеоадаптер EGA;

операционная оболочка DOS 3.0 или старше;

объем оперативной памяти 416 Kb;

свободное пространство на жестком диске из расчета: программа (20Kb)

+ 64Kb*кол. прошивок ПЗУ.

Техническая характеристика программы:

|Объем программы на жестком диске |20 Kb |

|Занимаемая память во время исполнения |17Kb |

|Скорость чтения микросхемы ПЗУ |1Kb/сек. |

|Скорость записи прошивки в ПЗУ |0.5Kb/сек. |

|Тестирование программатора |13 сек |

3. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКИЙ РАЗДЕЛ

3.1. Оценка издержек на разработку программного интерфейса для

программатора ПЗУ

3.1.1 Статья I. Материальные ресурсы

Статья I включает стоимость всех видов сырья и материалов,

расходуемых на изготовление продукции, а также транспортно-заготовительные

расходы.

Расчет сырья и материалов приведен в таблице 3.1.

|Таблица 3.1 |

Расчет сырья и материалов

|Наименование |Ед. |Цена, |Норма |Стоимость, |

| |Измерения |руб. |расходов, |руб. |

| | | |шт. | |

|Операционная система |шт. |342000.00 |1 |342000.00 |

|MS-DOS 6.20 | | | | |

|Язык программирования|шт. |570000.00 |1 |570000.00 |

|Borland Turbo Pascal | | | | |

|v7.0 | | | | |

|Итого: |912000.00 |

|ТЗР=[pic] | |

| |(3.1) |

ТЗР=912000.00*1%/100%=9120.00 руб.

|Ст.I=[pic] | |

| |(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=[pic] |(3.3) |

Ст.3=[pic]= 394875.00 руб.

3.1.4. Статья IV. Расходы на содержание и обслуживание оборудования

Статья IV включает в себя расходы на зарплату вспомогательным

рабочим, наладчикам, механикам, стоимость запасных частей, вспомогательных

средств и амортизацию.

Начальная стоимость персонального компьютера IBM PC/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. Полная себестоимость

|Пол.Себ.=[pic] |(3.5) |

Пол.Себ.=921120.00+975000.00+394875.00+142604.80=2433559.80 руб.

3.2. Анализ эффективности внедрения разработанной программы в

учебный процесс

Эффективность внедрения программы заключается в том, что лабораторный

макет, для которого написана программа, позволяет наглядно

продемонстрировать чтение и запись ПЗУ в производственных условиях.

Лабораторный макет и программное обеспечение обслуживающие макет,

позволит улучшить качество обучающего процесса по предмету «Импульсная

техника», потому, что позволит учащимся непосредственно на практике изучить

метод чтения и записи микросхем.

Программа для лабораторного макета проста и интуитивна понятна в

обращении; Сам макет, также прост, что позволяет сразу преступить к

выполнению лабораторной работы, необходимо всего лишь только подключиться

макет в сеть, подсоединить разъем к параллельному порту персонального

компьютера (порт LPT), вставить прошиваемую микросхему ПЗУ в панель и

запустить программное обеспечение на персональном компьютере. Эта простота

в обращении позволит не затрачивать много времени на обучение учащихся

пользованию макетом.

Лабораторный макет имеет хорошие показатели повторяемости, не требует

сложного оборудования для отладки, что позволяет легко внедрить макет в

производство или собирать его непосредственно в радиомастерских учебных

заведений или в домашних условиях.

К достоинству макета относятся и

низкая себестоимость, так как использованы широкодоступные детали и

материалы;

малый ток потребления;

малые габаритные размеры;

интуитивно понятный программный интерфейс.

Все выше перечисленные факторы позволят снизить розничную цену макета

и программного обеспечения для него, а также уменьшить затраты на

эксплуатацию, что в условиях рыночной экономики позволяет повсеместно

внедрить лабораторный макет по программированию ПЗУ в учебный процесс. Сам

как таковой лабораторный стенд без программного обеспечения не имеет смысла

рассматривать, так как без программы, это просто груда металла, так же как

и программа без металла, это просто бессмысленный набор команд. Поэтому

дальше под словом макет будет рассматривать совокупность лабораторного

стенда и программного обеспечения для него.

Так как разработка макета носит социально-направленный характер (для

проведения лабораторных работ в учебных заведениях по курсу «Импульсная

техника») и в стоимостном выражении не оценивается.

4. МЕРОПРИЯТИЯ ПО ОХРАНЕ ТРУДА. БЕЗОПАСНОСТЬ ТРУДА ПРИ ОБСЛУЖИВАНИИ

ПРОГРАММАТОРА

4.1 Требования безопасности к техническим средствам ПЭВМ

Технические и периферийные средства ПЭВМ должны отвечать требованиям

безопасности при их эксплуатации, монтаже, ремонте и обслуживании отдельных

комплексов и систем в целом. Устройства управления ПЭВМ, устройства ввода-

вывода и подготовки данных в процессе эксплуатации должны быть

пожаробезопасными и соответствовать требованиям безопасности в течение

всего срока службы.

Органы управления техническими средствами ПЭВМ, устройства ввода-

вывода, средства диагностики и контроля работы должны включать накопление

статического электричества в опасных количествах. Отдельные блоки ЭВМ

допускается эксплуатировать с устройствами снятия электрического заряда.

Для предотвращения образования и защиты студентов от статического

электричества в помещениях учебно-вычислительного центра (УВЦ) необходимо

использовать нейтрализаторы и увлажнители воздуха, а полы должны иметь

антистатическое покрытие. Допустимый уровень напряженности электрического

поля в помещениях УВЦ не должен превышать 20 кВ/м.

Конструктивно отдельные модули и блоки технических средств ПЭВМ

должны иметь местное освещение для обслуживания, диагностики и контроля

работы, при этом должна исключаться возможность соприкосновение с

токоведущими частями электрооборудования.

Устройства управления техническими и периферийными средствами ПЭВМ,

обеспечивающие взаимодействие составных частей ПЭВМ, должны быть выполнены

так, чтобы не могла возникнуть опасность в процессе совместного действия

отдельных систем и комплекса в целом.

Видео терминальное устройство отображения информации должно отвечать

основным требованиям безопасности: яркость экрана дисплея не менее 100

кд/м2, высота символов на экране не менее 3.8 мм, расстояние от глаз до

экрана не менее 400 мм, размер экрана по диагонали не менее 310 мм,

количество точек на одной строке не менее 640, минимальный размер

светящейся точки не более 0.4 мм, для монохромного дисплея и 0.6 мм для

цветного.

4.2. Требования безопасности к микроклимату в учебных лабораториях

Оптимальные и допустимые условия микроклимата в лабораториях учебного

вычислительного центра (УВЦ) устанавливаются с учетом избытка тепла,

выделяемого от технических и периферийных устройств ПЭВМ, тяжести

выполняемой работы, а также времени года. Микроклимат определяется

действующими на организм программистов сочетаниями температуры, влажности и

скорости движения воздуха.

В лабораториях УВЦ необходимо поддерживать оптимальные условия

микроклимата с помощью вентиляционных и отопительных систем, выполненных в

соответствии с СНИП II-33-75. Температура воздуха в холодный и теплы период

года должна быть в пределах +20...25 оС , относительная влажность 60...40 %

при скорости движения воздуха не более 0.2 м/с, подача наружного воздуха в

помещение лаборатории объемом до 20 м3 на одного студента не должна быть

менее 30 м3/ч.

Воздух в помещениях работы программистов и операторов вычислительных

систем должен быть очищен от вредных веществ, пыли и микроорганизмов.

Патогенная флора должна быть исключена. В помещениях лабораторий УВЦ общее

количество колоний на 1 м3 не должна превышать 1000. В помещениях УВЦ

воздух рабочей зоны должен соответствовать установленным требованиям ГОСТ

12.1.005-76 с незначительным избытком тепла от видеотерминалов и устройств

отображения информации.

При одновременном нахождении в помещениях УВЦ технических и

периферийных устройств ПЭВМ, программистов и операторов вычислительных

систем, когда температура внешней среды выше +25 оС, допустимая температура

воздуха в помещениях не должна превышать +31...+33 оС со значительным

избытком тепла от ПЭВМ. При длительном воздействии повышенной температуры

происходит нарушение водно-солевого, белкового и витаминного обменов в

организме студентов УВЦ. В результате наступает расслабление организма

учащихся, снижение внимания и скорости восприятия с устройств отображения

информации.

4.3. Меры безопасности при сервисном обслуживании программатора.

В лабораторном макете присутствует опасное для жизни напряжение 220

вольт 50 герц. Это напряжение питает трансформаторный блок. В остальных

блоках лабораторного макета напряжения не превышают 27 вольт, что не

является опасным. В блоке стабилизатора и блоке нагрузки происходит

тепловыделение. Температура частей этих блоков не превышает 50оС, что не

представляет опасности для человека.

Корпус блока трансформатора выполнен из диэлектрического материала.

Шасси выполнено из дюралюминия. Клемма заземления шасси должна быть

выведена на корпус. К этой клемме должно быть подключено заземление.

Шнур питания и вилка должны соответствовать ТУ на них, и не иметь

изломов и нарушений в изоляции.

Сетевой тумблер типа ПТ2-2 (напряжение 600 вольт, ток до 2 ампер)

отвечает требованиям электробезопасности.

Должны быть использованы сетевые предохранители в стандартных

держателях.

Напряжения и температуры в остальных блоках лабораторного макета не

представляют опасности и не требуют особых мер предосторожности.

Так как программатор взаимодействует при работе с ПЭВМ, а ПЭВМ

является электроустановкой, то к ней предъявляются требования соблюдения

всех параметров электробезопасности согласно ТУ на ПЭВМ. Вредными факторами

для человека являются:

мягкое рентгеновское излучение экрана;

мерцание экрана с частотой кадровой развертки;

электростатическое поле вокруг экрана;

ультрафиолетовое излучение экрана.

СПИСОК ЛИТЕРАТУРЫ

Скотт Мюллер «Модернизация и ремонт персональных компьютеров», Москва, изд.

«Восточная Книжная Компания», 1996г., ISBN 0-7897-0321-1

Гук «Аппаратные средства IBM PC», Санкт-Петербург, изд. «Питер Пресс»,

1996г., ISBN 5-88782-036-5

Фаронов В.В. «Турбо Паскаль 7.0. Начальный курс. Учебное пособие», Москва,

изд. «Нолидж», 1997г., ISBN 5-89251-012-3

М.В. Сергиевский, А.В. Шалашов «Турбо Паскаль 7.0: Язык, среда

программирования», Москва, изд. «Машиностроение», 1994г., ISBN 5-217-02468-

2

Абель П. «Язык Ассемблер для IBM PC и программирования», Москва, изд.

«Высшая школа», 1992г., ISBN 5-101-123447-1

Гейтс Б. «Дорога в будующее», Москва, изд. «Русская редакция», 1996г., ISBN

5-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 x<>255 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 (abstime2<>abstime1);

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(achar(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 xf1yt1 Then dec(yf1,((yf1-yt1)Shr speed)+1);

If yf1xt2 Then dec(xf2,((xf2-xt2)Shr speed)+1);

If xf2yt2 Then dec(yf2,((yf2-yt2)Shr speed)+1);

If yf20 Then dec(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','Reselect

file','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 Else readsize:=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 Else readsize:=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)='0')And(Key='A')And(Upcase(Key)='0')And(Key='0')and(Key='A')and(Upcase(Key)='0')And(Key='0')And(Key='A')And(Upcase(Key)320+15 then begin

inc(l1,16); p:=320+(p and 15); goto RePaINt; end; end;

$48: begin if (p>15)or(l1<>0)then dec(p,16); if p320+15 then begin

inc(l1,16); p:=320; goto RePaINt; end; end;

$4B: begin if (p>0)or(l1<>0)then dec(p); if p319) then begin dec(l1,320) end else l1:=0; goto

RePaint; end;

$51: begin inc(l1,320); if l1>size-336 then l1:=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]'.' Then inc(dz);

End

Else

Begin

dirx^[fz+1]:=LowCase(i.name);

inc(fz);

End;

FindNext(i);

Until DOSERROR<>0;

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) Else color(7,1);

Wrt(' '+name);

End;

Repeat

WaitKey;

Until

(Key=chr(13))or(ScanCode=$48)or(ScanCode=$50)or(Key=chr(27))or(ScanCod

e=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 (Key<>chr(13))And(Key<>chr(27)) Then

If (Key<>chr(08)) Then

Begin

If y<>9 Then

Begin

zs[y]:=Key;

Wrt(key+'-');

inc(y);

End;

End

Else

If y<>1 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 curp1 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 DOSERROR<>0 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 MenuP<>2 Then

Begin

romsize:=8*1024;

romname:=curd+'\amibio';

End;

If MenuP<>2 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 MenuP<>2 Then

Begin

romsize:=16*1024;

romname:=curd+'\amibio1';

end;

If MenuP<>2 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 (Key<>chr(13))And(Key<>chr(27)) Then

If (Key<>chr(08)) Then

Begin

If y<>9 Then

Begin

zs[y]:=Key;

Wrt(key+'-');

inc(y);

End;

End

Else

If y<>1 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 MenuP<>8;

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.

Страницы: 1, 2


© 2010 Современные рефераты