因此,我尝试使用 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) 所以我一直在尝试在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)