标签: dosbox

使用 DosBox 在 Windows 7 64 位操作系统上的 Turbo C++ 中以高分辨率模式使用 IBM 3514 Borland 图形接口驱动程序

我正在 Windows 7 64 位上使用 DosBox 在 Turbo C++ 中运行图形程序。现在,我想IBM3514在高分辨率模式 ( IBM3514HI) 下使用图形驱动程序。因此,我编写了以下简单程序来测试它:

#include <graphics.h>
#include <iostream.h>

void main() {
    int gd = IBM3514, gm = IBM3514HI, e;
    initgraph(&gd, &gm, "C:\\TC\\BGI");
    if (e = graphresult()) {
        cout << grapherrormsg(e);
    }
    cleardevice();
    rectangle(100, 100, 300, 300);
    cin.get();
    closegraph();
    restorecrtmode();
}
Run Code Online (Sandbox Code Playgroud)

现在,程序编译并运行,没有任何错误。但是,该initgraph函数调用不会初始化图形模式。graphresult的返回值为0。因此,没有发生错误。然而,该程序仍然以文本模式运行。闪烁的下划线可见,但未绘制矩形。

我检查了我的C:\TC\BGI文件夹,该IMB3514.BGI文件存在。因此我假设它确实加载了图形驱动程序。然而,我不明白为什么程序不能在图形模式下执行,甚至抛出错误。但是,如果我使用默认设置,它工作得很好:int gd = DETECT, gm;

任何关于为什么我的程序不起作用的解释将不胜感激。请尝试解决此问题。我真的很想在1024x768屏幕上用256颜色画画。

c++ turbo-c++ dosbox windows-7-x64 bgi

2
推荐指数
1
解决办法
1347
查看次数

汇编程序无法找到现有文件

我的TASM已安装到我的TASM,TLINK和文件所在的文件夹中.具体来说就是C:/TASM/BIN.运行单个.asm文件时没有问题但是当我包含另一个文件以便我的代码看起来模块化时,会出现这个问题.

我已经包含了6个文件,其中包括printMzpos1.kt.(文件扩展名在汇编文件包含中无关紧要.)我的主文件名是c.asm.该图像显示printMzpos1.kt在我的TASM挂载的文件夹中:

在此输入图像描述

这是我的代码的快照.我包括printMzpos1.kt之后main endp和之前end main.printMzpos1.kt包含打印框的过程.

.model small
.386
.stack 64

.data
colorW      db  0Fh
xPos        dw  ?
currmode    db  ?
horLineLen  dw  120
verLineLen  dw  70

include macro.kt

.code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAIN proc far
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

mov ax, @data
mov ds, ax
mov es, ax

setVidMode  
cls

call printMzPos1
;call move3Boxes

retVidMode  
mov ax, 4c00h
int 21h

MAIN endp

include printMzPos1.kt
include printMzPos2.kt
include printMzPos3.kt
include …
Run Code Online (Sandbox Code Playgroud)

x86 assembly dos tasm dosbox

2
推荐指数
1
解决办法
6508
查看次数

在MSDOS中,要求此人输入现有文件名,然后将其删除

我在下面编写了这个程序,但它没有用.我正在输入文件名dur.txt.它返回AX = 4C03.为什么它不起作用,我该如何纠正呢?

.model tiny
.data
  max1  db  32
  act1  db  ?
  inp1  db  30 dup(0)
  hande dw  ?

.code
.startup
    ;enter the name of the file
    lea dx,max1
    mov ah,0ah
    int 21h

    ;delete the file
    mov ah,41h
    lea dx, inp1
    int 21h
.exit
end
Run Code Online (Sandbox Code Playgroud)

assembly dos masm dosbox x86-16

2
推荐指数
1
解决办法
76
查看次数

Windows 10 上的 DOSBox - 如何安装网络位置?

我正在尝试使用 DOSBox 在另一台机器上安装文件夹,两台机器都运行 Windows 10。

我尝试//PC-NAME/filename按照 Windows 资源管理器中显示的方式进行安装,但它不起作用。

安装快捷方式也不起作用。这可以吗?

dosbox

2
推荐指数
1
解决办法
8489
查看次数

在x86汇编中实现160x100模式

我已经知道有一段时间可以通过使用CRTC将行高改为两个像素来在IBM CGA上实现伪160×100图形模式.我一直试图在几天内完成这项工作,走到了尽头.

英特尔开源HD显卡和英特尔虹膜™图形程序员参考手册要求,我可以通过写扫描线的最大注册为此45页(或59页的PDF),或者这就是我从中解读.

我相信,我已经尝试直接写入值为00000001b的内存地址3B5或2个扫描行的代码.当我在DOSBox中测试它时,这什么都没做.

如果你想看到我写的代码将在NASM中汇编:

BITS 16
xor bx,bx
mov ax, 3b5h
mov es, ax
mov ah, 00000001b
mov BYTE [es:bx], ah    ; write 00000001b to 0x03b5:0000, right?
cli
hlt
Run Code Online (Sandbox Code Playgroud)

我对这样的低级别的东西还不是很有信心,任何帮助都会受到赞赏.

x86 assembly intel dosbox undocumented-behavior

2
推荐指数
1
解决办法
351
查看次数

程序集8086 - DOSBOX - 如何产生哔声?

我正在组装一个"西蒙"游戏我需要在按钮打开时发出哔哔声,哔哔声也应该彼此不同.谢谢

x86 assembly dos dosbox x86-16

2
推荐指数
1
解决办法
2134
查看次数

使用 ah = 2Ch 的 int 21h 延迟程序

我正在为学校的程序集 8086(使用 DOSBox)开发一个项目,我试图将我的程序延迟 0.5 秒。

我尝试创建一个循环,将当前时间与初始时间进行比较,使用 int 21h、函数 2Ch 和 中的百分之一值DL,但它似乎太慢了......

mov ah, 2Ch
int 21h
mov al, dl ;hundredths
mov bx, 0
wait_loop:
    one_hun:
        int 21h
        cmp al, dl
        je one_hun
    mov al, dl
    inc bx
    cmp bx, 50
    jne wait_loop
Run Code Online (Sandbox Code Playgroud)

assembly delay dosbox x86-16

2
推荐指数
1
解决办法
720
查看次数

自动化DOSbox应用程序

我有一个非常旧的DOS应用程序,我想自动化.就像有按键等,如果自动化会有很多帮助,因为我可能需要手动运行程序一百多次.

我的问题似乎与这个问题非常相似,但那里提供的解决方案对我来说并不是很有用,而且它已经超过九年了

使用Python自动化旧的DOS应用程序

这个问题与我的唯一不同之处在于除了DOSbox之外我没有选择这样做.这个应用程序是在很多计算机上设置的,所有使用该应用程序的人都知道如何使用DOSBox.迁移到Virtualbox将是一件痛苦而且非常耗时的事情.

我想也许我可以使用xautomaton或uinput在python中以某种方式机械化这个,但我还没弄清楚究竟是怎么做的.该应用程序将主要在Ubuntu上运行.

为了了解该应用程序,我附上了一个截图:

截图

解决方案不一定需要在python中.任何其他语言都可以.任何帮助表示赞赏.

python bash dos dosbox

2
推荐指数
1
解决办法
88
查看次数

在具有 INT 21,43 的程序集上将文件属性更改为只读不起作用

我对汇编很陌生,最近我一直在努力使 INT 21,43 (将文件属性更改为只读)工作。我正在使用 Windows 10、DOSBox x86 和 Turbo 汇编器/链接器/调试器(如果这有什么区别的话)。据我所知,使用调试器,它应该可以工作(CF 未设置,并且根据文档,我没有得到应有的错误代码)。另外,如果我使用相同的 INT 21,43 获取(将 al 设置为 0)文件的文件属性,该文件已手动设置为只读,则 CX 设置为 20,据我所知,这不会使有道理,但 CF 没有设置好,所以它说它有效。我希望你能帮我解决这个问题,提前致谢。

.model small
.stack 100h

.data
    filename db "temp.txt",0 ; my file name 

.code

start:

    mov dx, @data
    mov ds, dx
    
    mov ah, 43h
    mov al, 01h ; Set file attribute
    mov cx, 01h ; 1 = read-only
    lea dx, filename ; Set pointer to filename
    int 21h
    
    mov ah, 4ch ; Return to DOS       
    mov al, 0               
    int …
Run Code Online (Sandbox Code Playgroud)

x86 assembly file-attributes dosbox

2
推荐指数
1
解决办法
310
查看次数

该汇编代码有问题吗?

这段代码是使用Turbo Assembler汇编的,但是当我尝试在DOSBox中运行它时,它冻结并且DOSBox消失。这有什么问题吗?

TITLE SAMPLE PROGRAM
.MODEL SMALL
.STACK 64
.DATA
.CODE
MYCODE PROC
    MOV AX,04
    MOV BX,0212
    CMP AX, BX
    JG action1
    JLE action2
action1:
    ADD AL, 30
    JMP exit
action2:
    ADD BL, 20
    JMP exit
exit:
    MOV AX, 4CH
    INT 21H
MYCODE ENDP
END MYCODE
Run Code Online (Sandbox Code Playgroud)

assembly runtime-error tasm dosbox

1
推荐指数
1
解决办法
32
查看次数