МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программатор ПЗУ (программный интерфейс)

    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, 3, 4


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.