Progress on the assembly code that'll handle command line-oriented display drawing. This test is done on the emulator, NOT on a real monitor with real hardware, yet.
Time is scarce this week, but the challenge is to finish getting line-oriented display routines finished and working in the emulator. #homebrewcomputer
The last piece of work for the week: interrupts. #homebrewcomputer
I hadn't planned to add these yet, but realized when starting video routines that there'll now be two consumers of serial port input data, the io processing and the video output. Doing the setup in an interrupt seems like a good way to loosely couple them.
Now for a couple days off to do other important things.
Showing the new single step capability of the CPU and the machine code monitor. When stepping through the instructions, the monitor prints the address and opcode of the next instruction, and the updated CPU state. #homebrewcomputer
Any volunteers for the #fsf around? I am interested in the Free Software Foundation and wondering what kind of work volunteers have done in the past, particularly if it was in their local communities.
Today I implemented the machine code monitor "jm" command, which allows the user to resume program execution at a new address. #homebrewcomputer
I've been hesitant to publish the source of my work-in-progress
#homebrewcomputer, self-conscious to show my inexperience in assembler design
and HDL. But part of a growth mindset is recognizing there's always something
more to know; there are 2+ topics in which any person is a novice for every
topic in which that person is an expert. So I've published the git repo,
licensed under GPLv3: https://gitlab.com/vale-computer/vale8x64
US citizens, if you don't use your public library, consider giving it another look this year. Show more
Through the public library's Interlibrary Loan program, I've been able to read many books for "free" (for the price of my tax dollars). These include math books, programming books, and other textbooks. Old and new. The public library is a great resource.
More work on the assembler today. 16-bit labels don't correctly expand into upper byte and lower bytes when pseudo-instructions are used. And we need to be able to do simple arithmetic with operands, like $0314+$01.
Working on these things today.
I fixed all know bugs and major performance issues yesterday. Today, I'll spend a few hours improving the machine code monitor and assembler before taking a couple days off to catch up on other things. #homebrewcomputer
Success drawing bitmapped characters, so I'm off to write a program to convert a font sprite sheet to a Verilog memory file. #homebrewcomputer
More progress on the MCmon.
The CPU now suspends execution of a program on the "brk" instruction and transfers control to the monitor, which prints the CPU state and waits for input.
The "mr" command reads memory from the specified address. The new "mw" command writes a value to a memory location. The video demonstrates overwriting the ">" character in the prompt with a "*" character. The following prompt shows the result of the change.
Among the most fundamental userland programs is the machine code monitor, by which the user can analyze and modify the computer's state. So that's the first program I'm writing for my #homebrewcomputer . Here it is doing a memory read: