Questions tagged [assembly]

For questions about Assembly Language in general. Also use the appropriate processor's tag.

Filter by
Sorted by
Tagged with
84
votes
7answers
26k views

Why would a NES game use an undocumented 1-byte or 2-byte NOP in production?

Reading the NESdev wiki page on CPU unofficial opcodes, I see a few games use an undocumented 2-byte NOP instuction in production: Puzznic, F-117A Stealth Fighter, and Infiltrator use $89 #i. Beauty ...
58
votes
13answers
13k views

Were later MS-DOS versions still implemented in x86 assembly?

Recently, Microsoft published the source code of old MS-DOS versions on GitHub. What is odd in my opinion is the use of x86 assembly language for everything. The assembly language would not be my ...
57
votes
3answers
11k views

Why did DOS use dollar-terminated strings?

According to a few tutorials I am seeing, DOS used dollar-terminated strings to write to the terminal. This seems to also be documented here on INT 21H. AH = 09h - WRITE STRING TO STANDARD OUTPUT ...
52
votes
7answers
12k views

Why use static RAM addresses instead of the stack?

I'm studying the 65c816 assembly for the 1994 game, Super Metroid. A hobbyist studied the game in-depth and created a RAM map. From it: 7E:0B56 - 7E:0B57 Moves Samus this distance horizontally, ...
50
votes
12answers
12k views

How was the first assembler for a new home computer platform written?

How did the 8-bit computers (Spectrum, Commodore, Atari, Amstrad etc) typically "bootstrap" from bare electronics into a platform with a working assembly language and OS? What I mean: An assembler is ...
50
votes
7answers
5k views

Are there any modern compilers that can generate Amiga/m68k executables?

I would quite like to resurrect my openkick project. As I note on that project's README.md, it is stalled because GNU GCC is not fit for purpose. Sadly, there do not seem to be any other modern ...
38
votes
1answer
3k views

What computer system is this from 1984 Doctor Who?

In the 1980s, the popular BBC science fiction series Doctor Who used some real computer system(s) to display impressive (for the time, OK, maybe not!) graphics. They actually ran the software real-...
35
votes
3answers
4k views

Why are first four x86 GPRs named in such unintuitive order?

On x86 the first four general-purpose registers are named AX, CX, DX, BX. It would be quite intuitive if their indices (those used in instruction encoding) were in alphabetical order, but instead of ...
34
votes
4answers
12k views

Who is credited for the creation of Assembly Language?

The C Programming Language was originally developed by Dennis Ritchie who also co-designed the Unix operating system with which development of the language was closely intertwined. Is there a ...
32
votes
6answers
10k views

Which was the first programming language that had data types?

Machine language (and Assembly language) don't have the concept of data types, so if you want to add an int and a float variables in Assembly, you have to use the appropriate Assembly instruction that ...
29
votes
9answers
9k views

How did early x86 BIOS programmers manage to program full blown TUIs given very few bytes of ROM/EPROM?

I've always wondered how so much functionality and relative luxuries(CMOS Configuration Utilities. See: https://geekprank.com/bios/ for an example) included with most popular x86 BIOSes could be ...
22
votes
5answers
2k views

How much benefit should be expected on a more advanced compiler for z80/r800 based computers?

I am self studying about compilers, and get hands on very good textbooks about the subject. I am thinking in develop a compiler using the almighty llvm infrastructure to cross compile to old computers,...
21
votes
3answers
2k views

Why use repeated STZ instructions with the same operand on the 65C816 for the SNES (Super Nintendo)?

Please consider the code in Super NES Programming/Initialization Tutorial/Snes Init. Here is an excerpt: stz $2113 ; Plane 3 scroll x (first 8 bits) stz $2113 ; Plane 3 scroll x (last ...
20
votes
5answers
7k views

Will PC-DOS run faster on 4 or 8 core modern machines?

When I run PC-DOS on my 4 core AMD Phenom chip, does it take advantage of the extra parallel CPU's? If not, is there a way to coax DOS to use all available CPU's or does this require specific ...
19
votes
3answers
3k views

What makes MOVEQ quicker than a normal MOVE in 68000 assembly?

I'm "re-learning" 68000 assembly language and came across the "MOVEQ" command that is labeled "MOVE QUICK". According to the NXP Programmers Reference Manual (reference below), the command MOVEQ (...
17
votes
12answers
5k views

Did early assembly games use hardcoded memory locations?

In the era of C64, Apple][ GS, and SNES, did the games use hardcoded memory locations, or did they let the assembler help them (like modern assemblers)? If yes, how did they manage the memory?
16
votes
2answers
4k views

What does “jmp *” mean in 6502 assembly?

Right now I am learning 6502 assembly. Currently I am using the MADS assembler to program for the Atari 800. This program is just a small tutorial program that came with the assembler zip file I ...
16
votes
2answers
684 views

What are these tiny TSRs doing?

I've been puzzled by this for a while now. The (very old) game Phantasie comes with three small TSRs that are run prior to running the main game executable. This is the content of the file PH.BAT, ...
16
votes
2answers
960 views

Meaning of $ and $$ in Modcomp assembly language

The Modcomp II was a 16-bit minicomputer circa 1970. As well as in FORTRAN IV, the Modcomp family could be programmed in assembly language, with syntax like this excerpt from Kermit for Modcomp: ...
14
votes
6answers
5k views

How slow was the 6502 BASIC compared to Assembly

Imagine a modern computer, where let's say Python is a high level programming language and needs to be interpreted in order to execute a piece of code. You could write some code in C, compile it, ...
14
votes
8answers
2k views

Uses for the halt instruction?

What was the halt instruction in early CPUs such as the Z80 and 8080 used for? Here's a description of the Z80 instruction: The HALT instruction suspends CPU operation until a interrupt or reset ...
14
votes
2answers
1k views

How could high level functions with return values map to 6502 assembly? (if at all possible)

What sort of code could be used to substitute a high level function with a return value to a 6502 subroutine? Take this C-like function for example. byte func(byte a, byte b, byte c) { d = (a + b)...
13
votes
1answer
492 views

Why does AT&T syntax use * and $?

In a comment to an answer about AT&T assembly syntax, another-dave asked the following: DEC used #foo for an immediate operand in -11 assemblers; the Unix guys apparently preferred $foo, which ...
13
votes
3answers
4k views

MSX Assembly/Basic programming documentation

I'd like to try to create software (and maybe simple games) for the MSX standard. I know I have two ways to do so, either I use MSX Basic or Z80 assembly. I think that Z80 assembly is more powerful ...
13
votes
1answer
365 views

SYSENTER/SYSEXIT broken on Pentium Pro and Pentium II?

I was just What is linux-gate.so.1?, and it says this Intel recognized this problem early on and introduced a more efficient system call interface in the form of sysenter and sysexit instructions. ...
12
votes
2answers
899 views

Does the Commodore 64 have the PHX opcode?

Code written for the Commodore 64 sometimes uses the PHX opcode, which should push X onto the stack. There also are plx, phy, ply. These were apparently added on the CMOS versions of the 6502; very ...
12
votes
2answers
508 views

Early 65C816 CPU's SEP and REP instruction are followed by a NOP?

Why did early versions of the 65C816 CPU need a suffixed NOP to every SEP and REP instruction? I saw comments in some source code pointing at this. Looking around in official WDC's documentation and ...
12
votes
2answers
593 views

How to use the “darker” CGA palette using x86 Assembly?

For those of you retro developers out there, I am having a hard time figuring out how exactly to select the "darker" color palette in 320x200 CGA mode. Here's what I have so far: setup_cga_graphics: ...
11
votes
4answers
682 views

Motorola 6809 two stacks design

I'm an assembly newbie, but I'm curious about why the designers of the 6809 choose to use 2 stack in the microprocessor architecture. What is their original intent? The Wikipedia page says "a user ...
11
votes
3answers
750 views

z80 crashes after executing some instructions

I'm building my own Z80 computer but I'm having a very strange problem. Consider this code: ld a,0xaa out (00),a jp a That works as expected, outputting 0xaa on port 0x00. Now consider this code: ...
11
votes
2answers
977 views

What is the origin of different styles of assembly language mnemonics?

As exemplified in answers to this question (I hope that closed questions that are linked to, don't get purged), the instruction mnemonics in early assembly languages had a 1-to-1 correspondence to the ...
11
votes
1answer
399 views

Sprites not rendering correctly before $2000

I am currently testing out some stuff in assembly with C64Studio and Vice and I noticed something with odd sprites. My code starts at $1000 and my sprites at $2000 but when I try to lower the first ...
11
votes
1answer
560 views

8080/8085 Instruction Test Suite

(This question was inspired by Comprehensive test suites for MOS 6520 PIA / 6522 VIA / 6526 CIA) Is there a comprehensive test suite for the Intel 808X series of processors? Something that would ...
10
votes
3answers
704 views

How does 6502 machine code process $ (address) VS #$ (value)?

How does the 6502's machine code process $ vs #$, as in it's assembly language? Does every piece of machine code have an extra byte or something telling to use addresses or values or was it something ...
10
votes
1answer
493 views

Can we express the instructions to the Analytical Engine in terms of assembler or machine code?

On a recent trip to the London Science Museum I saw Babbage’s Analytical Engine. Apparently this had an ALU (or equivalent). I can build an ALU out of logic gates but I can’t conceptualise how to do ...
9
votes
2answers
906 views

What is an “unused” memory address?

Reading this page on Commodore 64 memory structure and usage I stumbled across a cell where the table claims that this memory is unused. What exactly does this entail? Does this mean that if you ...
9
votes
4answers
2k views

Was Family BASIC for the NES/Famicom powerful enough to create full games and applications?

"Family BASIC or Famicom BASIC is the consumer product for programming Nintendo's Family Computer video game console of Japan." wikipedia I can't seem to find much info about Family BASIC ...
9
votes
1answer
1k views

Why does this 6502 code push a function address onto the stack before calling?

I am learning how to program the Atari 800 by examining some tutorial code that came with the IDE/Assembler I am using. I am using the MADS assembler for this. putchar_ptr = $346 csrhinh = 752 ...
9
votes
1answer
753 views

Looking for a specific 6502 Assembler

I found some 6502 assembler code for a Commodore 64 program that uses meta commands like #include "foobar", define the address to be assembled to via *=$1234 and define labels without a colon. ...
9
votes
1answer
2k views

How to write directly to video memory in MS-DOS?

The base address for the video memory in MS-DOS is 0xB8000. I am trying to write to this address using debug.exe, but I am getting an error: 1165:0103 mov [b8000],ax ^ Error
9
votes
2answers
499 views

Is the software available to simulate building a computer from the ground up? For example a system based on the 6502 [closed]

I recently got me head round the basics of how a CPU works after watching Ben Eaters 8bit bread board computer series of internet videos. Now I am hooked and i want to take my understanding further. ...
9
votes
3answers
1k views

What Commodore 64 emulator and assembler to use? [closed]

I'm about to do some assembly coding for the C64 but for sanity I would like to do the actual coding on my Mac with an emulator. My question is; which is the most maintained/up-to-date emulator/...
8
votes
3answers
3k views

6502 CMP instruction doesn't compare as expected

I am trying to code in 6502 assembly and for some reason the CMP instruction doesn't work. For example: CLD LDY #$03 LDA #$00 LDX #$05 CMP Y BEQ Equal STX $0200 Equal: BRK ...
8
votes
2answers
846 views

How useful were the 6809/6309's indirect addressing modes?

Much like the VAX, the 6809 and 6309 have a preponderance of indirect addressing modes (in VAX parlance, "deferred"), though neither go so far as to include a VAX-like doubly-indirect mode. To what ...
8
votes
2answers
1k views

What is the meaning of M in the Z80 statement ADD A,M

Recently I have been trying to compile CP/M 2.2 from source. When I try to assemble, everything works except for the instructions ADD A,M and SBC A,M, which the assembler returns a syntax error. I ...
8
votes
2answers
757 views

Intel 8080 Read/Set Interrupt Mask Instructions

According to Intel's 8080-8085 Assembly Language Programming guide, the OP Code 20 corresponds to the Read Interrupt Mask (RIM) instruction, and 30 corresponds to the Set Interrupt Mask (SIM) ...
8
votes
3answers
528 views

Was The Telemark Assembler available for the Unix or Mac Environments?

I'm trying to build the recently released Infinity Game Boy Color source code on my macOS El Capitan box. The original development environment was a Windows box, and I'm trying to modify the build ...
8
votes
1answer
188 views

Are there any PDP-8 assemblers that create linkable object files?

I am currently writing a compiler for the PDP-8. The compiler is going to translate source code into PDP-8 assembly code that calls some runtime routines to perform high-level functions such as ...
8
votes
1answer
295 views

How many bits are stored in a memory location in a PDP-11?

PDP-11 is said to be word addressable, which means every data access returns 16-bit data. Suppose I give a read request for address 100 in memory. Will it return 8 bits (LSB) from address 100 and ...
8
votes
1answer
130 views

cbm prg studio for the Amstrad

CBM prg studio is brilliant. I have searched Google for a version (or something similar) for the Amstrad CPC 464, to no avail. Does anyone know of one?