小编Ins*_*ere的帖子

在 x86 Assembly 中使用 PC 扬声器播放声音

因此,我尝试使用 x86 组件中的 pc 扬声器播放单音,它会播放声音,但是当我再次尝试将其关闭时......音调开始做我只能描述为颤抖的事情。

此外,如果这意味着什么,我正在为 16 位操作系统制作它。

这是我的 sound.asm 文件

; ------------------------------------------------------------------
; os_play_sound -- Play a single tone using the pc speaker
; IN: CX = tone, BX = duration

os_play_sound:
    mov     al, 182
    out     0x43, al
    mov     ax, cx

    out     0x42, al
    mov     al, ah
    out     0x42, al
    in      al, 0x61

    or      al, 00000011b
    out     0x61, al

    .pause1:
        mov cx, 65535

    .pause2:
        dec cx
        jne .pause2
        dec bx
        jne .pause1

        in  al, 0x61
        and al, 11111100b
        out …
Run Code Online (Sandbox Code Playgroud)

audio x86 assembly operating-system

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

在6502组件中绘制位图

所以我一直在尝试在6502(针对Commodore 64)中绘制位图。当我将图像加载到地址2000时,它工作正常,但一旦尝试其他地址(例如2400),它就不再工作了。

另外,我使用 CBM prg Studio 作为我的 IDE,使用 Vice 作为我的 C64 模拟器...不知道这是否重要。

这是我得到的结果的图像 我的结果的图片

这是我的代码


*=$0801

        BYTE    $0E, $08, $0A, $00, $9E, $20, $28
        BYTE    $32, $33, $30, $34, $29, $00, $00, $00

*=$0900

; **************************************************************
;                       VARIABLES
; **************************************************************

TITLE_CHARMEM   = $4340
TITLE_COLRMEM   = $4728
TITLE_BACKMEM   = $4B10

; **************************************************************
;                       MACROS
; **************************************************************

; **************************
; KEYWAIT
defm KEYWAIT                    ; Paramters: [Key]
@WAITLOOP
        lda #$CB
        cmp /1
        bne @WAITLOOP

        endm


; **************************
; PRINT
defm …
Run Code Online (Sandbox Code Playgroud)

assembly bitmap 6502 commodore

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

标签 统计

assembly ×2

6502 ×1

audio ×1

bitmap ×1

commodore ×1

operating-system ×1

x86 ×1