Browse Source

added MONITOR_AIM65

pull/5/head
Michael Steil 4 years ago
parent
commit
85df2770c6
  1. 1244
      MONITOR_AIM65/a1
  2. 1273
      MONITOR_AIM65/a2
  3. 1408
      MONITOR_AIM65/a3
  4. 263
      MONITOR_AIM65/pa00-j001a
  5. 7
      README.md
  6. 1
      build.sh

1244
MONITOR_AIM65/a1

File diff suppressed because it is too large Load Diff

1273
MONITOR_AIM65/a2

File diff suppressed because it is too large Load Diff

1408
MONITOR_AIM65/a3

File diff suppressed because it is too large Load Diff

263
MONITOR_AIM65/pa00-j001a

@ -0,0 +1,263 @@
;***************************************************
;***************************************************
;** **
;** PL-PA00-J001A **
;** **
;** ROCKWELL R6500 MICROCOMPUTER SYSTEM **
;** **
;** AIM 65 MONITOR **
;** **
;** PROGRAM LISTING **
;** **
;** REVISION A AUG 27, 1978 **
;** **
;***************************************************
;***************************************************
;ROCKWELL INTERNATIONAL
;MICROELECTRONIC DEVICES
;3310 MIRALOMA AVENUE
;P. O. BOX 3669
;ANAHEIM CA U.S.A. 92803
.PAGE 'USER 6522 I/O'
; **************************************
; * USER 6522 ADDRESSES (A000-A00F) *
; **************************************
*=$A000
UDRB *=*+1 ;DATA REG B
UDRAH *=*+1 ;DATA REG A
UDDRB *=*+1 ;DATA DIR REG B
UDDRA *=*+1 ;DATA DIR REG A
UT1L *=*+1 ;TIMER 1 COUNTER LOW
UT1CH *=*+1 ;TIMER 1 COUNTER HIGH
UT1LL *=*+1 ;TIMER 1 LATCH LOW
UT1LH *=*+1 ;TIMER 1 LATCH HIGH
UT2L *=*+1 ;TIMER 2 LATCH & COUNTER LOW
UT2CH *=*+1 ;TIMER 2 COUNTER HIGH
USR *=*+1 ;SHIFT REGISTER
UACR *=*+1 ;AUX CONTROL REGISTER
UPCR *=*+1 ;PERIPHERAL CONTROL REGISTER
UIFR *=*+1 ;INTERRUPT FLAG REGISTER
UIER *=*+1 ;INTERRUTP ENABLE REGISTER
UDRA *=*+1 ;DATA REGISTER A
.PAGE 'MONITOR VARIABLES'
ASSEM =$D000 ;ASSEMBLER ENTRY
BASIEN =$B000 ;BASIC ENTRRY (COLD)
BASIRE =$B003 ;BASIC REENTRY (WARM)
; MONITOR RAM
;TEXT EDITOR EQUATES (PAG 0)
;OVERLAPS IABUF2+50 (TAPE OUTPUT BUFFER $AD-$FF)
*=$00DF
NOWLN *=*+2 ;CURENT LINE
BOTLN *=*+2 ;LAST ACTIVE , SO FAR
TEXT *=*+2 ;LIMITS OF BUFFER (START)
END *=*+2 ;LIMITS OF BUFFER (END)
SAVE *=*+2 ;USED BY REPLACE
OLDLEN *=*+1 ;ORIG LENGTH
LENGTH *=*+1 ;NEW LENGTH
STRING *=*+20 ;FIND STRING
*=$0100
;BREAKPOINTS AND USER I/O HANDLERS
BKS *=*+8 ;.BRK LOCATIONS
UIN *=*+2 ;USER INPUT HANDLER (VECTOR)
UOUT *=*+2 ;USER OUTPUT HANDLER (VECTOR)
;UNUSED KEYS TO GO TO USER ROUTINE
KEYF1 *=*+3 ;USER PUTS A JMP INSTRUCTION TO...
KEYF2 *=*+3 ;GO TO HIS TOURINE ON EITHER KEY..
KEYF3 *=*+3 ;ENTRY
;EQUATES FRO DISASSEMBLER (PAG 1)
*=$0116 ;SAME AS TAPE BUFFER I/O (TARBUFF)
FORMA *=*+1
LMNEM *=*+1
RMNEM *=*+14
;EQUATES FOR MNEMONIC ENTRY
MOVAD *=*+8
TYPE *=*+2
TMASK1 =MOVAD
TMASK2 =MOVAD+1
CH *=*+3
ADFLD *=*+20
HISTM =$A42E ;SHARE WITH NAME & HIST
BYTESM =HISTM+1
TEMPX =HISTM+3
TEMPA =HISTM+5
OPCODE =HISTM+6
CODFLG =HISTM+9
; **********************************
; * 6532 ADDRESSES (A400-A7FF) *
; **********************************
*=$A400
MONRAM *=*+0
;JUMP VECTORS
IRQV4 *=*+2 ;IRQ AFTER MONITOR (NO BRK)
NMIV2 *=*+2 ;NMI
IRQV2 *=*+2 ;IRQ
;I/O DEVICES
DILINK *=*+2 ;DISPL LINKAGE (TO ECHO TO DISP)
TSPEED *=*+1 ;TAPE SPEED (C7,5B,5A)
GAP *=*+1 ;TIMING GAP BETWEEN BLOCK
;END OF USER ALTERABLE LOCATIONS
NPUL *=*+1 ;# OF HALF PULSES...
TIMG *=*+3 ;FOR TAPE
REGF *=*+1 ;REGS FLG FOR SINGLE STEP MODE
DISFLG *=*+1 ;DISASSEM FLG FOR SINGLE STEP MODE
BKFLG *=*+1 ;ENABLE OR DIS BREAKPOINTS
PRIFLG *=*+1 ;ENABLE OR DIS PRINTER
INFLG *=*+1 ;INPUT DEVICE
OUTFLG *=*+1 ;OUTPUT DEVICE
HISTP *=*+1 ;HISTORY PTR (SINGLE STEP) (Y)
CURPO2 *=*+1 ;DISPLAY POINTER
CURPOS *=*+1 ;PRINTER POINTER
CNTH30 *=*+1 ;BAUD RATE & ...
CNTL30 *=*+1 ;DELAY FOR TTY
COUNT *=*+1 ;# OF LINES (0-99)
S1 *=*+2 ;START ADDRESS
ADDR *=*+2 ;END ADDRESS
CKSUM *=*+2 ;CHECKSUM
S2 =BKS+6 ;VERTICAL COUNT (ONLY ON DUMP)
;MONITOR REGISTERS
SAVPS *=*+1 ;STATUS
SAVA *=*+1 ;ACCUM
SAVX *=*+1 ;X REG
SAVY *=*+1 ;Y REG
SAVS *=*+1 ;STACK POINTER
SAVPC *=*+2 ;PROGR COUNTER
;WORK AREAS FOR PAGE ZERO SIMULATION
;SIMULATE LDA (NNNN),Y ,WHERE NNNN IS ABSOLUTE
STIY *=*+3 ;STA NM,Y
CPIY *=*+3 ;CMP NM,Y OR LDA NM,Y
*=*+1 ;RTS
LDIY =CPIY
;VARIABLES FOR TAPE
NAME *=*+6 ;FILE NAME
TAPIN *=*+1 ;IN FLG (TAPE 1 OR 2)
TAPOUT *=*+1 ;OUT FLG (TAPE 1 OR 2)
TAPTR *=*+1 ;TAPE BUFF POINTER
TAPTR2 *=*+1 ;TAPE OUTPUT BUFF PTR
HIST =NAME ;FOUR LAST ADDR + NEXT (SINGL STEP)
BLK =$0115 ;BLOCK COUNT
TABUFF =$0116 ;TAPE BUFFER (I/O)
BLKO =$0168 ;OUTPUT BLOCK COUNT
TABUF2 =$00AD ;OUTPUT BUFF WHEN ASSEMB (PAG0)
DIBUFF *=*+40 ;DISPLAY BUFFER
;VARIABLES USED IN PRINTING
IBUFM *=*+20 ;PRINTER BUFFER
IDIR *=*+1 ;DIRECTION == 0=>+ , FF=>-
ICOL *=*+1 ;COLUMN LEFTMOST=0,RIGHTMOST=4
IOFFST *=*+1 ;OFFSET 0=LEFT DGT,1=RIGHT DGT
IDOT *=*+1 ;# OF LAST DOT ENCOUNTERED
IOUTL *=*+1 ;LOWER 8 OUTPUTS(9 COLS ON RIGHT)
IOUTU *=*+1 ;UPPER 2 DIGITS
IBITL *=*+1 ;1BIT MSK FOR CURRENT OUTPUT
IBITU *=*+1
IMASK *=*+1 ;MSK FOR CURRENT ROW
JUMP *=*+2 ;INDIR AND ADDR OF TABL FOR CURR ROW
;VARIABLES FOR KEYBOARD
ROLLFL *=*+1 ;SAVE LAST STROBE FOR ROLLOVER
KMASK =CPIY ;TO MASK OFF CTRL OR SHIFT
STBKEY =CPIY+1 ;STROBE KEY (1-8 COLUMNS)
; I/O ASSIGNMENT
*=$A480
DRA2 *=*+1 ;DATA REG A
DDRA2 *=*+1 ;DATA DIR REG A
DRB2 *=*+1 ;DATA REG B
DDRB2 *=*+1 ;DATA DIR REG B
; WRITE EDGE DETECT CONTROL (NOT USED BECAUSE OF KB)
*=$A484
DNPA7 *=*+1 ;DISABLE PA7 INT .NEG EDGE DET
DPPA7 *=*+1 ;DIS PA7 INT ,POS EDGE DETE
ENPA7 *=*+1 ;ENA PA7 INT ,NEG EDGE DET
EPPA7 *=*+1 ;ENA PA7 INT ,POS EDG DET
; READ AND CLEAR INTERRUPT
*=$A485
RINT *=*+1 ;BIT 7=TIMER FLG , NBIT 6=PA7 FLG
; TIMER INPTERRUPT
*=$A494
;WRITE COUNT TO INTERVAL TIMER
;INTERRUPT DISABLE FOR THESE ADDRS
DIV1 *=*+1 ;DIV BY 1 (DISABLE);ADD 8 TO ENA
DIVB *=*+1 ;DIV BY 8 (DIS) ; ADD 8 TO ENA
DIV64 *=*+1 ;DIV BY 64 (DIS) ; ADD 8 TO ENA
DI1024 *=*+1 ;DIV BY 1024 (DIS) ; ADD 8 TO ENA
; **********************************************
; * 6522 ADDRESSES (MONIT) (A800-ABFF) *
; **********************************************
*=$A800
DRB *=*+1 ;DATA REG B
DRAH *=*+1 ;DATA REG A
DDRB *=*+1 ;DATA DIR REG B
DDRA *=*+1 ;DATA DIR REG B
T1L *=*+1 ;TIMER 1 COUNTER LOW
T1CH *=*+1 ;TIMAER 1 COUNTER HIGH
T1LL *=*+1 ;TIMER 1 LATCH LOW
T1LH *=*+1 ;TIMER 1 LATCH HIGH
T2L *=*+1 ;TIMER 2 LATCH & COUNTER LOW
T2H *=*+1 ;TIEMR 2 COUNTER HIGH
SR *=*+1 ;SHIFT REGISTER
ACR *=*+1 ;AUX CONTROL REGISTER
PCR *=*+1 ;PERIPHERAL CONTROL REGISTER
IFR *=*+1 ;INTERRUPT FLAG REGISTER
IER *=*+1 ;INTERRUPT ENABLE REGISTER
DRA *=*+1 ;DATA REGISTER A
;DEFINE I/O CONTROL FOR PGR (CA1,CA2,CB1,CB2)
DATIN =$0E ;DATA IN CA2=1
DATOUT =$0C ;DATA OUT DA2=0
PRST =$00 ;PRINT START (CB1) ,NEG DETEC
SP12 =$01 ;STROBE P1,P2 (CA1) ,POS DETEC
MON =$C0 ;MOTOR ON (CB2 = 0)
MOFF =$E0
;MSKS TO OBTAIN EACH INTERRUPT
MPRST =$10 ;INT FLG FOR DB1
MSP12 =$02 ;INT FLG FRO CA1
MT2 =$20 ;INT FLAG FOR T2
;DEFINE I/O CONTROL FOR ACR (TIMERS,SR)
PRTIME =1700 ; PRINTING TIME =1.7 MSEC
DEBTIM =5000 ; DEBOUNCE TIME (5 MSEC)
T2I =$00 ;T2 AS ONE SHOT (PRI,KB,TTY,TAPE)
T1I =$00 ;T1 AS ONE SHOT ,PB7 DIS (TAPES)
T1FR =$C0 ;T1 IN FREE RUNNING (TAPE)
; ******************************
; * DISPLAY (AC00-AFFF) *
; ******************************
; REGISTERS FOR DISPLAY (6520)
*=$AC00
RA *=*+1 ;REGISTER A
CRA *=*+1 ;CONTROL REG A
RB *=*+1 ;REGISTER B
CRB *=*+1 ;CONTROL REG B
;CHR 00-03 ENA BY $AC04-AC07
;CHR 04-07 ENA BY $AC08-AC0B
;CHR 08-11 ENA BY $AC10-AC13
;CHR 12-15 ENA BY $AC20-AC23
;CHR 16-20 ENA BY $AC40-AC43
NULLC =$FF
CR =$0D
LF =$0A
ESCAPE =$1B
RUB =$08
EQS =$BD
.FILE A1

7
README.md

@ -4,11 +4,12 @@ This repository collects the *original* source code of various Commodore Busines
Using [kernalemu](https://github.com/mist64/kernalemu) and [cbm6502asm](https://github.com/mist64/cbm6502asm), almost all source in this repo can be built from the UNIX command line. To build everything, run `build.sh` from the Unix command line, on a case-insensitive filesystem.
## KIM-1
## KIM-1/AIM-65
| Directory | Year | Comments |
|--------------------------------------------------------------|------|-------------|
| [MONITOR_KIM](MONITOR_KIM) | 1975 | KIM-1 ROM (6530-002, 6530-003) |
| [MONITOR_AIM65](MONITOR_AIM65) | 1978 | AIM-65 monitor |
| [TIM](TIM) | 1976 | TIM ROM (6530-004) |
## PET
@ -419,6 +420,10 @@ The OBJ Loader of the C64 Macro Assembler, version V072882. Extracted from [c64_
The KIM-1 "monitor" ROM (1975), i.e. 6530-002 and 6530-003. From the [Hans Otten reconstructed source from the KIM-1 users manual](http://retro.hansotten.nl/uploads/6502docs/usrman.htm).
### MONITOR_AIM65
The AIM-65 "monitor" ROM (1978), i.e. R3222 and R3223-11. From the [reconstructed source](http://retro.hansotten.nl/uploads/files/aimmon_tasm.zip) from the [monitor listing printout](http://retro.hansotten.nl/uploads/files/aim65_monitor.pdf). Corrected and fixed up to match the LST.
### KIMATH
The KIM-1 "KIMATH" math package (1976). Generated from the [original LST printout](http://retro.hansotten.nl/uploads/files/kimath.ZIP), and the .asm reconstruction by C. Bond from the same package.

1
build.sh

@ -58,6 +58,7 @@ rm -rf build
mkdir build
build1 MONITOR_KIM kim.asm
build1 MONITOR_AIM65 pa00-j001a
build1 TIM tim.asm
build1 KIMATH kimath.asm

Loading…
Cancel
Save