New answers tagged

7

For getting your first taste of 6502 assembly, I recommend doing the web-based tutorial Easy 6502. You should be able to get through it in a few hours. Once you've got the basic ideas down, if you're going to learn 6502 assembler at the level of writing non-trivial routines and programs you're going to have to write a fair amount of it. I recently wrote a ...


9

I realize the OP asked specifically about Assembly Language, but I felt strongly enough about the quality of "Machine Language for Beginners" that I wanted to post it as an answer. Given that the Apple IIe has a pretty decent built-in monitor, this book is a natural fit for getting the basics down. I completely understand the utility of a good assembler, ...


5

Before the 286, x86 CPUs can only access 1MiB, so the only way to use memory beyond 1MiB is to use some form of bank switching. The de facto standard for that is Lotus/Intel/Microsoft EMS, which provides access to expanded memory by switching into a “page frame” (typically located in the UMA, between 640KiB and 1MiB). EMS requires hardware on CPUs before the ...


10

The eXtended Memory Specification (XMS) 2.0 may be found here and the 3.0 version here. The various function calls are invoked by obtaining the driver's entry point via the muxing interrupt (Int 2Fh). XMS allows for accessing both extended (above the 1MB boundary) and high memory areas. XMS works much like the original Windows 16-bit memory management: ...


3

The HIMEM.SYS is the driver which provides an API that complies with the XMS specification for you to allocate extended memory and move data between conventional memory and extended memory. The XMS specification can be found very easily. Accessing extended memory via XMS driver does not require any protected mode programming from the user and extended memory ...


5

The AGC, at least, didn't employ any such indirection. Calls to subroutines in other banks were performed via the BANKCALL routine (TC BANKCALL followed by a CADR pseudo-instruction containing the target label). CADR encoded the destination bank and address directly. If a routine moves because previous content in the same bank got longer or shorter, all ...


-4

Anytime you have a machine with multiple microcontrollers, you will have multiple, independent ROMs. Factory automation systems for example contain dozens of microcontrollers linked together on a CANopen network, with predetermined Node IDs on the bus and Object IDs (addresses) on each node. If a node needs to communicate directly with another node, it needs ...


-3

Isn't that the basic usage of any modularization? As soon as there are multiple storages, they can be exchanged vor updates - For the Apple II, for example, it happened twice: Changing the Monitor-ROM with Autostart-ROM and/or Integer-BASIC-ROM(s) with APPLESOFT-ROMs. Beside that, most (large/early) Computers didn't have massive ROMs but only microcode. The ...


2

I know of the 13h interrupt, which would allow me to read raw data off of the drive, but I don't know how to get the parameters in order to call this function(sector, cylinder, head, drive). INT 13h is actually a set of routines; which one is called is determined by AH. (That list on Wikipedia covers various extensions as well, you won't have all of those ...


10

You seem to be proposing a custom HDD "driver" that would image the HDD block-by-block by sending those blocks across a serial port to some sort of process running on your modern computer that assembles the blocks into an image file. This could be error prone and time consuming to implement. An alternative suggestion is to use a legacy DOS Utility, such as ...


4

I thought that punched cards already represent the code in binary since a hole means 0 and rest positions mean 1 on a punched card. Virtually all computer data is stored or transmitted in "binary" at some level. In order to interpret most data, you have to delve through multiple layers of meaning... multiple layers of codes. When you get to the lowest ...


1

Punched cards are not a "binary" or "text" format; like files in a Unix system they are simply streams of codes (albeit much smaller streams—80 codes per card if you read each column as a code). These can be interpreted as character codes as in a "text file," as binary codes to be loaded and executed as in an "executable file," as a sequence of decimal ...


0

The earliest use of punched cards for computing was not in what you'd nowadays call a computer, but in Hollerith tabulators and similar machines, which were the 1930s state of the art for business and scientific calculation. They would be set to perform a particular operation, such as summing all the cards that were fed into them, or multiplying the values ...


4

Preamble We tend to use the word 'binary' in an odd way when talking about the content of computer storage. Fundamentally, storage is always binary: zeroes and ones. But we talk about 'text files' when we mean files in which the zeroes and ones are supposed to be interpreted as making up characters which have meaning to humans (can be printed, etc.), and ...


5

Punched cards generally contained human-readable source code or data. In combination with computers, they were pretty much exclusively used as a data entry (as opposed to data storage) medium. You can find an example of the encoding used in the section "IBM 80-column punched card format and character codes" of the Wikipedia article, https://en.wikipedia.org/...


2

TL; DR: Because it is not a 16-bit device, as it has a multiplexed 8-bit address/data bus, and giving 64 IO addresses from the 256 reserved to PC motherboard devices would have been too much, so access to it was split into two IO ports, one to send address and another to read/write data. As the chip does not have a separate address and data buses, they are ...


4

Edit: Made a mistake, JustMe has the correct answer. I was thinking the XT had an RTC, but it was an AT specific thing so the rationale for the 8 bit writes is chipset related and not directly on the 8086 bus. Old post: TL;DR: Because the CMOS chip might only have an 8 bit data interface. Full Detail: An 8 bit I/O operation and a 16 bit I/O ...


Top 50 recent answers are included