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

ADDR HEX LABEL CODE E0 07 D0 F7 85 17 60 INSTRUCTION COMMENTS FROM THE RIGHT) AND SUSPECT THAT IT CAN'T PUT ANYTHING ELSE THERE. THIS IS TRUE, BUT IT DOESN'T MEAN THAT THERE ISN'T A MONITOR SUB- 0207 0209 020B 020D 020 E CPX #07 BNE LOOP STA Z D + 7 ROUTINE THAT CAN DO THE JOB. SUCH A SUBROUTINE LIVES AT FE7A. IT IS DESIGNED TO PUT THE LOWEST FOUR BITS OF THE ACCUMULATOR ONTO ANY OF THE DISPLAYS, ASA READABLE CHARACTER. THIS IS JUSTWHATWE - KEEP GOING - NEW DATA RTS. NEED - BUT HOW DO WE TELL THE SUBROUTINE WHICH DISPLAY TO USE? 3.3 THE INTERNAL REGISTERS X ANDY. WELL, BACK TO THE/iP.

THIS IS WHAT IT LOOKS LIKE INSIDE GAMES PROGRAMS 1 7 A ACCUMULATOR BIT NUMBER NIM ISATRADITIONALGAME INWHICHTHE PLAYERS ALTERNATIVELY REMOVE STICKS, OR COINS, OR WHATEVER FROM ONE OF SEVERAL STACKS. THE ONLY RULES ARE THAT YOU MUST TAKE AT LEAST ONE PIECE PER MOVE AND THAT YOU CAN ONLY REMOVE PIECES FROM ONE STACK PER MOVE. THERE IS A WELL-DEFINED STRATEGY FOR OPTIMAL PLAY BUT THIS DOES J X-REGISTER llNDEX ~\ Y-REGISTER /REGISTERS 15 Y NOT GUARANTEE A WIN UNLESS THE OPPONENT MAKES A MISTAKE OR THE PC PROGRAM COUNTER INITIAL SITUATION IS AGAINST HIM. THE COMPUTER PLAYS WELL BUT, WITH LUCK, CAN BE BEATEN.

THE WINNER IS THE PLAYER WHO REMOVES THE LAST PIECE IN THIS VERSION OF THE GAME THERE ARE FOUR STACKS OF FROM 0-F PIECES. YOU MUST ENTER THE SIZE OF YOUR STACKS IN MEMORY STACK POINTER PROCESSOR STATUS LOCATIONS20-23 BEFORE STARTING THE GAME. THE GAME STARTS AT 002F AND YOUR MOVE OR 0180 AND THE COMPUTER'S MOVE. ON RUNNING, THE DISPLAY WILL SHOW A- B C D WHERE A,B,C,D ARE THE CONTENTS OF THE STACKS. ANY CONTROL KEY Wl LL MOVE THE POINTER (FULL STOP) AROUND THE STACKS. WHEN IT POINTS TO THE STACK FROM WHICH YOU WISH TO REMOVE PIECES PRESS THE KEY CORRESPONDING TO THE NUMBER TWO NEWCOMERS, YOU'LL NOTICE! X & Y ARE'INDEX REGISTERS', THEY Wl LL YOU WISH TO REMOVE.

ZERO IS I LLEGAL AND WILL NOT BE ALLOWED. IF YOU SUBTRACT MORE PIECES THAN ARE IN THE STACK THE GAME WILL GET VERY CONFUSED. AFTER REMOVALOF PIECES THE DISPLAY WILL SHOW THE CURRENT SITUATION AND THE COMPUTER Wl LL MAKE ITS MOVE. CONTINUE UNTIL SOMEONE (SOMETHING?) WINS. YOU MIGHT LIKE TO TRY AND WRITE SUBROUTINES TO PRINT MESSAGES ON THE DISPLAY IN THE EVENT OF EITHER A HUMAN OR COMPUTER VICTORY. A CHECK WOULD HAVE TO BE INSERTED TO DECIDE A COMPUTER WIN BUT THE JUMP FOR A HUMAN WIN IS ALREADY THERE BE DEALT WITH MORE THOROUGHLY IN A FEW MORE PAGES, BUT WHAT MATTERS NOW IS THE USE FE7A MAKES OF THEM:

I FE7A NEITHER CARES ABOUT, NOR CHANGES X II FE7A DOESN'T CHANGE Y, BUT THE DISPLAY IT PUTS A ONTO IS CONTROLLED BY Y THAT IS, THE LOWER 4 BITS OF A ARE TRANSFORMED INTO THE CORRECT SEQUENCE OF BITS TO REPRESENT THEIR HEXADECIMAL CHARACTER AS IT SHOULD APPEAR ON THE 7 SEGMENT DISPLAY. THEN THIS IS STORED IN MEMORY TO AWAIT THE SUBROUTINE WHICH ACTUALLY PUTS THINGS ON DISPLAY. ALTHOUGH FE7A MAKES NO RESTRICTIONS ON THE SIZE OF Y, THE MONITOR SUBROUTINE WHICH DISPLAYS THEM ONLY KNOWS ABOUT THE FIRST 8 UNDER THE MNEMONIC JMP MESSAGE, THOUGH THE CODE IN FACT JUMPS TO THE HUMAN MOVE. (NUMBERED. OF COURSE, 0-7) OF THEM, IN LINE WITH THE ACTUAL DISPLAY HARDWARE.

DISPLAY 0 IS THE LEFTMOST, DISPLAY 7 IS THE RIGHTMOST. TO KEEP THE MONITOR AS EFFICIENT AS POSSIBLE THE SUBROUTINE AT NIM NOT RELOCATABLE CLEAR DECIMAL DISPLAY STACKS SET DECIMAL POINT ON 0200 0203 0205 0207 0209 020C 020E 20 B5 09 95 20 90 B5 99 02 HUMMOV SHIFTPT JSR DSPGAP FE60 USES FE7A. IT FOLLOWS THAT IT MUST HAVE LOADED Y WITH 7 & 6, AND SINCE FE7A DOESN'T CHANGE Y, Y IS STI LL SET TO THE LAST USED OF THESE WHICH IS 6. SO. INSTEAD OF USING 11 80 LDZX D + 1 ORA#80 STAZX D + 1 JSR DISPLAY BCC MINUS LDY#05 A0 05 "LOAD Y WITH THE NEXT BYTE" (05 HERE) WE CAN USE 11 0C 10 11 FE CHEAT WAIT FOR INPUT DEY 88 "DECREMENT (IN HEXADECIMAL) Y BY ONE" LDAHX D + 1 REMOVE CURRENT DECIMAL POINT