Эмулятор cp/m86 для windows
версия 1.0
Бета тест перед публикацией
Рекомендуемые ос: win xp, vista, 7 x32
ctv писал(а):Эмулятор cp/m86 для winxp+, только для 32х битных версий + исходники консоли.
Beta test
APTEMK писал(а):Увы, но
Увы, но под Windows 10 я запустить не смог
@echo off
Title Dir cpm86 Emu
Set a=
Set ax=a
:Begin
If "%ax%"=="a" set ax=b and goto St
If "%ax%"=="b" set ax=s and goto St
If "%ax%"=="s" set ax=d and goto St
If "%ax%"=="d" set ax=e and goto St
If "%ax%"=="e" set ax=f and goto St
If "%ax%"=="f" set ax=g and goto St
If "%ax%"=="g" set ax=h and goto St
If "%ax%"=="h" set ax=i and goto St
If "%ax%"=="i" set ax=j and goto St
If "%ax%"=="j" set ax=k and goto St
If "%ax%"=="k" set ax=l and goto St
If "%ax%"=="l" set ax=m and goto St
If "%ax%"=="m" set ax=n and goto St
If "%ax%"=="n" (set ax=o) and goto St
If "%ax%"=="o" (set ax=p) and goto St
If "%ax%"=="p" (set ax=r) and goto St
If "%ax%"=="r" (set ax=c) and goto St
If "%ax%"=="c" (set ax=t) and goto St
If "%ax%"=="t" (set ax=u) and goto St
If "%ax%"=="w" (set ax=x) and goto St
If "%ax%"=="x" (set ax=v) and goto St
If "%ax%"=="v" (set ax=z) and goto St
If "%ax%"=="z" (set ax=aa) and goto St
If "%ax%"=="aa" (set ax=ab) and goto St
If "%ax%"=="ab" (set ax=as) and goto St
Goto prints
:St
If exist "%ax%.cmd" sed a = "%ax% cmd"
If not "%a%"== "" set sav=1
If not "%a%"== "" goto sav
:Nf1
If exist "%ax%.bas" set a = "%ax% bas"
If not "%a%"== "" set sav=2
If not "%a%"== "" goto sav
:Nf2
If exist "%ax%.asm" set a = "%ax% asm"
If not "%a%"== "" set sav=3
If not "%a%"== "" goto sav
:Nf3
If exist "%ax%.obj" set a = "%ax% obj"
If not "%a%"== "" set sav=4
If not "%a%"== "" goto sav
:Nf4
If exist "%ax%.doc" set a = "%ax% doc"
If not "%a%"== "" set sav=5
If not "%a%"== "" goto sav
:Nf5
If exist "%ax%.txt" set a = "%ax% txt"
If not "%a%"== "" set sav=6
If not "%a%"== "" goto sav
:Nf6
If exist "%ax%.l86" set a = "%ax% l86"
If not "%a%"== "" set sav=7
If not "%a%"== "" goto sav
:Nf7
If exist "%ax%.lib" set a = "%ax% lib"
If not "%a%"== "" set sav=8
If not "%a%"== "" goto sav
:Nf8
If exist "%ax%.sub" set a = "%ax% sub"
If not "%a%"== "" set sav=9
If not "%a%"== "" goto sav
:Nf9
If exist "%ax%.sub" set a = "%ax% sub"
If not "%a%"== "" set sav=10
If not "%a%"== "" goto sav
:Nf10
If exist "%ax%.a86" set a = "%ax% a86"
If not "%a%"== "" set sav=11
If not "%a%"== "" goto sav
:Nf11
If exist "%ax%.dat" set a = "%ax% dat"
If not "%a%"== "" set sav=12
If not "%a%"== "" goto sav
:Nf12
If exist "%ax%.sys" set a = "%ax% sys"
If not "%a%"== "" set sav=13
If not "%a%"== "" goto sav
:Nf13
If exist "%ax%.old" set a = "%ax% old"
If not "%a%"== "" set sav=14
If not "%a%"== "" goto sav
:Nf14
If exist "%ax%.inp" set a = "%ax% inp"
If not "%a%"== "" set sav=15
If not "%a%"== "" goto sav
:Nf15
If exist "%ax%.sym" set a = "%ax% sym"
If not "%a%"== "" set sav=16
If not "%a%"== "" goto sav
:Nf16
If exist "%ax%.def" set a = "%ax% def"
If not "%a%"== "" set sav=17
If not "%a%"== "" goto sav
:Nf17
If exist "%ax%.h86" set a = "%ax% h86"
If not "%a%"== "" set sav=18
If not "%a%"== "" goto sav
:Nf18
If exist "%ax%.inc" set a = "%ax% inc"
If not "%a%"== "" set sav=19
If not "%a%"== "" goto sav
:Nf19
If exist "%ax%.hlp" set a = "%ax% hlp"
If not "%a%"== "" set sav=20
If not "%a%"== "" goto sav
:Nf20
If exist "%ax%.p" set a = "%ax% p"
If not "%a%"== "" set sav=21
If not "%a%"== "" goto sav
:Nf21
If exist "%ax%.mcs" set a = "%ax% mcs"
If not "%a%"== "" set sav=22
If not "%a%"== "" goto sav
:Nf22
If exist "%ax%.dta" set a = "%ax% dta"
If not "%a%"== "" set sav=23
If not "%a%"== "" goto sav
:Nf23
If exist "%ax%.ovr" set a = "%ax% ovr"
If not "%a%"== "" set sav=24
If not "%a%"== "" goto sav
:Nf24
If exist "%ax%.201" set a = "%ax% 201"
If not "%a%"== "" set sav=25
If not "%a%"== "" goto sav
:Nf25
If exist "%ax%.dok" set a = "%ax% dok"
If not "%a%"== "" set sav=26
If not "%a%"== "" goto sav
:Nf26
If exist "%ax%.f77" set a = "%ax% f77"
If not "%a%"== "" set sav=27
If not "%a%"== "" goto sav
:Nf27
If exist "%ax%.ers" set a = "%ax% ers"
If not "%a%"== "" set sav=28
If not "%a%"== "" goto sav
:Nf28
If exist "%ax%.me" set a = "%ax% me"
If not "%a%"== "" set sav=29
If not "%a%"== "" goto sav
:Nf29
If exist "%ax%.err" set a = "%ax% err"
If not "%a%"== "" set sav=30
If not "%a%"== "" goto sav
:Nf30
If exist "%ax%.sim" set a = "%ax% sim"
If not "%a%"== "" set sav=31
If not "%a%"== "" goto sav
:Nf31
If exist "%ax%.h" set a = "%ax% h"
If not "%a%"== "" set sav=32
If not "%a%"== "" goto sav
:Nf32
If exist "%ax%.or1" set a = "%ax% or1"
If not "%a%"== "" set sav=33
If not "%a%"== "" goto sav
:Nf33
If exist "%ax%.or2" set a = "%ax% or2"
If not "%a%"== "" set sav=34
If not "%a%"== "" goto sav
:Nf34
If exist "%ax%.or3" set a = "%ax% or3"
If not "%a%"== "" set sav=35
If not "%a%"== "" goto sav
:Nf35
Goto begin
:sav
If "%ad%"== "" set ad=%a%
Set a=
If "%bd%"== "" set bd=%a%
Set a=
If "%sd%"== "" set sd=%a%
Set a=
If "%dd%"== "" set dd=%a%
Set a=
If "%ed%"== "" set ed=%a%
Set a=
If "%fd%"== "" set fd=%a%
Set a=
If "%gd%"== "" set gd=%a%
Set a=
If "%hd%"== "" set hd=%a%
Set a=
If "%id%"== "" set id=%a%
If %sav%=1 goto Nf1
If %sav%=2 goto Nf2
If %sav%=3 goto Nf3
If %sav%=4 goto Nf4
If %sav%=5 goto Nf5
If %sav%=6 goto Nf6
If %sav%=7 goto Nf7
If %sav%=8 goto Nf8
If %sav%=9 goto Nf9
If %sav%=10 goto Nf10
If %sav%=11 goto Nf11
If %sav%=12 goto Nf12
If %sav%=13 goto Nf13
If %sav%=14 goto Nf14
If %sav%=15 goto Nf15
If %sav%=16 goto Nf16
If %sav%=17 goto Nf17
If %sav%=18 goto Nf18
If %sav%=19 goto Nf19
If %sav%=20 goto Nf20
:prints
If exist %ad% Echo z:\ %ad% : %bd% : %sd% : %dd%
If exist %ed% Echo z:\ %ed% : %fd% : %gd% : %hd%
If exist %id% Echo z:\ %id% : %fd% : %gd% : %hd%
@echo off
title CP/M-86 v1.1 for the columbia Data Products Multi-Personal Computer
echo Generic Turbo XT Bios 1987
echo for 8088 or v20 cpu
echo (c)Anonymous
echo Columbia Data Products, Inc
echo Boot version 1.0
echo July 2, 1982
type z:\bel.te
echo CP/M-86 v1.1 for the columbia Data Products Multi-Personal Computer
echo Copyright (C) 1982, Columbia Data Products, Inc
echo CDP version 1.7 November 20, 1983
type z:\bel.te
type z:\bel.te
echo Hardware Configured:
echo memory (kb) : 640
echo Controller :Xebec
echo 320k floppy disk(s) : 1
:begin
set "v=z>"
set /p "v=%v%"
:pk
if "%v%"=="dir" (goto dir)
if "%v%"=="DIR" (goto dir)
if "%v%"=="Dir" (goto dir)
if "%v%"=="ver" (goto ver)
if "%v%"=="ver.cmd" (goto ver)
if "%v%"=="VER" (goto ver)
if "%v%"=="VER.CMD" (goto ver)
if "%v%"=="Ver" (goto ver)
if "%v%"=="Ver.cmd" (goto ver)
if "%v%"=="DIR" (goto dir)
if "%v%"=="dir" (goto dir)
if "%v%"=="cls" (goto cls)
if "%v%"=="CLS" (goto cls)
if "%v%"=="cls.cmd" (goto cls)
if "%v%"=="CLS.cmd" (goto cls)
if "%v%"=="CLS.CMD" (goto cls)
if "%v%"=="pause" (goto pause)
if "%v%"=="PAUSE" (goto pause)
if "%v%"=="Pause" (goto pause)
if "%v%"=="pause.cmd" (goto pause)
if "%v%"=="PAUSE.cmd" (goto pause)
if "%v%"=="PAUSE.CMD" (goto pause)
if "%v%"=="Pause.cmd" (goto pause)
if "%v%"=="OPEN" (goto open)
if "%v%"=="Open" (goto open)
if "%v%"=="open" (goto open)
if "%v%"=="open.cmd" (goto open)
if "%v%"=="Open.cmd" (goto open)
if "%v%"=="OPEN.cmd" (goto open)
if "%v%"=="OPEN.CMD" (goto open)
if "%v%"=="ABOUT.CMD" (goto ABOUT)
if "%v%"=="ABOUT" (goto ABOUT)
if "%v%"=="about" (goto ABOUT)
if "%v%"=="about.cmd" (goto ABOUT)
if "%v%"=="About" (goto ABOUT)
if "%v%"=="About.cmd" (goto ABOUT)
if "%v%"=="HELP.CMD" (goto help)
if "%v%"=="HELP" (goto help)
if "%v%"=="help" (goto help)
if "%v%"=="help.cmd" (goto help)
if "%v%"=="Help.cmd" (goto help)
if exist "z:\%v%" (goto api)
if exist "z:\%v%.cmd" (goto api)
if exist "c:\%v%" (goto dc)
if exist "c:\%v%.cmd" (goto dc)
if "%v%"=="z1>" (goto ABOUT)
echo %v%?
goto begin
:ver
echo Porameter
set /p "poo=Porameter:"
echo CP/M86 Version 1.0
goto begin
:dir:
Call dir.exe
goto begin
:cls
echo Porameter
set /p "poo=Porameter:"
cls
goto begin
:pause
echo Porameter
set /p "poo=Porameter:"
echo PAUSE
pause > z:\temp.of
goto begin
:z:
goto begin
:api
echo Porameter
set /p "po=Porameter:"
z:\CPM86.exe %v% %po%
goto begin
:dc
if exist "c:\%v%" copy "c:\%v%" "z:\" > z:\temp.of
if exist "z:\%v%" del "z:\%v%"
if exist "c:\%v%.cmd" copy "c:\%v%.cmd" "z:\" > z:\temp.of
if exist "z:\%v%.cmd" del "z:\%v%.cmd"
goto pk
:open
echo Porameter
set /p "opn=Porameter:"
if "%opn%"=="zip" (goto zip)
set /p "o=Open:"
set /p "n=Name:"
copy %o% "z:\%n%.cmd" > z:\temp.of
set v=%n%.cmd
goto api
:ABOUT
echo Porameter
set /p "poo=Porameter:"
echo Avtor the program Sementsul Maxim 2020
echo Moscow Russian
goto begin
:zip
set /p "opn=Zip file:"
if exist %opn% 7z.exe x %opn% -oz: -y > z:\temp.of
if not exist "%opn%" (goto notf)
echo start file
set /p "str=start:"
set v=%str%
goto api
:notf
echo Not fond
goto begin
:help
echo Porameter
set /p "poo=Porameter:"
:helps
echo helps:
echo Exit to exit command
:hel
echo About = Open = Ver = Help
echo Porameter
set /p "help=Help:"
if "%help%"=="About" (goto ABOUTHELP)
if "%help%"=="about" (goto ABOUTHELP)
if "%help%"=="about.cmd" (goto ABOUTHELP)
if "%help%"=="About.cmd" (goto ABOUTHELP)
if "%help%"=="ABOUT.CMD" (goto ABOUTHELP)
if "%help%"=="help" (goto HELPHELP)
if "%help%"=="HELP" (goto HELPHELP)
if "%help%"=="Help" (goto HELPHELP)
if "%help%"=="HELP.CMD" (goto HELPHELP)
if "%help%"=="help.cmd" (goto HELPHELP)
if "%help%"=="ver" (goto VERHELP)
if "%help%"=="VER" (goto VERHELP)
if "%help%"=="Ver" (goto VERHELP)
if "%help%"=="VER.CMD" (goto VERHELP)
if "%help%"=="ver.cmd" (goto VERHELP)
if "%help%"=="open" (goto OPENHELP)
if "%help%"=="Open" (goto OPENHELP)
if "%help%"=="OPEN" (goto OPENHELP)
if "%help%"=="OPEN.CMD" (goto OPENHELP)
if "%help%"=="open.cmd" (goto OPENHELP)
if "%help%"=="PORAMETER" (goto PORAMETER)
if "%help%"=="porameter" (goto PORAMETER)
if "%help%"=="Porameter" (goto PORAMETER)
if "%help%"=="exit" (goto begin)
goto hel
:ABOUTHELP
echo About the program
echo Press key to next
pause > z:\temp.of
cls
goto helps
:HELPHELP
echo Help the program
echo Press key to next
pause > z:\temp.of
cls
goto helps
:VERHELP
echo Ver the program
echo Press key to next
pause > z:\temp.of
cls
goto helps
:OPENHELP
cls
echo Open local cmd file:
echo z>open
echo Porameter
echo Porameter:
echo Open:c:\Date.cmd
echo Name:Date
echo Porameter
echo Porameter:
echo CP/M-86 emulator for DOS vers 1.3 - 11/30/97
echo Copyright (c) 1985, 1997 Jim Lopushinsky
echo Mon 01/00/78 00:00:00
type z:\bel.te
echo Open cmd file from zip arhive
echo z>open
echo Porameter
echo Porameter:zip
echo Zip file:c:\Date.zip
echo start file
echo start:Date.cmd
echo Porameter
echo Porameter:
echo CP/M-86 emulator for DOS vers 1.3 - 11/30/97
echo Copyright (c) 1985, 1997 Jim Lopushinsky
echo Mon 01/00/78 00:00:00
echo Press key to next
pause > z:\temp.of
cls
goto helps
:PORAMETER
echo Porameters:
echo for OPEN.CMD: zip
echo for ABOUT.CMD: not porameters
echo for VER.CMD: not porameters
echo for HELP.CMD: not porameters
echo Press key to next
pause > z:\temp.of
cls
goto helps
ctv писал(а):На win10 не работает, там слишком урезанный ntvdm.
APTEMK писал(а):ctv писал(а):На win10 не работает, там слишком урезанный ntvdm.
Думать надо о пользователях десятки!
Petya_FedoroF писал(а):Cкорее Microsoft надо думать о пользователях 32-битного ПО.
; FASM code // dir cp/m86
org 100h
jmp start
prob db ' : $'
Driv db 'z:$'
crlf db 13,10, 'z:' ;
newDTA db 45 dup('$') ; облаÑть DTA
fName db '*.*',0 ; ищем вÑе файлы
noFile db 13,10,'-----------------------------------'
db 13,10,'All file printed! Press any key...$'
start:
mov bx, 0
mov ax,3
mov ah,1ah ; Ñоздать DTA
mov dx,newDTA ;
int 21h ;
mov ah,4eh ; иÑкать файлы,
mov cx,10h ; ..Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð°Ð¿ÐºÐ¸.
mov dx,fName ; маÑка Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка
int 21h ;
jc stop ; ошибка?
call printName ; выводим Ð¸Ð¼Ñ Ð½Ð° Ñкран
find: mov ah,4fh ; иÑкать Ñл.файл
mov dx,newDTA ;
int 21h ;
jc stop ;
call printName ;
jmp find ;
stop: mov ah,9 ; нет больше файлов!
mov dx,noFile ;
int 21h ;
exit: ;
xor ax,ax ; выход по клавише
int 16h ;
int 20h ;
;нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
printName: ;
mov ah,9 ;
add bx,1 ;ПрибовлÑем к bx 1
Cpm ax, 0 ; ЕÑли региÑтр ax равен 0, то приÑваеваем ему 3.
Mov ax,3
Je dd ; Иначе переходим на метку dd
Dd:
Cmp ax, 3 ; ЕÑли региÑтр равен 3, то переходим на метку dsk.
Je dsk
Je file ; Иначе переходим на метку file
Dsk:
Mov dx, Driv ;УÑтанавливаем букву диÑка
Inc ax ;Уменьшаем ax, на 1
int 21h ; Выводим на Ñкран букву диÑка
File:
Mov dx,newDTA+30 ; в DTA+30 хранитÑÑ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°
int 21h ; выводим его на Ñкран
Cmp bx,4 ;ЕÑли региÑтр bx равен 4 то переходим на метку per
Je per
Je ff ; Иначе переходим на метку ff
Ff:
Mov dx, prob ;Пробел между файлами как в cpm86
int 21h ;Выводим на Ñкран пробел
Jmp endf ; Переходим на метку endf
Per:
Mov dx, crlf ;ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ñтроки
int 21h ; Выводим на Ñкран
Mov bx, 0 ;ВноÑим в региÑтр bx чеÑло 0
Jmp endf ; Переходим на метку endf
Endf:
mov al,'$' ; очищаем DTA Ð´Ð»Ñ Ñл.имени
mov cx,13 ; 13 Ñимволов
mov di,newDTA+30 ; ..от начала облаÑти имени
rep stosb ; запиÑываем маркеры конца Ð´Ð»Ñ fn(9)
ret ;
ctv писал(а):Народ, у кого есть возможность протестить программу на winxp 32x
Enrique писал(а):Ребята. На компьютере старом нужна среда разработчика Borland
и cборщик Tasm.
Поверьте программисту с двадцатилетним стажем и продолжающим
практиковать каждый день.
Вернуться в Операционные системы
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9