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

LONGER THAN LDA H! THE SOLUTION IS TO USE LDA Z AND TO INCORPORATE AN EXTRA BYTE IN 0030 AS PADDING. THIS MUST BE A SINGLE-BYTE INSTRUCTION, THAT DOES NOTHING TO AFFECT THE PROGRAM, AND ONE IS SPECIFICALLY PROVIDED THE METRONOME PRODUCES A PULSE AT THE TAPE OUTPUT PIN, PA6, WITH A REGULAR PERIOD. THE "UP" AND "DOWN" KEYS WILL INCREASE AND DECREASE THE PERIOD RESPECTIVELY. WITH SUITABLE ADDITIONAL CIRCUITRY THIS COULD DRIVE A LOUDSPEAKER OR A 'STROBE' LIGHT. IN NOP EA THE PROGRAM READS 0030 EA 0031 A5 21 'NO OPERATION" NOP FACT A SMALL SOUND CAN BE OBTAINED BY SIMPLY CONNECTING A LOUD- SPEAKER ACROSS THE TAPE OUTPUT AND EARTH PINS.

THE CONSTANTS USED AT PRESENT MEAN THAT THE PULSE IS OF 1/300 SEC. AND THE DELAY BETWEEN PULSES CAN BE VARIED FROM 1/20 SEC. TO ABOUT 13 SECS. YOU CAN DEFINE THE PERIOD BEFORE STARTING THE 0033 45 LDA 2 21 EOR Z20 JSR FE60 JMP FF04 0038 4C04FF -NOTICE THE MORE COMPACT MODE OF WRITING IT DOWN. THIS IS MORE CONSISTENT WITH THE WAY MNEMONICS ARE WRITTEN. IT IS EXACTLY EQUIVALENT TO 0030 EA NOP 0031 A5 LDA Z 21 0032 21 0033 45 EOR 220 0034 20 0035 20 JSR FE60 0036 60 0037 FE 0038 4C JMP FF04 0039 04 003A FF AND IT WILL BE USED THROUGHOUT THE REST OF THE MANUAL: THIS PROGRAM TAKES THE CONTENTS OF (WHICH MAY BE WRITTEN BY PROGRAM BY PUTTING THE REQUIRED VALUE INTO MEMORY LOCATION 0020.

20 WILL GIVE ABOUT 1 SEC BETWEEN PULSES, AND ANYTHING ELSE PROPORTIONATELY MORE OR LESS. ONCE THE PROGRAM IS RUNNING THE 'UP' AND 'DOWN' KEYS WILL INCREMENT AND DECREMENT THE PERIOD BY ABOUT 1/20 SEC EACH TIME THEY ARE PRESSED. THEY ALSO RESET THE CYCLE. THIS FACILITY COULD USEFULLY BE USED FOR FINE TUNING BUT WOULD BE TEDIOUS FOR LARGE CHANGES OF PERIOD.

METRONOME \DDR 0200 0202 0204 0206 0209 020C 020F 0212 0214 0217 0219 021B 021D HEX CODE A9 85 A9 8D 8D 20 8D A6 20 C9 D0 E6 B0 1F 0E 40 22 LABEL INSTRUCTION LDA#1F STA REPEAT COMMENTS PULSE LDA #40 STA1ADDR STA SET PI A6 JSR WAIT STACLR PIA6 - SET DISPLAY TO SINGLE SCAN 16 CD to 20 0C 0E 0E - DEFINE PA6 AS OUTPUT - USE INS8154 SET BIT MODE - USE THE 300 BAND WAIT - USE IN58154 CLEAR BIT MODE FE 0E PUTTING BRACKETS AROUND THE PARTICULAR ADDRESS) 0020 & 0021 AND PRESENTS THEIR LOGICAL EXCLUSIVE - OR ON THE DISPLAY. APART FROM THEIR LOGICAL FUNCTIONS, THESE OPERATORS ARE OFTEN USED TO FE DELZ LDXZ PERIOD JSR DISPLAY CMP #16 BNE DOWN INCZ PERIOD BCS PULSE - LOOK AT KEYBOARD - UP KEY?

- NO - INCREASE PERIOD - CARRY WAS SET BY THE COMPARE ALWAYS - DOWN KEY? - NO - DECREASE PERIOD - CARRY WAS SET BY THE COMPARE ALWAYS - CYCLE TIME OF flYS SEC. 16 04 20 E5 MANIPULATE SINGLE BITS. FOR INSTANCE ORA #01 WOULD SET BIT 0 OF THE ACCUMULATOR, AND #FE WOULD CLEAR IT AND EOR #01 WOULD COMPLENT IT, ALL WITHOUT AFFECTING ANY OTHER BITS IN THE ACCUMULATOR. 021F 0221 0223 0225 C9 D0 C6 B0 17 04 20 DD DOWN CMP #17 BNE DELI DEC^ PERIOD BCS PULSE 2.3.5 ARITHMETIC INSTRUCTIONS 'ADC, 'SEC, CLC'. FROM LOGIC OPERATIONS WE PROGRESS AGAIN TO ARITHMETIC. LOOKING AT ORA Z, EOR Z, AND Z WOULD LEAD ONE TO ASSUME THE EXISTENCE OF ADD Z. WELL, THERE ISN'T ONE, THERE'S ONLY ADC Z.

0227 0229 022C 022D 022F 0230 0232 0234 A0 20 88 0C CD FE DELI DELJ LDY #0C JSR WAIT DEY BPLDELJ DEX BNEDEL2 BEQ PULSE BYTES: 2 ADC Z 65 "ADD WITH CARRY, ZERO PAGE" 1 SEC 38 "SET CARRY FLAG" 1 CLC 18 "CLEAR CARRY FLAG" THIS IS MOST UNUSUAL AND A TRAP FOR UNWARY PROGRAMMERS, 10 CA D0 F0 FA E2 D0 ESPECIALLY THOSE USED TO /iPs WHICH POSSESS AN ADD INSTRUCTION: THE CARRY FLAG MUST BE CLEARED BEFORE AN ADC (OR IT MUST BE IN A - END OF THIS PERIOD SO PULSE KNOWN STATE E.G. f SEC = f CLC 1 ADC #00 1 ADC #01 OR 'UNEXPECTED' ANSWERS Wl LL APPEAR. WHEN THE juP LEAVES THE MONITOR USING THE GO ROUTINE THE CARRY FLAG IS SET: FAILURE TO CLEAR IT BEFORE AN ADC RESULTS IN AN ANSWER 1 GREATER THAN EXPECTED.

4 THE EIGHT QUEENS PROBLEM IS TO FIND THE NUMBER OF WAYS IN WHICH EIGHT QUEENS MAY BE PLACED ON A CHESS BOARD WITHOUT ATTACKING EACH OTHER. THE PROGRAM FINDS 92 WAYS SINCE IT COUNTS ROTATIONS AND REFLECTIONS, ALLPOSSIBLE POSITIONS ARE TRIED AS SOLUTIONS IN THIS HIGH SPEED RECURSIVE (I.E. IS DEFINED IN TERMS OF ITSELF)