Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14

Как перевести древний код на asm86, в fasm

11.10.2022, 18:11. Показов 7472. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
;This is a disk boot routine for the 1771/1791 type disk
;controllers.  It would normally reside on track 0,
;sector 1, to be loaded by the "B" command of the
;monitor at address 200H.  By changing the equates
;below, it may be configured to load any size of
;program at any address.  The program is assumed to
;occupy consecutive sectors starting at track 0, sector
;2, and will begin exection at its load address (which
;must be a 16-byte boundary) with the Instruction
;Pointer set to zero.
 
; Variations are available for the Cromemco 4FDC with
; large disks, the 4FDC with small disks, the Tarbell
; single-density controller, and the Tarbell double-
; density controller. Select one.
 
CROMEMCOSMALL:  EQU 0
CROMEMCOLARGE:  EQU 0
TARBELLSINGLE:  EQU 0
TARBELLDOUBLE:  EQU 1
 
LOAD:   EQU 400H    ;Address to load program
SEG:    EQU 40H ;LOAD/10H
SECTOR: EQU 8   ;No. of 128-byte sectors to load
BOOTER: EQU 200H    ;"B" command puts booter here
 
;**************************************************************
 
CROMEMCO:   EQU CROMEMCOLARGE+CROMEMCOSMALL
TARBELL:    EQU TARBELLSINGLE+TARBELLDOUBLE
 
WD1771: EQU CROMEMCO+TARBELLSINGLE
WD1791: EQU TARBELLDOUBLE
 
SMALL:  EQU CROMEMCOSMALL
LARGE:  EQU CROMEMCOLARGE+TARBELL
 
    IF  SMALL
MAXSECT:EQU 18
    ENDIF
 
    IF  LARGE
MAXSECT:EQU 26
    ENDIF
 
    IF  TARBELL
DONEBIT:EQU 80H
DISK:   EQU 78H
    ENDIF
 
    IF  CROMEMCO
DONEBIT:EQU 1
DISK:   EQU 30H
    ENDIF
 
    IF  WD1771
READCOM:EQU 88H
    ENDIF
 
    IF  WD1791
READCOM:EQU 80H
    ENDIF
 
    IF  CROMEMCOLARGE
WAITBYTE:EQU    0B1H
    ENDIF
 
    IF  CROMEMCOSMALL
WAITBYTE:EQU    0A1H
    ENDIF
 
    ORG BOOTER
    PUT 100H
 
    XOR AX,AX
    MOV DS,AX
    MOV ES,AX
    MOV SS,AX
    MOV SP,BOOTER   ;For debugging purposes
    UP
    MOV DI,LOAD
    MOV DX,SECTOR
    MOV BL,2
SECT:
    MOV AL,0D0H     ;Force Interrupt command
    OUT DISK        ;To force Type I status
    AAM
    CMP BL,MAXSECT+1
    JNZ NOSTEP
    MOV AL,58H      ;Step in with update
    CALL    DCOM
    MOV BL,1
NOSTEP:
    MOV AL,BL
    OUTB    DISK+2
 
    IF  CROMEMCO
    MOV AL,WAITBYTE
    OUT DISK+4      ;Turn on hardware wait
    ENDIF
 
    INB DISK        ;Get head load status
    NOT AL
    AND AL,20H
    JZ  OUTCOM
    MOV AL,4
OUTCOM:
    OR  AL,READCOM
    OUTB    DISK
    MOV CX,128
    PUSH    DI
READ:
    INB DISK+4
    TEST    AL,DONEBIT
 
    IF  TARBELL
    JZ  DONE
    ENDIF
 
    IF  CROMEMCO
    JNZ DONE
    ENDIF
 
    INB DISK+3
    STOB
    LOOP    READ
DONE:
    POP DI
    CALL    GETSTAT
    AND AL,9CH
    JNZ SECT
    ADD DI,128
    INC BL
    DEC DX
    JNZ SECT
    JMP 0,SEG
 
DCOM:
    OUT DISK
    AAM
GETSTAT:
    INB DISK+4
    TEST    AL,DONEBIT
 
    IF  TARBELL
    JNZ GETSTAT
    ENDIF
 
    IF  CROMEMCO
    JZ  GETSTAT
    ENDIF
 
    IN  DISK
    RET

1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2022, 18:11
Ответы с готовыми решениями:

Перевести код из FASM в TASM
Нужно переобразовать код из fasm в tasm org *100h jmp *start * fName * db *'*.*',0 * * * * * * *; маска для поиска файлов ...

Перевести код из Fasm на Tasm
Есть код на Fasm'e, я его почти перенес на Tasm, но выдает еще несколько ошибок Код на Fasm'e: ;== FASM code ======================= ...

Чтение из памяти по адресу или как перевести C++ программу на FASM
Уже два дня бьюсь с 4 строками кода. У меня есть мой старый исходник на C++, вот часть кода: DWORD a_p1 = (DWORD)(0x00400000 +...

42
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
11.10.2022, 18:58
Здесь наверное нужна не только программа, но и контроллер того же типа в компьютере, и дискета с записью.
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 19:41  [ТС]
qbfan, Это загрузчик 86-DOS, он каким-то странным образом загружает ядро 86dos.sys, с дискеты fat12. Я пробовал запускать ядро 86-DOS через Grub4dos, с 5дюймовой дискеты, в fat12, но оно не грузится. Первая строка является текстом, что говорит о том, что скорее всего загрузчик загружает ядро не передавая управление файлу 86dos.sys, а как то по-другому.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8662 / 4498 / 1670
Регистрация: 01.02.2015
Сообщений: 13,912
Записей в блоге: 12
11.10.2022, 20:36
Именно про 86-DOS никогда не слышал, а обычный MS-DOS на чистую дискету или чистый HDD устанавливался не копированием, а только утилитой sys, которая:
- записывала загрузочный сектор и файлы dos.sys и bios.sys в какие-то конкретные сектора,
- копировала файл command.com
2
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 20:43  [ТС]
ФедосеевПавел, 86-DOS, она же Q-DOS, операционная система, написаная Тимом Патерсоном, в последствии он продал её компании Microsoft, которая доработала её под свои нужды, и переименовала в MS-DOS. Поэтому эта система является прорадителем всех dos систем.
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
11.10.2022, 20:48
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Именно про 86-DOS никогда не слышал, а обычный MS-DOS на чистую дискету или чистый HDD устанавливался не копированием, а только утилитой sys, которая:
- записывала загрузочный сектор и файлы dos.sys и bios.sys в какие-то конкретные сектора
format /s

а потом загрузка через биос...
а остальное уже досовские int21 ...
dos1.0 грузился с дискеты и ни каких hdd и fat16 он не знал...
2
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 20:54  [ТС]
SergP01,
Чтобы выполнить format /s, в 86-DOS, нужно в него загрузится, а как это сделать не понятно, так-как образы дискет этой системы не запускаются не с дискеты, не через Grub4dos.
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 21:00  [ТС]
Я года 2 назад пробовал сделать загрузочную дискету, но так и не смог.

Старые наработки:

86.zip
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 21:12  [ТС]
Вот думаю, может ядро freedos обрезать до уровня 86-DOS, и переименовать в 86dos.sys, а все остальные файлы взять из дистрибутива 86-DOS. Boot сектор достать из MIKEOS, чтобы была фс fat12. Вот и получается форк давно утерянной версии 86-DOS, которая могла стартовать на любом x86 ПК, такая версия точно существовала, видел где-то на Ютубе видео Тима, но в интернете её нет.
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
11.10.2022, 21:15
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
тобы выполнить format /s, в 86-DOS, нужно в него загрузится, а как это сделать не понятно, так-как образы дискет этой системы не запускаются не с дискеты, не через Grub4dos.
нужен комп 86-пень4 .....

Добавлено через 1 минуту
и какой половой смысл...
дискеты уже лет тцать не поддерживают
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 21:20  [ТС]
SergP01, у меня дома куча дискет и 3.5 и 5.25. Я с работы 2 ящика списанных домой забрал. А вообще существует такое общество олдфагов, то биш даунгрейдеров, которые увлекаются старыми it технологиями, так-же как и я.
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
11.10.2022, 21:22
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
у меня дома куча дискет и 3.5 и 5.25. Я с работы 2 ящика списанных домой забрал. А вообще существует такое общество олдфагов, то биш даунгрейдеров, которые увлекаются старыми it технологиями, так-же как и я.
комп древний купите и развлекайтесь...
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
11.10.2022, 21:27  [ТС]
SergP01, У меня на чердаке лежат: i286, i386, i486, pentium 200mmx, pentium 2, Pentium4

Вот хочу купить: 8086, Pentium1, Pentium3
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
11.10.2022, 21:45
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
меня на чердаке лежат: i286, i386, i486, pentium 200mmx, pentium 2, Pentium4
Вот хочу купить: 8086, Pentium1, Pentium3
найдите друга по несчастью... сделайте у него системную дискету и развлекайтесь...
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
12.10.2022, 10:30
Цитата Сообщение от Tim Paterson
to be loaded by the "B" command of the
monitor at address 200H.
Tim Paterson сделал 86-DOS для своих одноплатных и многоплатных машин с 8086, а не для IBM PC, которые в то время только ещё подумывали разрабатывать.

https://web.archive.org/web/20... 8086Ad.pdf

В них был зашит клавиатурный монитор, который позволял программировать плату вообще без дискет, но, естественно, не было IBM PC BIOS.

https://web.archive.org/web/20... 6_1.4a.pdf

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

Утилитки от 86-DOS можно попробовать запускасть в NTVDM ("command.com") 32-разрядной Windows 10.
2
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
12.10.2022, 10:40  [ТС]
politoto, а без эмуляции, можно каким-нибудь костомным загрузчиком запустить ядро 86dos.sys.
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
12.10.2022, 11:00
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
а без эмуляции, можно каким-нибудь костомным загрузчиком запустить ядро 86dos.sys.
только на древних процах и платах..
0
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 147
Записей в блоге: 14
12.10.2022, 11:21  [ТС]
SergP01, жаль, значит буду делать форк, на исходниках freedos.

Добавлено через 10 минут
Кстати, судя по этому видео, Тим Патерсен запускал эту ос, на IBM PC совместимом компьютере
https://youtu.be/YgDE-d4pfTc?t=1247
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
12.10.2022, 11:26
MaGz GoLd, а что Вы хотите получить в итоге?
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
12.10.2022, 11:33
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
Кстати, судя по этому видео, Тим Патерсен запускал эту ос, на IBM PC совместимом компьютере
он запустил MSDOS 1.5 (слабак... я в руках держал и по кнопкам щёлкал в версии 1.0 )

я уже написал выше... найдите древний комп, который дисководы поддерживает, и развлекайтесь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2022, 11:33
Помогаю со студенческими работами здесь

Как адаптировать приведенный код под FASM
Будьте добры, если не затруднит помочь...или указать куда копать. Вот буквально день назад, в книге наткнулся на пример перехода в...

Не могу понять как исправить (код на FASM-е), простенькая программа
Написал программу для примера сдвигов, сдвигает нормально, вот только выводит каскадом (с начала выводит все переменные sent а потом только...

Как воспроизводить dll-файлы и код их чтения на отладчике xdbg? (FASM)
Как воспроизводить dll-файлы и их чтение на отладчике xdbg? (FASM)

Tasm в Fasm (перевести)
name prog .model small .stack 100h .data stroka db "hevtsov.dima.genad'evich", '$' .code start: mov ax,@data ...

Алгоритм RC4 (перевести FASM -> TASM)
Дали задание реализовать алгоритм rc4 на ассемблере. Не очень хорошо понимаю его. На просторах интернета нашла реализованную функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru