mirror of https://github.com/mist64/cbmsrc.git
Michael Steil
4 years ago
6 changed files with 4195 additions and 1 deletions
@ -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 |
Loading…
Reference in new issue