mirror of
https://github.com/nathanriggs/AppleIIAsm-Collection.git
synced 2024-06-07 10:29:28 +00:00
9f35f32f67
- massive overhaul of architecture - first round of optimizations - first draft of the technical manual for the entire library - reorganization of directory structure
71 lines
1.8 KiB
Plaintext
71 lines
1.8 KiB
Plaintext
*
|
|
*``````````````````````````````*
|
|
* DELAYMS (LEVENTHAL/SEVILLE) *
|
|
* *
|
|
* ADAPTED FROM LEVANTHAL AND *
|
|
* SEVILLE'S /6502 ASSEMBLY *
|
|
* LANGUAGE ROUTINES/. *
|
|
* *
|
|
* INPUT: *
|
|
* *
|
|
* .Y = NUMBER OF MILLISECS *
|
|
* *
|
|
* OUTPUT: *
|
|
* *
|
|
* DELAYS FOR X NUMBER OF *
|
|
* MILLISECONDS BY LOOPING *
|
|
* THROUGH A PRECISE NUMBER *
|
|
* OF CYCLES. *
|
|
* *
|
|
* DESTROYS: AXYNVBDIZCMS *
|
|
* ^^^^ ^^^ *
|
|
* *
|
|
* CYCLES: 39+ *
|
|
* SIZE: 29 BYTES *
|
|
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
|
*
|
|
DELAYMS
|
|
*
|
|
]MSCNT EQU $0CA ; LOOP 202 TIMES THROUGH DELAY1
|
|
; SPECIFIC TO 1.23 MHZ
|
|
; SPEED OF APPLE II
|
|
:DELAY
|
|
CPY #0 ; IF Y = 0, THEN EXIT
|
|
BEQ :EXIT
|
|
NOP ; 2 CYCLES (MAKE OVERHEAD=25C)
|
|
*
|
|
** IF DELAY IS 1MS THEN GOTO LAST1
|
|
** THIS LOGIC IS DESIGNED TO BE
|
|
** 5 CYCLES THROUGH EITHER ATH
|
|
*
|
|
CPY #1 ; 2 CYCLES
|
|
BNE :DELAYA ; 3C IF TAKEN, ELSE 2C
|
|
JMP :LAST1 ; 3C
|
|
*
|
|
** DELAY 1 MILLISENCOND TIMES (Y-1)
|
|
*
|
|
:DELAYA
|
|
DEY ; 2C (PREDEC Y)
|
|
:DELAY0
|
|
LDX #]MSCNT ; 2C
|
|
:DELAY1
|
|
DEX ; 2C
|
|
BNE :DELAY1 ; 3C
|
|
NOP ; 2C
|
|
NOP ; 2C
|
|
DEY ; 2C
|
|
BNE :DELAY0 ; 3C
|
|
:LAST1
|
|
*
|
|
** DELAY THE LAST TIME 25 CYCLES
|
|
** LESS TO TAKE THE CALL, RETURN,
|
|
** AND ROUTINE OVERHEAD INTO
|
|
** ACCOUNT.
|
|
*
|
|
LDX #]MSCNT-3 ; 2C
|
|
:DELAY2
|
|
DEX ; 2C
|
|
BNE :DELAY2 ; 3C
|
|
:EXIT
|
|
RTS ; 6C
|