Перейти к содержанию
    

Ищу в Москве программиста, который может на Ассемблере или Паскале повторить программу, написанную под МС-ДОС

В 03.12.2023 в 21:15, firstvald сказал:

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

Lazarus же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Парус сказал:

Поставьте на комп эмулятор MSDOS.

Это и есть DOSBOX на котором, как я понял, сейчас у них и работает https://www.dosbox.com/download.php?main=1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, iiv said:

на форуме, когда кто-то делает добро, принято благодарить, а вы это не сделали. Далее обсуждать что-либо, боюсь, будет сложно.

 

Понимаете ли тут какое дело. Конечно Вы спросили в правильном разделе, но все же.

 

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

 

Конечно Вам хочется решить задачу, но, Вы, подсознательно понимая, что у вас там 20 строк кода, не готовы платить много, но хотите гарантии, чтобы все работало. А так не получится. Девелопить-то Вам придется. Вам дали пример, и это очень здорово, если бы я знал бы дельфи и дельфи у меня под рукой была бы, я бы тоже так же сделал.

 

Но вот делать под ключ - хз, без тех задания никто не решится. А так как Вы не удосужились тех задание написать и выложить в первом посте, все смотрят - хз, легаси код, в этом всем надо разобраться, даже если там линейный МНК, на пару месяцев только согласований будет, а потом у заказчика будут какие-то левые хотелки и ты за условную тыщу рублей подписываешься кодить пол-года что-то из каменного века, которое тебе не принесет никакого нового опыта. Я не прав?

браво

10 hours ago, Леонид К. said:

Не прав. Потому что техзадание нужно согласовывать совместно. А с чего вы вдруг взяли, что техзадания не будет?

Я же написал, что самое главное - ПОВТОРИТЬ существующую программу. Там всё видно, что нужно сделать. 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, Леонид К. said:

Не прав. Потому что техзадание нужно согласовывать совместно. А с чего вы вдруг взяли, что техзадания не будет?

Я же написал, что самое главное - ПОВТОРИТЬ существующую программу. Там всё видно, что нужно сделать. 

 

Эта фраза напоминает такую ситуацию, когда например  на форум Gamedev.ru регистрируется новый "ДиреХтор"

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

и каких специалистов ему необходимо в его команду.

Топик же, конечно, ожидамо оказывается снесённым в Раздел - Флейм (ПроЭкты) 🙂

Изменено пользователем KPG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый вечер. 

Повторить то можно. Главное начать и закончить. 😉
Но это не тот случай, для начала реверсим OBJ файл, что бы понять таки что происходит при чтении порта. Исходники на Паскале я так и не увидел.
Вот что получилось: 

extn00:0000 ; Format      : Object Module Format (OMF/Microsoft)
extn00:0000 ; Module name      : aux_vvod.asm
extn00:0000
extn00:0000
extn00:0000                 .686p
extn00:0000                 .mmx
extn00:0000                 .model flat
extn00:0000
extn00:0000 ; ===========================================================================
extn00:0000
extn00:0000 ; Segment type: Externs
extn00:0000 ; extn00
extn00:0000                 extrn STR0:byte:2       ; DATA XREF: CODE:002Ew
extn00:0000                                         ; CODE:0094w ...
extn00:0002                 extrn STR1:far          ; DATA XREF: CODE:loc_100F9o
extn00:0003                 extrn STR2:far          ; DATA XREF: CODE:00AEo
extn00:0003                                         ; CODE:loc_100DEo
extn00:0004                 extrn STR3:far          ; DATA XREF: CODE:loc_100A0o
extn00:0004                                         ; CODE:00D9o
extn00:0004
CODE:0000 ; ===========================================================================
CODE:0000
CODE:0000 ; Segment type: Regular
CODE:0000 CODE            segment para private '' use16
CODE:0000                 assume cs:CODE
CODE:0000                 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
CODE:0000 word_10010      dw 3F8h                 ; DATA XREF: CODE:AUX_VVODr
CODE:0000                                         ; CODE:003Ao ...
CODE:0002 word_10012      dw 180h                 ; DATA XREF: CODE:0012r
CODE:0004 ; ---------------------------------------------------------------------------
CODE:0004
CODE:0004                 public AUX_VVOD
CODE:0004 AUX_VVOD:
CODE:0004                 mov     dx, cs:word_10010
CODE:0009                 add     dl, 3
CODE:000C                 mov     al, 83h         ; 10000011
CODE:000E                 out     dx, al          ; COM: line control register bits:
CODE:000E                                         ; 0-1: word length: 00=5, 01=6, 10=7, 11=8
CODE:000E                                         ; 2:   stop bits: 0=1,1=2
CODE:000E                                         ; 3-4: parity: x0=None, 01=Odd, 11=Even
CODE:000E                                         ; 5:   stuck parity
CODE:000E                                         ; 6:   enable break control. 1=start sending 0s (spaces)
CODE:000E                                         ; 7:   DLAB (Divisor Latch Access Bit)
CODE:000F                 sub     dl, 3
CODE:0012                 mov     ax, cs:word_10012
CODE:0016                 out     dx, al          ; COM: transmitter holding register
CODE:0016                                         ; or (when DLAB=1) divisor latch low byte.
CODE:0017                 inc     dx
CODE:0018                 mov     al, ah
CODE:001A                 out     dx, al          ; COM: divisor latch high byte(when DLAB=1)
CODE:001A                                         ; or interrupt enable register bits:
CODE:001A                                         ; 0:1=an interrupt when rec'd data is available
CODE:001A                                         ; 1:1=interrupt when transmit buffer is empty
CODE:001A                                         ; 2:1=int on rec'r line status (error or break)
CODE:001A                                         ; 3:1=int on modem status (CTS,DSR,RI,RLSD)
CODE:001B                 add     dl, 2
CODE:001E                 mov     al, 3
CODE:0020                 out     dx, al          ; COM: line control register bits:
CODE:0020                                         ; 0-1: word length: 00=5, 01=6, 10=7, 11=8
CODE:0020                                         ; 2:   stop bits: 0=1,1=2
CODE:0020                                         ; 3-4: parity: x0=None, 01=Odd, 11=Even
CODE:0020                                         ; 5:   stuck parity
CODE:0020                                         ; 6:   enable break control. 1=start sending 0s (spaces)
CODE:0020                                         ; 7:   DLAB (Divisor Latch Access Bit)
CODE:0021                 inc     dx
CODE:0022                 mov     al, 8
CODE:0024                 out     dx, al          ; COM: modem control reg bits:
CODE:0024                                         ; 0: 1=activate -DTR (-data termnl ready), 0=deactivate
CODE:0024                                         ; 1: 1=activate -RTS (-request to send), 0=deactivate
CODE:0024                                         ; 2: 1=activate -OUT1 (spare, user-designated output)
CODE:0024                                         ; 3: 1=activate -OUT2
CODE:0024                                         ; 4: 1=activate loopback for diagnostic testing
CODE:0025                 mov     al, 3
CODE:0027                 out     dx, al          ; COM: modem control reg bits:
CODE:0027                                         ; 0: 1=activate -DTR (-data termnl ready), 0=deactivate
CODE:0027                                         ; 1: 1=activate -RTS (-request to send), 0=deactivate
CODE:0027                                         ; 2: 1=activate -OUT1 (spare, user-designated output)
CODE:0027                                         ; 3: 1=activate -OUT2
CODE:0027                                         ; 4: 1=activate loopback for diagnostic testing
CODE:0028                 sub     dl, 3
CODE:002B                 mov     al, 0
CODE:002D                 out     dx, al          ; COM: divisor latch high byte(when DLAB=1)
CODE:002D                                         ; or interrupt enable register bits:
CODE:002D                                         ; 0:1=an interrupt when rec'd data is available
CODE:002D                                         ; 1:1=interrupt when transmit buffer is empty
CODE:002D                                         ; 2:1=int on rec'r line status (error or break)
CODE:002D                                         ; 3:1=int on modem status (CTS,DSR,RI,RLSD)
CODE:002E                 mov     ds:STR0+1, 30h ; '0'
CODE:0033                 push    es
CODE:0034                 push    cs
CODE:0035                 pop     es
CODE:0036                 assume es:nothing
CODE:0036                 cld
CODE:0037                 mov     cx, 1Eh
CODE:003A                 lea     di, word_10010+51h
CODE:003E
CODE:003E loc_1004E:                              ; CODE XREF: CODE:0046j
CODE:003E                 call    sub_10106
CODE:0041                 cmp     al, 8Dh
CODE:0043                 jz      short loc_10099
CODE:0045                 stosb
CODE:0046                 loop    loc_1004E
CODE:0048                 call    sub_10106
CODE:004B                 cmp     al, 8Dh
CODE:004D                 jz      short loc_100DE
CODE:004F                 pop     es
CODE:0050                 assume es:nothing
CODE:0050                 retn
CODE:0050 ; ---------------------------------------------------------------------------
CODE:0051                 db    ? ;
CODE:0052                 db    ? ;
CODE:0053 byte_10063      db ?                    ; DATA XREF: CODE:0099r
CODE:0053                                         ; CODE:00A6r ...
CODE:0054                 align 8
CODE:0058                 db    ? ;
CODE:0059                 db    ? ;
CODE:005A                 db    ? ;
CODE:005B                 db    ? ;
CODE:005C                 db    ? ;
CODE:005D                 db    ? ;
CODE:005E                 db    ? ;
CODE:005F                 db    ? ;
CODE:0060                 db    ? ;
CODE:0061                 db    ? ;
CODE:0062                 db    ? ;
CODE:0063                 db    ? ;
CODE:0064                 db    ? ;
CODE:0065                 db    ? ;
CODE:0066                 db    ? ;
CODE:0067                 db    ? ;
CODE:0068                 db    ? ;
CODE:0069                 db    ? ;
CODE:006A                 db    ? ;
CODE:006B                 db    ? ;
CODE:006C                 db    ? ;
CODE:006D                 db    ? ;
CODE:006E                 db    ? ;
CODE:006F                 db 0A0h
CODE:0070                 db  30h ; 0
CODE:0071                 db 0B1h
CODE:0072                 db 0B2h
CODE:0073                 db  33h ; 3
CODE:0074                 db 0B4h
CODE:0075                 db  35h ; 5
CODE:0076                 db  36h ; 6
CODE:0077                 db 0B7h
CODE:0078                 db 0B8h
CODE:0079 a90             db '9.-0'
CODE:007D a0123456789     db '0123456789.-'
CODE:0089 ; ---------------------------------------------------------------------------
CODE:0089
CODE:0089 loc_10099:                              ; CODE XREF: CODE:0043j
CODE:0089                 cmp     cx, 14h
CODE:008C                 jz      short loc_100A0
CODE:008E                 pop     es
CODE:008F                 retn
CODE:0090 ; ---------------------------------------------------------------------------
CODE:0090
CODE:0090 loc_100A0:                              ; CODE XREF: CODE:008Cj
CODE:0090                 lea     bx, STR3
CODE:0094                 mov     ds:STR0+1, 34h ; '4'
CODE:0099                 cmp     es:byte_10063, 56h ; 'V'
CODE:009F                 jz      short loc_100FD
CODE:00A1                 mov     ds:STR0+1, 33h ; '3'
CODE:00A6                 cmp     es:byte_10063, 42h ; 'B'
CODE:00AC                 jz      short loc_100FD
CODE:00AE                 lea     bx, STR2
CODE:00B2                 mov     ds:STR0+1, 32h ; '2'
CODE:00B7                 cmp     es:byte_10063, 47h ; 'G'
CODE:00BD                 jnz     short loc_100FD
CODE:00BF                 mov     ds:STR0+1, 31h ; '1'
CODE:00C4                 cmp     es:byte_10063, 0D2h
CODE:00CA                 jz      short loc_100F9
CODE:00CC                 pop     es
CODE:00CD                 retn
CODE:00CE ; ---------------------------------------------------------------------------
CODE:00CE
CODE:00CE loc_100DE:                              ; CODE XREF: CODE:004Dj
CODE:00CE                 lea     bx, STR2
CODE:00D2                 lea     si, word_10010+60h
CODE:00D6                 call    sub_10134
CODE:00D9                 lea     bx, STR3
CODE:00DD                 lea     si, word_10010+6Ah
CODE:00E1                 call    sub_10134
CODE:00E4                 mov     ds:STR0+1, 35h ; '5'
CODE:00E9
CODE:00E9 loc_100F9:                              ; CODE XREF: CODE:00CAj
CODE:00E9                 lea     bx, STR1
CODE:00ED
CODE:00ED loc_100FD:                              ; CODE XREF: CODE:009Fj
CODE:00ED                                         ; CODE:00ACj ...
CODE:00ED                 lea     si, word_10010+56h
CODE:00F1                 call    sub_10134
CODE:00F4                 pop     es
CODE:00F5                 retn
CODE:00F6
CODE:00F6 ; =============== S U B R O U T I N E =======================================
CODE:00F6
CODE:00F6
CODE:00F6 sub_10106       proc near               ; CODE XREF: CODE:loc_1004Ep
CODE:00F6                                         ; CODE:0048p ...
CODE:00F6                 mov     dx, cs:word_10010
CODE:00FB                 add     dl, 5
CODE:00FE
CODE:00FE loc_1010E:                              ; CODE XREF: sub_10106+1Bj
CODE:00FE                 mov     ah, 1
CODE:0100                 int     16h             ; KEYBOARD - CHECK BUFFER, DO NOT CLEAR
CODE:0100                                         ; Return: ZF clear if character in buffer
CODE:0100                                         ; AH = scan code, AL = character
CODE:0100                                         ; ZF set if no character in buffer
CODE:0102                 jz      short loc_1011E
CODE:0104                 xor     ah, ah
CODE:0106                 int     16h             ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
CODE:0106                                         ; Return: AH = scan code, AL = character
CODE:0108                 cmp     ah, 1
CODE:010B                 jnz     short loc_1011E
CODE:010D                 retn
CODE:010E ; ---------------------------------------------------------------------------
CODE:010E
CODE:010E loc_1011E:                              ; CODE XREF: sub_10106+Cj
CODE:010E                                         ; sub_10106+15j
CODE:010E                 in      al, dx
CODE:010F                 test    al, 1
CODE:0111                 jz      short loc_1010E
CODE:0113                 mov     ah, al
CODE:0115                 sub     dl, 5
CODE:0118                 in      al, dx
CODE:0119                 and     ah, 9Eh
CODE:011C                 jnz     short sub_10106
CODE:011E                 cmp     ax, 0Dh
CODE:0121                 jle     short sub_10106
CODE:0123                 retn
CODE:0123 sub_10106       endp
CODE:0123
CODE:0124
CODE:0124 ; =============== S U B R O U T I N E =======================================
CODE:0124
CODE:0124
CODE:0124 sub_10134       proc near               ; CODE XREF: CODE:00D6p
CODE:0124                                         ; CODE:00E1p ...
CODE:0124                 mov     ah, 5
CODE:0126                 push    bx
CODE:0127                 inc     bx
CODE:0128
CODE:0128 loc_10138:                              ; CODE XREF: sub_10134+1Cj
CODE:0128                 mov     al, es:[si]
CODE:012B                 lea     di, word_10010+6Fh
CODE:012F                 mov     cx, 0Dh
CODE:0132                 repne scasb
CODE:0134                 jnz     short loc_10157
CODE:0136                 mov     al, es:[di+0Ch]
CODE:013A                 mov     [bx], al
CODE:013C                 inc     si
CODE:013D                 inc     bx
CODE:013E                 dec     ah
CODE:0140                 jnz     short loc_10138
CODE:0142                 pop     bx
CODE:0143                 mov     byte ptr [bx], 5
CODE:0146                 retn
CODE:0147 ; ---------------------------------------------------------------------------
CODE:0147
CODE:0147 loc_10157:                              ; CODE XREF: sub_10134+10j
CODE:0147                 pop     bx
CODE:0148                 mov     ds:STR0+1, 30h ; '0'
CODE:014D                 pop     ax
CODE:014E
CODE:014E locret_1015E:
CODE:014E                 retn
CODE:014E sub_10134       endp ; sp-analysis failed
CODE:014E
CODE:014E CODE            ends
CODE:014E
CODE:014E
CODE:014E                 end

По исходнику ничего интересного, все относительно стандартно, можно кучу примеров найти на гугле.

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

 


Но самый лучший вариант, это для начала посмотреть обмен вот таким приборчиком
image.png.73cce7c86bd238ccdfb95de481e8ad2c.png

Посмотреть в разных режимах работы программы. И от этого плясать. 

А нервничать, зачем ? оно никому не нужно кроме автора топика. На предложение в личке прислать исходники на паскале, что бы не мудрить - тишина, игнорирование вопросов по существу - это вообще как здравствуйте.

Поэтому топик, скорее всего мертв, чем жив.

А жаль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что мешает автору купить на Авито Б/У IBM ноутбук или настольный комп типа такого (https://m.opt-union.ru/i_store/item_1001766831/kompyuter-ibm-thinkcenter-a55-sff.html) , поставить  Нортон или Волков коммадер и радоваться жизни? У меня для досовских  программ  и программ на турбоБейсике такой и стоит.  Я на на нем и  турбобейсике  иногда быстренько  организовываю телеметрию от блоков с  микроконтроллерами

 

Изменено пользователем Практик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там нужно организовать процесс в нескольких местах. речь идет о комплексе. его нужно разработать заново. софт с хранением файлов и чтением из файлов и общения с железкой. протокола общения практически нет. нужно разбираться. т с встает в штыки и считает что obj файл когда- то написанной на паскале программы полностью закрывает проблему. ну и по всем вопросам у него компетентное мнение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...