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

\DDR HE> C LABEL CODE 69 46 69 46 69 4A INSTRUCTION COMMENTS MAIN PROGRAM 027C 027 E 0280 0282 0284 0286 0287 00 2A 00 2B 00 ADC #00 LSR ANAL + 2 ADC #00 JSR ALBERT ALBERT PROGRAM LSR ANAL+ 3 ADC #00 LSRA BCSONEOFF - NOT A GOOD MOVE DEC COUNT BNECONT - KEEP CHECKING THE MOVE LDX#03 - GOOD MOVE, TRANSFER TO ACTUAL STACKS LDA2X POSS STAZX STACK JSR ALGERNON - ALGERNON PROGRAM 0289 028B 028D B0 C6 D0 A2 1F E8 03 BF RTS RTS WE CANT JUST SAY THAT PC IS TO BE SAVED IN LOCATION, SAY, L& M - W E WOULDN'T GET BACK FROM ALBERT SINCE THE CALL TO ALGERNON WOULD 028 F 0291 0293 0294 0296 0299 029B 029D 029 F 02A0 02A2 02A3 02A5 02AY 02A9 02AC 02AD 02AE 02 A F 02B1 02B2 B5 95 CA 24 BAT 20 HAVE DESTROYED THE NECESSARY INFORMATION IN L & M.

(IT IS WORTH NOTING HERE THAT L & M COULD BE "CALLED"-2 "CALLED"-1. THEN A CALL TO ALBERT AS A SUBROUTINE WOULD STORE THE RETURN ADDRESS JUST BEFORE THE START OF ALBERT ALLOWING NESTED SUBROUTINES AS ABOVE. A PROBLEM IS THAT THIS DOES NOT WORK WITH READ ONLY MEMORY, LIKE THE MONITOR). 3.2 THE STACK POINTER WE NEED SOMETHING WHICH WILL DECIDE WHAT L & MARE TO BE, 10 4C A9 A2 95 CA F9 00 02 00 DSPGAP 07 DEX BPL BAT JMPHUMMOV - OPPONENT. LDA#00 LDX #07 STAZXD - CLEAR THE DISPLAY FIRST DEX BPL CLEAR CLD - CLEAR DECIMAL MODE LDX #04 - DISPLAY STACKS LDY#01 0"?

LDAZX STACK - 1 JSR HEXTD 10 CLEAR 10 D8 A2 A0 B5 20 FB DEPENDING ON WHICH SUBROUTINE WE ARE IN.AN OBVIOUS CHOICE IS TO USE AN ARRAY OF MEMORY LOCATIONS, AND A VARIABLE WHICH POINTS TO THE CURRENT LOCATION OF L & M.EACH TIME WE DO A JSR WE STEP UP THE 04 mo** 1F AROUND 7A FE n POINTER & EACH TIME WE DO AN RTS WE STEP IT DOWN. QЈ CA D0 60 hNY 3>e V WY T>Ј y F6 DEX BNEAROUND RETURN ADDRESS ARRAY [POINTER I' THE DUCKSHOOT GAME IS A SPEED TEST: YOU HAVE TO SHOOT THE FLYING DUCKS. THEY SUCCESSIVELY ENTER FROM THE RIGHT AND FLY TOWARDS THE LEFT AT A SET SPEED. YOU SHOOT A DUCK BY PRESSING ITS CURRENT WITH ACORN WE'LL NEED TWO BYTES FOR EACH RETURN ADDRESS. THIS IS POSITION ON THE KEYBOARD.

THE LEFT MOST DISPLAY IS 0,THE RIGHTMOST DISPLAY IS 7. WHEN A DUCK IS HIT IT DIES. THE GAME MAY BE RESTARTED WITH ANY HEX DIGIT KEY NO TROUBLE, WE JUST INCREMENT & DECREMENT THE POINTER TWICE. THE WHOLE PROCESS IS CARRIED OUT BY THE PROCESSOR AUTOMATICALLY ON EACH JSR & RTS, THE POINTER IS CALLED THE STACK POINTER AND IS A SPECIAL8 BIT REGISTER INSIDE THE PROCESSOR. THE ARRAY IS USUALLY CALLED A STACK SINCE IT CAN ALSO BE USED TO STORE THINGS OTHER THAN RETURN ADDRESSES. THE ACTUAL STACK RUNS FROM 01 FF DOWN TO 01)00, AND IT STARTS AT THE TOP: AN EMPTY STACK HAS STACK POINTER AT FF.

A BYTE IS PUT ON THE STACK AND THE POINTER IS DECREMENTED TO DUCK SHOOT ADDR HEX LABEL INSTRUCTION COMMENTS 0200 0202 0204 0206 0208 020A 020C 020D 020F 0211 CvJuc A9 1F 85 A9 A2 86 95 CA 0E 00 07 20 BEGIN LDA#1F STA Z 0E - SINGLE SCAN DISPLAY ROUTINE POINT AT THE NEXT LOCATION; THE POINTER IS INCREMENTED AND A BYTE LDA #00 LDX #07 STX Z 20 STAZX 10 DEX BPL CLEAR LDA #00 LDX H 20 - CLEAR THE DISPLAY LOADED FROM THE STACK IN THE REVERSE OPERATION. NO CHECK IS MADE FOR THE 00 TO FF DECREMENT INDICATING AN OVERFLOWED STACK, SO PROGRAMS THAT REQUIRE MORE THAN 256 BYTES OF STACK SPACE Wl LL MYSTERIOUSLY FAIL. SINCE THIS IS 128 CONSECUTIVE JSR'S, THE PROBLEM WONT BE ENCOUNTERED VERY OFTEN.. .

10 CLEAR 10 A9 A6 FB 00 20 - TAKE THE OLD DUCK OFF NOW THE PROCESSOR STATUS REGISTER CAN BE PUSHED ONTO THE STACK: REMOVE