Tuesday, December 24, 2024

Merry Christmas everyone!

I'm enjoying my time off this week being with the family. The last few days I have been reading several books, including Terry Brooks, Terry Pratchet, Marvel Defenders, and reading various Koine Greek manuscripts. Not much on the front of coding or working on computers - but have been eating a lot of cookies as my daughter has spent several days cooking them.
I hope everyone has a great Christmas and New Years!

Sunday, December 22, 2024

Why should you program in Assembly Language?

A) What are the two biggest benefits of using assembly language?

  As a general rule of thumb, there are a number of benefits.
    1 Faster Execution - 
      First, some assemblers are faster than others, but they are almost always 
      faster than higher level languages.
      
      Importantly, one of the main advantages of assembly language is that it 
      can produce very fast and efficient code. This is based on the fact that 
      assembly language is close to the machine code that the processor executes. 
      
      Assembly language eliminates the need for a mid level compiler stages or 
      interpreter that translates high-level languages into machine code. This 
      reduces the overhead and latency that can affect the performance of a 
      program. 
      
      Assembly language can also take advantage of the specific features and 
      capabilities of the processor (CPU) it was built for, such as registers, 
      flags, and instructions, that may not be available or optimized in high-level 
      languages.
      
    2 Smaller Size
      One of the main advantages of using assembly language for hardware or kernel 
      programming is that it allows you to write code that is fast and efficient. 
      Assembly language gives you full control over the hardware resources, such 
      as memory, CPU, and I/O devices. You can optimize your code to use the least 
      amount of instructions, cycles, and bytes, and avoid unnecessary overhead or 
      abstraction. This can improve the performance, reliability, and power 
      consumption of your hardware program.
    
B) Are all assembly languages the same?

  No, they differ in several areas.  Instruction labels can differ to what 
  resgisters are looked at for functions.   Some assember languages are just a 
  little faster than others.  Even the format itself differs from assembler 
  toolset to the next - even to the point of data space formatting.

Wednesday, December 18, 2024

Small list of 80 computer emulators:

List of 80 computer emulators on a web browser:


The TI-99/4A
https://js99er.net/#/

The Apple II
https://www.scullinsteel.com/apple2/

The Commodore C64
https://retrogamecoders.com/c64-emulator/

The Commodore PET
https://retrogamecoders.com/pet-emulator/





Firewire!

Monday, December 16, 2024

More on some of the computers in my home lab.

I have some weird computers in my lab.  Here is My Android RCA Viking Pro sitting on top of my my HP file server.  The RCA is used mostly for testing.

 This is my first Apple Mac OSX computer I ever purchased that I still use today and is still working great.  I use it mostly for compiling software.

Wednesday, December 11, 2024

New office/computer lab done!

My new office/computer lab is done!
This is my 7 to 1 KVM setup that I spent only $83 on. It manages all but two of my computers and soon my C64. Video connections left to right - ThinkPad, HP, TI-99/4A, Atari, Mac OSX

Then I have my HP media server and my RCA android dev computer.  

New desk, cabinets, and book shelves. 

Friday, December 6, 2024

Macro Assembler versus "Computer Intro!" Assembler for Odyssey2

First, lets look at the Macro Assembler "Hello World"
  cpu   8048              ; using the Intel 8048 CPU
  org   400h
  include "g7000.h"       ; common developer header
  jmp   myinit            ; go directly to myinit and skip start screen
  jmp   irq
  jmp   timer             ; required to have here, but not to use
  jmp   vsyncirq
  jmp   start             ; start of the app code 
  jmp   soundirq

myinit
  call init

timer
                          ; not used

start
  call gfxoff             ; turn off graphics mode while we paint
  mov r0,#vdc_char0       ; using #0 of the graphic character set
  mov r3,#20h             ; set the x
  mov r4,#20h             ; set the y
  mov r2,#0Bh             ; set to 11 characters long
  mov r1,#hellostr & 0FFh ; point to the string we will read 0FF is the terminator

loop
 mov a,r1                 ; move character into the accumulator
 movp a,@a                ; memory move the accumulator
 mov r5,a                 ; put the accumulator into register 5 where the call 
                          ; to vdc_char0 is stored to display
 inc r1                   ; ready for next character
 mov r6,#col_chr_white    ; register 6 is where vdc_char0 looks for color
 call printchar           ; display character
 djnz r2,loop             ; is register 2 in loop at 11 yet, if not continue loop
 call gfxon               ; turn on graphics mode
 
 stop
  jmp   stop

hellostr
  db   1Dh, 12h, 0Eh, 0Eh, 17h, 0Ch
  db   11h, 17h, 13h, 0Eh, 1Ah

Now lets look at "Computer Intro!" Assembler for Odyssey2
00 6B LDV.B.00       ;Load display register B with position 00
01 00
02 60 LDV.0.00       ;load register 0 with NULL
03 00
04 6C LDV.C.12       ;Load data space register C with step 12
05 12
06 09 MOV            ;Move data space to accumulator
07 30 BEQ.0.24       ;If NULL goto end
08 24
09 0B OTA            ;Display accumulator
10 12 GTO.06         ;go back to move at step 06   
11 06
12 1D                ;H  Start of data space
13 12                ;E
14 0E                ;L
15 0E                ;L
16 17                ;O
17 0C                ;space
18 11                ;W 
19 17                ;O
20 13                ;R
21 0E                ;L
22 1A                ;D
23 00                ;NULL  end of string
24 00 NOP            ;No operation, just a place to land
Both Hello Worlds have major differences while working mostly the same and using the same character set.

Tuesday, December 3, 2024

Less than a week

Less than a week before I get my new office/computer play ground (if you will).
I will have new cabinets, desk, storage, wire management, conduit, network switches, monitor switches, USB hubs and switches, ect....

I'm becoming quite familiar with the Magnavox Odyssey2 computer and realizing it is well within my means to create software for it now. I'm hoping to create one of the best manuals for this also.

http://mrgibson.com/

Merry Christmas!