713 lines
17 KiB
NASM
Executable File
713 lines
17 KiB
NASM
Executable File
FDRET LDU #RAMERJ RAM ERROR RETURN
|
|
BRA FDROM0
|
|
|
|
FDROM LDU #DIG11Z
|
|
FDROM0 LDS #HSTK
|
|
FDROM5 LDY #FDROM6
|
|
LDA #1
|
|
JMP DELA1
|
|
FDROM6 LDA PIA0
|
|
BITA #$2
|
|
BNE FDROM5
|
|
FDROM1 LDY #FDROM7
|
|
LDA #1
|
|
JMP DELA1
|
|
FDROM7 LDA PIA0
|
|
BITA #$2
|
|
BEQ FDROM1
|
|
FDROM2 LDY #FDROM8
|
|
LDA #1
|
|
JMP DELA1
|
|
FDROM8 LDA PIA0
|
|
BITA #2
|
|
BNE FDROM2
|
|
JMP ,U
|
|
|
|
AVWAIT PULS D
|
|
LDU CRPROC
|
|
STD PD+6,U
|
|
AVWAIZ LDA PIA0 SEE IF ADVANCE PRESSED
|
|
BITA #$2 WELL??
|
|
BNE AVWAT2
|
|
NAP 1,AVWAIZ WELL, WAIT FOR IT.
|
|
AVWAT2 CLR PCRAM
|
|
JSR SCRCLR
|
|
BRA AVWAT5
|
|
AVWAT4 LDA PIA0
|
|
BITA #$2 WAIT FOR IT TO BE RELEASED
|
|
BEQ AVWAT3
|
|
AVWAT5 NAP 2,AVWAT4
|
|
AVWAT3 JMP [PD+6,U]
|
|
|
|
AVCHK PSHS A
|
|
LDA PIA0
|
|
BITA #$2
|
|
BEQ AVCHK1
|
|
SEC
|
|
PULS A,PC
|
|
AVCHK1 CLC
|
|
PULS A,PC
|
|
|
|
*
|
|
* DISPLAY BOOKKEEPPING
|
|
*
|
|
|
|
BOOK LDA #$FF
|
|
STA STATUS
|
|
JSR INITCM COLOR MATRIX PROPER.
|
|
BSR AVCHK
|
|
BCC BOOK3
|
|
BSR AVWAIT WAIT FOR HIM TO LET GO.
|
|
BOOK3 LDA #BOOKM
|
|
JSR WRD7V PRINT THE BOOKKEEPING MESSAGE
|
|
LDU #SLOT1
|
|
LDA #AUDMES FIRST OF THE AUDIT MESSAGES
|
|
BOOK0 PSHS A SAVE MESSAGE NUMBER
|
|
JSR WRD7V PRINT IT.
|
|
EXG U,X
|
|
JSR RCMOSB GET THE TOP BYTE
|
|
PSHS B
|
|
JSR RCMOSD
|
|
TFR D,Y
|
|
PULS B
|
|
EXG U,X
|
|
BSR BOOKSB PRINT B,Y WITH APPROPRIATE BLANKING
|
|
|
|
PULS A RESTORE A
|
|
INCA
|
|
CMPU #BKEND
|
|
BLO BOOK0 THANK YOU SIR, MAY I HAVE ANOTHER??
|
|
*
|
|
* COMPUTE AVERAGE PLAY TIME, AVERAGE LIVES PER GAME
|
|
*
|
|
|
|
LDA #AVTIM
|
|
JSR WRD7V
|
|
|
|
PSHS X
|
|
LDX #BKTIME
|
|
LDY #BKPLAY PLAYS
|
|
JSR BCDIV DO THE DIVIDE
|
|
PULS X
|
|
|
|
LDB QUO GET TOP OF QUOTIENT
|
|
LDY QUO+1
|
|
|
|
BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING
|
|
|
|
LDA QUO+3 GET 100THS
|
|
ANDA #$F 1/10
|
|
STA DVTEMP SAVE
|
|
|
|
LDA QUO+3
|
|
BITA #$10 1 IN THE 10'S
|
|
BEQ BOOK45
|
|
|
|
ANDA #$EF TAKE THE BIT AWAY
|
|
LSRA 1/2
|
|
ADDA #5 RESTORE THE WHATEVER
|
|
DAA
|
|
BRA BOOK46
|
|
|
|
BOOK45 LSRA 1/2
|
|
BOOK46 ADDA DVTEMP ADD THE 1/10
|
|
DAA
|
|
TFR A,B
|
|
|
|
LDA #AVTEND
|
|
JSR WRD7V PUT OUT : END
|
|
|
|
LDA #AVPLA
|
|
JSR WRD7V
|
|
|
|
PSHS X
|
|
LDX #BKMEN
|
|
LDY #BKPLAY PLAYS
|
|
BSR BCDIV DO THE DIVIDE
|
|
PULS X
|
|
|
|
LDB QUO GET TOP OF QUOTIENT
|
|
LDY QUO+1
|
|
|
|
BSR BOOKSB PRINT OUT TH 6 WITH THE RITE KIND OF BLANKING
|
|
|
|
LDB QUO+3 GET 100THS
|
|
LDA #AVPLEN
|
|
JSR WRD7V
|
|
|
|
JSR AVWAIT
|
|
JMP ADJV NOW GO DO ADJUSTMENT MODE
|
|
|
|
BOOKSB TSTB
|
|
BEQ BOOK1
|
|
LDA #AUDM1
|
|
JSR WRD7V FULL SIX DIGITS USED
|
|
LDA #AUDM2
|
|
JSR WRD7V
|
|
BRA BOOK2
|
|
BOOK1 LDA #AUDM3
|
|
JSR WRD7V
|
|
BOOK2 RTS
|
|
|
|
CBCDA PSHS B
|
|
JSR RCMOSA GET THE BYTE
|
|
TFR A,B
|
|
ANDA #$F
|
|
CMPA #$9
|
|
BLS CMCDB
|
|
LDA #9
|
|
CMCDB ANDB #$F0
|
|
CMPB #$90
|
|
BLS CMCDC
|
|
LDB #$90
|
|
CMCDC PSHS B
|
|
ORA ,S+
|
|
PULS B,PC
|
|
|
|
* DIVIDE - PASS X POINTS AT DIVIDEND
|
|
* PASS Y POINTS AT DIVISOR
|
|
* QUOTIENT 4 BYTES AT QUO IN BCD WITH 100THS
|
|
* QUO: QQ QQ QQ . DD
|
|
|
|
BCDIV PSHS X,Y,D,U
|
|
LDD #0
|
|
STD QUO
|
|
STD QUO+2 ZERO QUOTIENT IN CASE OF ZERO DIVIDE
|
|
|
|
BSR CBCDA GET 2 BYTES OF DIVIDEND
|
|
STA DIV
|
|
BSR CBCDA
|
|
STA DIV+1
|
|
BSR CBCDA
|
|
STA DIV+2
|
|
LDD #0
|
|
STA DIV+3
|
|
STD DIV+4
|
|
STA DIVSOR+3
|
|
STD DIVSOR+4
|
|
|
|
TFR Y,X POINT AT DIVISOR
|
|
JSR CBCDA
|
|
STA DIVSOR
|
|
JSR CBCDA
|
|
STA DIVSOR+1
|
|
JSR CBCDA
|
|
STA DIVSOR+2
|
|
|
|
BNE BCDIV1 NOT ZERO....WE MAY CONTIUE
|
|
|
|
LDD DIVSOR CHECK FOR ALL ZERO
|
|
BEQ DIVEX EXIT...ZERO DIVISOR
|
|
|
|
BCDIV1 LDU #QUO+2 POINT AT UNITS QUOTIENT VALUE
|
|
|
|
BCDIV4 TST DIVSOR WE NEED TO SHIFT DIVISOR DOWN
|
|
BNE BCDIV2 ITS IN THE RANGE WE LIKE
|
|
|
|
LEAU -1,U MOVE TO PROPER SIGNIF
|
|
|
|
LDB #5 BYTES TO SHIFT
|
|
LDX #DIVSOR
|
|
BCDIV3 LDA 1,X
|
|
STA 0,X+
|
|
DECB
|
|
BNE BCDIV3
|
|
CLR ,X SHIFT IN ZEROS
|
|
|
|
BRA BCDIV4
|
|
|
|
BCDIV2 LDX #DIV
|
|
|
|
BCDIV5 BSR SUBME DO A SUBTRACT
|
|
BCC BCDIV5 DONE WITH THIS DIGIT
|
|
|
|
LDY #DIVSOR+5 LAST DIGIT
|
|
LDB #5 SHIFT 3 DOWN
|
|
|
|
BCDIV6 LDA -1,Y GET PREVIOUS BYTE
|
|
STA ,Y
|
|
LEAY -1,Y PUSH BACK
|
|
DECB
|
|
BNE BCDIV6
|
|
CLR ,Y SHIFTED
|
|
|
|
LEAU 1,U
|
|
CMPU #QUO+3 LAST QUO BYTE
|
|
BLS BCDIV5
|
|
DIVEX PULS X,Y,D,U,PC
|
|
|
|
SUBME LDY #DIVSOR POINT AT DIVISOR
|
|
LDA #0 MAKE SURE WE FIT
|
|
SUBM1 LDB A,X GET DIVIDEND BYTE (MUST BE LARGER)
|
|
SUBB ,Y+ WELL??
|
|
BHI SUBGO IT IS
|
|
BLO SUBBYE IT ISN'T..DONE
|
|
|
|
INCA
|
|
CMPA #6
|
|
BLO SUBM1
|
|
|
|
SUBGO LDB #6
|
|
LDY #DIVTMP
|
|
SUBGO1 LDA #$99 GET A BYTE
|
|
SUBA 6,Y
|
|
STA ,Y+
|
|
DECB
|
|
BNE SUBGO1
|
|
|
|
LDB #6
|
|
CLC
|
|
LDA #1
|
|
SUBGO2 ADCA ,-Y
|
|
DAA
|
|
STA ,Y AND STORE BACK
|
|
LDA #0
|
|
DECB
|
|
BNE SUBGO2
|
|
|
|
LDB #5 INITIAL OFFSET WHILE WALKING
|
|
LDY #DIVTMP+6
|
|
CLC
|
|
SUBGO3 LDA ,-Y GET THE SUBTREHEND
|
|
ADCA B,X "SUBTRACT" FROM DIVISOR
|
|
DAA
|
|
STA B,X STORE BACK TO DIVISOR
|
|
DECB
|
|
BPL SUBGO3
|
|
LDA ,U GET CURRENT QUOTIENT BYTE
|
|
ADDA #1
|
|
DAA
|
|
STA ,U KICK IT
|
|
CLC
|
|
RTS
|
|
|
|
SUBBYE SEC
|
|
RTS
|
|
|
|
*
|
|
* SOUND TEST
|
|
*
|
|
|
|
SNDSRT JSR SCRCLR CLEAR THE SCREEN
|
|
SNDSR1 LDD #$FE01 SET UP FOR SOUND LINE 1
|
|
STD PD,U
|
|
RTS
|
|
|
|
SNDCYC PULS D
|
|
STD PD+6,U
|
|
LDA #$3F
|
|
STA SOUND
|
|
NAP 1,SNDC55
|
|
SNDC55 LDA #$2C
|
|
STA SOUND
|
|
NAP 1,SNDCY6
|
|
SNDCY6 LDA #$3F
|
|
STA SOUND
|
|
NAP 1,SNDCY1
|
|
SNDCY1 LDD PD,U
|
|
ANDA #$3F
|
|
STA SOUND
|
|
LDA #SNDTEX
|
|
JSR WRD7V
|
|
LDA #$40
|
|
STA PD+4,U
|
|
SNDCY4 NAP 1,SNDCY5
|
|
SNDCY5 JSR AVCHK ADVANCE???
|
|
BCS SNDCY3 THEN GO
|
|
DEC PD+4,U
|
|
BNE SNDCY4
|
|
SNDCY3 LDA PD+2,U SEE WHO SET THIS UP??
|
|
BNE SNDC90 AUTOCY DID....ALWAYS ADVANCE
|
|
LDA PIA0 CHECK MANUAL/AUTO
|
|
RORA
|
|
BCC SNDC91 MANUAL...DON'T MOVE ON.
|
|
SNDC90 LDD PD,U
|
|
SEC
|
|
ROLA MOVE TO NEXT LINE
|
|
INCB
|
|
CMPB #7 UP TO LINE 7??
|
|
BLO SNDCY2
|
|
BSR SNDSR1
|
|
SNDCY2 STD PD,U
|
|
SNDC91 JMP [PD+6,U]
|
|
|
|
*
|
|
* CMOS RAM TEST
|
|
*
|
|
|
|
CMTEST LDX #CMOS
|
|
LDY #RAMALS USE SAMRAM
|
|
CMTST1 LDA ,X+ DON'T DO DOUBLES BECAUSE OF HARDWARE BRAIN DAM.
|
|
STA ,Y+
|
|
CMPX #CMOS+$400 DONE??
|
|
BNE CMTST1
|
|
LDB #6 ENOUGH ITERATIONS TO ASSURE
|
|
ORCC #$3F STOP INTERRUPTS
|
|
CMTST2 LDU HSEED
|
|
LDY SEED
|
|
LDX #CMOS
|
|
CMTST3 JSR RAND
|
|
STA ,X+
|
|
LDA #WDATA
|
|
STA WDOG
|
|
CMPX #CMOS+$400 DONE??
|
|
BNE CMTST3
|
|
STY SEED RESTORE SEED
|
|
STU HSEED
|
|
LDX #CMOS
|
|
CMTST4 JSR RAND
|
|
EORA ,X+
|
|
ANDA #$F
|
|
BNE CMEROR
|
|
LDA #WDATA
|
|
STA WDOG
|
|
CMPX #CMOS+$400
|
|
BNE CMTST4
|
|
DECB ANOTHER PASS...DONE??
|
|
BNE CMTST2
|
|
BSR RAMBAK
|
|
CLC CLEAR IT FOR REAL
|
|
RTS AND RETURN
|
|
|
|
RAMBAK LDU #RAMALS
|
|
LDY #CMOS
|
|
RAMBK0 LDA ,U+
|
|
STA ,Y+
|
|
CMPY #CMOS+$400
|
|
BNE RAMBK0
|
|
RTS
|
|
|
|
CMEROR BSR RAMBAK
|
|
SEC
|
|
RTS
|
|
|
|
* RAM TEST....Y = PLACE TO RETURN IF NO ERROR
|
|
* X = SEED TO START WITH
|
|
* A = ITERATIONS TO MAKE
|
|
|
|
RAMTST ORCC #$3F NO INTERRUPTS DURING TEST
|
|
CLR RWCNTL SET TO RAM READ
|
|
TFR A,DP COUNT AT DP.
|
|
TFR X,D START WITH A PASSED SEED.
|
|
RAM2 TFR D,U SAVE THE SEED
|
|
RAM0 LDX #0 MEMORY POINTER
|
|
RAM3 COMB DONT ASK
|
|
BITB #9
|
|
BNE RAM4
|
|
COMB
|
|
RORA
|
|
RORB
|
|
BRA RAM6
|
|
RAM4 COMB
|
|
BITB #9
|
|
BNE RAM5
|
|
RORA
|
|
RORB
|
|
BRA RAM6
|
|
RAM5 LSRA
|
|
RORB
|
|
RAM6 STD ,X++
|
|
EXG X,D SINCE IRQ RUNS OUT OF RAM, STROKE ROVER
|
|
TSTB
|
|
BNE RAM6B EVERY 256!
|
|
LDB #WDATA
|
|
STB WDOG HAVE A BONE..EVER BEEN BONED.....
|
|
TFR DP,B CHECK IS NORMAL DIAGS
|
|
CMPB #$FF FF MEANS FRONT DOOR
|
|
BNE RAM6C
|
|
LDB PIA0 CHECK FOR ADV.
|
|
BITB #2
|
|
BEQ RAM6C NOT PRESSED.
|
|
JMP ,Y TIME TO RETURN
|
|
RAM6C CLRB RETURN B TO ZERO
|
|
RAM6B EXG X,D TRADE BACK
|
|
CMPX #RAMTOP DONE??
|
|
BNE RAM3 NOPE..CONTINUE
|
|
*
|
|
TFR U,D RESTORE SEED.
|
|
LDX #0
|
|
RAM7 COMB
|
|
BITB #9
|
|
BNE RAM8
|
|
COMB
|
|
RORA
|
|
RORB
|
|
BRA RAM10
|
|
RAM8 COMB
|
|
BITB #9
|
|
BNE RAM9
|
|
RORA
|
|
RORB
|
|
BRA RAM10
|
|
RAM9 LSRA
|
|
RORB
|
|
RAM10 CMPD ,X++
|
|
BNE RERROR RAM ERROR!
|
|
RAM25 EXG X,D CHECK FOR END OF PAGE
|
|
TSTB
|
|
BNE RAM17
|
|
LDB #WDATA
|
|
STB WDOG
|
|
TFR DP,B SEE IF NORMAL RUN
|
|
CMPB #$FF FRONT DOOR??
|
|
BNE RAM17C NOPE
|
|
LDB PIA0 CHECK ADV.
|
|
BITB #2
|
|
BEQ RAM17C
|
|
JMP ,Y JUST RETURN (NO ERRORS)
|
|
RAM17C CLRB
|
|
RAM17 EXG X,D TRADE BACK
|
|
CPX #RAMTOP DONE??
|
|
BNE RAM7
|
|
TFR D,U SHOVE NEW SEED OVER
|
|
TFR DP,A
|
|
CMPA #$FF FF INDICATES FRONT DOOR
|
|
BNE RAM99
|
|
TFR U,D
|
|
JMP RAM0 DO ANOTHER ITERATION IN THIS TEST.
|
|
RAM99 DECA TAKE ONE AWAY
|
|
TFR A,DP RETURN
|
|
CMPA #$80 ZERO OUT IN AUTO CYCLE???
|
|
BEQ RAM99Z YEP....
|
|
TSTA SET FOR BELOW BRANCH
|
|
TFR U,D MAKE SEED AND SAVED SEED LOOK ALIKE
|
|
LBNE RAM0 DO ANOTHER ITERATION
|
|
RAM99Z LDB #1 SET BACK TO ROM
|
|
STB RWCNTL
|
|
JMP ,Y RETURN
|
|
RERROR LEAX -2,X BACK TO ERROR POINT
|
|
EORA ,X FIND DIFFERENCE.
|
|
EORB 1,X
|
|
TSTA NO DIFFERENCE?
|
|
BNE RERR2 DIFF.
|
|
TSTB
|
|
BNE RERR2
|
|
LEAX 2,X UNDO THIS BULLSHIT...MAYBE ALPHA BABY.
|
|
BRA RAM25 AND CONTINUE
|
|
RERR2 LDU #$30 FIND BANK NUMBER
|
|
EXG X,D
|
|
CLRB
|
|
EXG X,D
|
|
RERR0 CMPX #0
|
|
BEQ RERR1 DONE.
|
|
LEAX -$100,X
|
|
LEAU $10,U
|
|
CMPU #$30
|
|
BLS RERR0
|
|
LDU #$10
|
|
BRA RERR0
|
|
RERR1 LEAU 1,U
|
|
ASRA
|
|
BCS RERR5 THIS IS THE BIT
|
|
ASRB
|
|
BCS RERR5
|
|
BRA RERR1
|
|
|
|
RERR5 TFR U,D BRING THE BANK,BIT INTO B
|
|
LDA #1 INDICATE RAM ERROR
|
|
STA RWCNTL BACK TO THAT JAZZ
|
|
LDS #RERR6 RETURN HERE
|
|
BRA PULSE PULSE THE LEDS
|
|
RERR6 LDA #RAM>>8
|
|
TFR A,DP
|
|
TFR CC,A
|
|
COMA
|
|
BITA #$C0 INITIAL TEST???
|
|
BEQ RER098 YEP
|
|
LDA #FDRAMM
|
|
BRA RER099
|
|
RER098 LDA #RERRM
|
|
RER099 LDS #HSTK SET UP THE STACK
|
|
JSR SCRCLR
|
|
JSR WRD7V PRINT THE MESSAGE.
|
|
TFR CC,A SEE WHICH TEST
|
|
BITA #$40 FIRQ SAYS FRONT DOOR
|
|
BNE REROR7 NOPE
|
|
JMP FDRET DO THE FRONT DOOR RETURN
|
|
REROR7 LDY #INIT OTHERWISE START...TRY AND RUN THE GAME.
|
|
BRA DELAY
|
|
|
|
DELAY LDA #32
|
|
DELA1 LDX #$5800
|
|
DELA2 LEAX -1,X
|
|
LDB #WDATA
|
|
STB WDOG
|
|
CMPX #0
|
|
BNE DELA2
|
|
DECA
|
|
BNE DELA1
|
|
JMP ,Y RETURN
|
|
|
|
*
|
|
* PULSE......PUT SOME CRAP IN LED'S
|
|
* LOW HALF OF A IS ERROR CODE...
|
|
* BOTH HALVES OF B ARE THE RELEVANT DATA.
|
|
*
|
|
|
|
PULSE TFR D,U SAVE A,B
|
|
LDA #2
|
|
TFR A,DP
|
|
PULSE0 TFR U,D
|
|
LDY #PULSE1
|
|
BRA PSSUB
|
|
PULSE1 LDA #2
|
|
LDY #PULSE2
|
|
BRA DELA1
|
|
PULSE2 LDY #PULSE3
|
|
BRA BLKLED
|
|
PULSE3 LDA #1
|
|
LDY #PULSE4
|
|
BRA DELA1
|
|
PULSE4 TFR U,D GET DATA BACK
|
|
TFR B,A SHIFT B DOWN
|
|
LSRA
|
|
LSRA
|
|
LSRA
|
|
LSRA PROPER HALF
|
|
LDY #PULSE5
|
|
BRA PSSUB PULSE IT.
|
|
PULSE5 LDA #2
|
|
LDY #PULSE6
|
|
BRA DELA1
|
|
PULSE6 LDY #PULSE7
|
|
BRA BLKLED
|
|
PULSE7 LDA #1
|
|
LDY #PULSE8
|
|
BRA DELA1
|
|
PULSE8 TFR U,D
|
|
TFR B,A
|
|
LDY #PULSE9
|
|
BRA PSSUB
|
|
PULSE9 LDA #2
|
|
LDY #PULS10
|
|
BRA DELA1
|
|
PULS10 LDY #PULS11
|
|
BRA BLKLED
|
|
PULS11 LDA #5
|
|
LDY #PULS12
|
|
JMP DELA1
|
|
PULS12 TFR DP,A SEE IF FIRST PASS??
|
|
DECA
|
|
TFR A,DP
|
|
BNE PULSE0
|
|
LDY #PULS95
|
|
BRA BLKLED BLANK EM.
|
|
PULS95 TFR U,D RESTORE D
|
|
JMP ,S AND RETURN
|
|
|
|
BLKLED LDA #$3C
|
|
STA PIA0+1
|
|
INCA
|
|
STA PIA1+1
|
|
LDA #$C0
|
|
STA PIA1
|
|
JMP ,Y AND RETURN
|
|
|
|
* PSSUB - PUT LOW HALF OF A TO LEDS
|
|
|
|
PSSUB TFR A,B SAVE A COPY.
|
|
RORA BIT 0 - CARRY
|
|
RORA BIT 0 - BIT 7
|
|
RORA BIT 0 - BIT 6
|
|
ANDA #$C0
|
|
STA PIA1 THOSE BITS OUT.
|
|
LDA #$34 ASSUME ZERO
|
|
BITB #$4 SEE IF 1
|
|
BEQ PSSUB1 NOPE
|
|
LDA #$3C
|
|
PSSUB1 STA PIA1+1 THATS ALL FOR THAT BIT
|
|
LDA #$34
|
|
BITB #$8
|
|
BEQ PSSUB2
|
|
LDA #$3C
|
|
PSSUB2 STA PIA0+1
|
|
JMP ,Y AND RETURN
|
|
|
|
ROMTST ORCC #$3F NO INTERRUPTS WHILE THIS RUNS
|
|
LDX #ROMTAB INDEX INTO TABLE
|
|
ROM0 CMPX #ROMEND DONE??
|
|
BEQ ROMDUN YEP
|
|
LDA 1,X LOOK TO SEE IF PART STUFFED??
|
|
BEQ ROMBOT NOPE...MOVE TO NEXT
|
|
LDA ,X GET BASE
|
|
CLRB
|
|
TFR D,U USE U TO POINT THROUGH
|
|
LDA #WDATA FOR ROVER
|
|
ROM1 ADDB ,U+ ADD A BYTE
|
|
STA WDOG
|
|
EXG D,U SEE IF DUN
|
|
CMPA 2,X ARE WE TO NEXT PART
|
|
EXG D,U CHANGE BACK
|
|
BNE ROM1 NOPE
|
|
CMPB 1,X EXPECTED SUM???
|
|
BNE ROMERR NOPE....LETS SEND OUT PROBLEM WARNING.
|
|
ROMBOT LEAX 2,X MOVE TO NEXT PART
|
|
BRA ROM0
|
|
ROMERR LDA ,X GET THE ADDRESS OF THE BAD PART
|
|
LSRA
|
|
LSRA
|
|
LSRA
|
|
LSRA
|
|
CMPA #$D ONE OF TOP 3 PARTS??
|
|
BLO ROMER1 NOPE
|
|
SUBA #4 GROUP THEM WITH THE LOWER PARTS
|
|
ROMER1 ADDA #1 MAKE ERRORS FROM 1-12
|
|
DAA AND MAKE BCK
|
|
TFR A,B
|
|
LDA #2 ROM ERROR
|
|
LDS #RERR3 RETURN
|
|
JMP PULSE AND SEND OUT THE CODE
|
|
RERR3 LDA #RAM>>8
|
|
TFR A,DP
|
|
LDA #WDATA
|
|
STA WDOG
|
|
LDS #HSTK
|
|
JSR SCRCLR
|
|
TFR CC,A
|
|
COMA
|
|
BITA #$C0 INITIAL TEST??
|
|
BEQ RERR94
|
|
LDA #FDROMM
|
|
BRA RERR95
|
|
RERR94 LDA #ROMERM
|
|
RERR95 JSR WRD7V PUT THE MESSAGE ON THE SCREEN
|
|
TFR CC,B SEE WHERE WE CAM FROM
|
|
BITB #$40 FIRQ SAYS FRONT DOOR
|
|
BNE ROMER3
|
|
JMP FDROM
|
|
ROMER3 LDY #INIT NOW TRY AND RUN THE GAME
|
|
JMP DELAY BUT NOT UNTIL A SHORT DELAY.
|
|
ROMDUN JMP ,Y ALL ROMS OK...RETURN.
|
|
|
|
* ROMTAB - THIS TABLE INDICATES THE BASE OF THE PART, AND THE
|
|
* RESULTING SUM. IF SUM=0 THEN PART IS NOT STUFFED.
|
|
|
|
ROMTAB FCB $00,0 0000
|
|
FCB $10,0 1000
|
|
FCB $20,0 2000
|
|
FCB $30,0 3000
|
|
FCB $40,0 4000
|
|
FCB $50,0 5000
|
|
FCB $60,0 6000
|
|
FCB $70,0 7000
|
|
FCB $80,0 8000
|
|
FCB $90,0 9000
|
|
FCB $A0,0 A000
|
|
FCB $B0,0 B000
|
|
FCB $C0,0 C000
|
|
FCB $D0,0 D000
|
|
FCB $E0,0 E000
|
|
FCB $F0,0 F000
|
|
ROMEND FCB 0
|
|
FCB 0 CHECK BYTE (FUDGER) FOR THIS PART ($F000)
|
|
|
|
FCC '(C)1982 WILLIAMS ELEC.INC'
|
|
|
|
ORG $FFF0
|
|
FDB PWRUPV,PWRUPV,PWRUPV,PWRUPV
|
|
FDB PWRUPV
|
|
FDB PWRUPV,PWRUPV,PWRUPV
|
|
|
|
END
|
|
|