金-1,50岁生日快乐!
Happy 50th Birthday KIM-1

原始链接: https://github.com/netzherpes/KIM1-Demo

这个项目是一个庆祝MOS KIM-1 50周年的演示,KIM-1是一款1976年1月发布的开创性微型计算机。该演示基于现有代码组件构建,旨在重现早期计算的精神,并促进复古计算社区的合作。 创建者邀请爱好者通过添加模块、演示和改进来贡献项目。一个关键特性是KIM-1终端上精确光标定位的程序。这允许绘制形状,并有可能通过将十六进制内存坐标转换为终端所需的单字符输入来构建简单的图形程序——将X和Y定位的十位和个位数字分开。 该项目是对“黑客”精神的号召,鼓励在2026年继续实验和发展复古计算领域。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 祝KIM-1 50岁生日快乐 (github.com/netzherpes) 9点 由 JKCalhoun 1小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:
相关文章

原文

A small but heartfelt demo celebrating the 50th birthday of the legendary MOS KIM-1 🖥️✨

The KIM-1 first became available in January 1976
three months before the Apple I 🍎 and one month after its sibling, the TIM.
An incredible milestone in early microcomputer history!

For this demo, I’ve gathered and connected a few components that were scattered across my repositories 🧩.
The goal is not just to look back, but to celebrate, experiment, and build together.

I warmly invite fellow retro-computing enthusiasts and comrades-in-arms 🤝
to jump in, contribute ideas, add modules, demos, or improvements, and help this project grow.

Let’s keep the spirit of early computing alive 🚀


🎉 HAPPY BIRTHDAY, KIM-1! 🎉
Wishing you — and all of us — a fantastic and hacky Year 2026 🥳✨

kim-1_demo.mp4

Things that are very useful in this code:

Take any coordinates in HEX out of the memory and use them to place your cursor. The problem is, that to position your cursur, you need to send the x/y coordinates as single chars to the terminal program, like (ESC)[xx;yyH - Imagine just having hex data, i.e. $20 (32 dec) and you need to send a 3 and a 2 separated to your terminal... This routine will do it - seperate the tens from the ones. Now you can like draw a rectangle, a circle or whatever. You can start a painting program if you like.

; ANSI Cursor positionieren (Row ; Col)
GOTOXY:
          LDA #$1B      ; ESC
          JSR CHOUT
          LDA #$5B      ; '['
          JSR CHOUT
          
          LDA CURY      ; Row zuerst
          JSR PUTDEC
          
          LDA #$3B      ; ';'
          JSR CHOUT
          
          LDA CURX      ; Column danach
          JSR PUTDEC
          
          LDA #$48      ; 'H'
          JSR CHOUT
          RTS

; Dezimalzahl ausgeben (A-Register, 0-99)
; Benutzt TEMP als temporäre Variable
PUTDEC:
          STA TEMP      ; Wert sichern
          LDY #0        ; Zehner-Zähler
          
PUTDEC_T: CMP #10
          BCS PUTDEC_S  ; >= 10
          JMP PUTDEC_D
PUTDEC_S: SEC
          SBC #10
          INY
          JMP PUTDEC_T
          
PUTDEC_D: ; A enthält Einer
          TAX           ; Einer nach X retten
          
          TYA           ; Zehner
          BNE PUTDEC_Z  ; Wenn nicht 0
          JMP PUTDEC1
PUTDEC_Z: CLC
          ADC #$30      ; In ASCII umwandeln
          JSR CHOUT
          
PUTDEC1:  TXA           ; Einer zurück
          CLC
          ADC #$30      ; In ASCII umwandeln
          JSR CHOUT
          
          LDA TEMP      ; Original wiederherstellen
          RTS
联系我们 contact @ memedata.com