Acorn Computer Limited Acorn (6502) — Acorn Computer (6502) User & Service Manual PDF

PLP 28 "PULLP" PHP 08 "PUSH P" AND SO WE MAY SAVE IT BEFORE A SUBROUTINE CALL AND RECOVER IT AFTERWARDS ADDR HEX LABEL CODE 29 7F 95 11 E8 E8 E0 07 90 E9 A2 00 INSTRUCTION COMMENTS 0210 0212 0214 0215 0216 0218 021A 021C 021E 021 F 0221 0222 0223 0224 0225 0227 0229 022B 022 E 0230 0232 0235 0236 0238 0239 023B 023D 023F AND#7F STA2X D + 1 INX INX CPX #07 BCCSHIFTPT - MOVE FORWARD PHP JSR.. .. - END OF STACKS?

PLP THE SEQUENCE OF STACK OPERATIONS IS F0 E5 A8 MINUS F0 E8 8A 4A AA 38 B5 20 E5 0D 95 20 20 99 02 COMMOV 84 0E A2 00 20 0C FE WAIT CA D0 FA CA 86 0E A0 03 A2 03 B5 20 LDX #00 BEQSHIFTPT TAY BEQ CHEAT TXA TOP - PREVENT ZERO FROM BEING USED TOP PCH TOP LSRA TAX SEC - ADDRESS OF REQUIRED STACK TOP PCL PCH PCL TOP LDAZX STACK SBC KEY STAHX STACK JSR DSPGAP STY REPEAT - DO THE PLAYER'S MOVE PCH PCL - SHOW STACKS PHP JSR PROGRAM OPERATES RTS PLP LDX #00 JSR DISPLAY DEX BNE WAIT DEX STX REPEAT - THINKING TIME LDY #03 LDX #03 LDAHX STACK - CLEAR REPEAT STATUS SO WE HAVE NOW MANAGED TO SAVE THE CARRY FLAG, USE FE60, AND REGAIN THE CARRY FLAG.

WE WISH TO WRITE IT OUT, SO IT WOULD HAVE BEEN BETTER TO WRITE. NEXTS BLOCK - TRANSFER STACK TO POSS - POSS REPRESENTS THE POSSIBLE COMPUTER - MOVES PHP JSR FE60 PLA PULL BYTE FROM STACK INTO A SINCETHISGIVESTHE CARRY FLAG IN A, AS THE LEAST SIGNIFICANT BIT, TO GET RID OF THE REST OF THE BITS OF THE RECOVERED STATUS 0241 95 24 0243 CA 0244 10 F9 0246 A2 03 0248 B5 24 STA2X POSS DEX BPLBLOCK LDX # 0 3 LDA2X POSS ONEOFF BRICK TRANSFER POSS TO ANAL ANAL REPRESENTS THE MOVE BEING ANALYSED REGISTER, WE CAN SIMPLY AND # 01. NOW A CONTAINS 0 OR 1 DEPENDING ON THE CARRY FROM ORIGINAL SUM.

OUR PROGRAM NOW IS «• 024A 95 28 024C CA 024D 10 F9 024F A2 03 0251 B9 24 00 0254 38 0255 E9 00 0257 99 24 00 025A 99 28 00 025D B0 12 025F 88 0260 10 DB 0262 B5 20 0264 F0 05 0266 D6 20 0268 4C 00 02 026B CA 026C 10 F4 026E 4C 04 FF 0271 A9 04 CHECK 0273 85 1F 0275 A9 00 CONT 0277 46 28 0279 2A 027A 46 29 STA2X ANAL DEX BPLBRICK LDX #03 LDA, Y POSS SEC SBC #01 STA, Y POSS STA, Y ANAL BCSCHECK DEY BPLNEXTS LDAZX STACK BEQ EMPTY DECZX STACK JMP HUMMOV DEX BPLTRY JMP RESTART SED SET UP FOR DECIMAL ADD CLC LDA Z 21 DOIT ADC Z 20 o l PHP SAVE CARRY JSR FE60 WRITE OUT TWO DIGITS POSS CONTAINS POSS IB LE MOVE ANAL CONTAINS POSSIBLE MOVE PLA AND #01 A = 0 (NO CARRY FROM SUM) ON DISPLAYS6&7 TRY - TRY ALL STACKS - CHECK IF STACK EMPTY OR A = 1 (CARRY FROM SUM) - MAKE DESPERATE MOVE EMPTY NOW ALL WE NEED TO DO IS WRITE OUT THE ACCUMULATOR ON DISPLAY NO.5.

THE WAY WE WROTE OUT THE FIRST TWO DIGITS OF THE RESULT WAS TO USE A MONITOR SUBROUTINE WHICH DID JUST THAT. YOU'VE PROBABLY LDA #04 STA COUNT - LOST. LDA #00 LSR ANAL ROLA LSR ANAL+ 1 - EVALUATE MOVE NOTICED THAT THE MONITOR ONLY PUTS A DOT ON DISPLAY 5 (THE 3RD