mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
Better C64 wait
This commit is contained in:
+1
-281
@@ -5,251 +5,8 @@
|
|||||||
|
|
||||||
FAKEADDR EQU $0002
|
FAKEADDR EQU $0002
|
||||||
|
|
||||||
|
ATRACT EQU FAKEADDR
|
||||||
;
|
|
||||||
; OPERATING SYSTEM EQUATE FILE
|
|
||||||
;
|
|
||||||
; MODULE ORIGIN TABLE
|
|
||||||
;
|
|
||||||
; VECTOR TABLE
|
|
||||||
;
|
|
||||||
; HANDLER ENTRY POINTS ARE CALL-
|
|
||||||
; ED OUT IN THE FOLLOWING VECTOR
|
|
||||||
; TABLE. THESE ARE THE ADDRESSES
|
|
||||||
; MINUS ONE.
|
|
||||||
;
|
|
||||||
; EXAMPLE FOR EDITOR
|
|
||||||
;
|
|
||||||
; E400 OPEN
|
|
||||||
; 2 CLOSE
|
|
||||||
; 4 GET
|
|
||||||
; 6 PUT
|
|
||||||
; 8 STATUS
|
|
||||||
; A SPECIAL
|
|
||||||
; C JUMP TO POWER ON INIT
|
|
||||||
; F NOT USED
|
|
||||||
;
|
|
||||||
EDITRV EQU $E400 ;EDITOR
|
|
||||||
SCRENV EQU $E410 ;TV SCREEN
|
|
||||||
KEYBDV EQU $E420 ;KEYBOARD
|
|
||||||
PRINTV EQU $E430 ;PRINTER
|
|
||||||
CASETV EQU $E440 ;CASSETTE
|
|
||||||
;
|
|
||||||
; JUMP VECTOR TABLE
|
|
||||||
;
|
|
||||||
; THE FOLLOWING IS A TABLE OF
|
|
||||||
; JUMP INSTRUCTIONS TO VARIOUS
|
|
||||||
; ENTRY POINTS IN THE OPERATING
|
|
||||||
; SYSTEM
|
|
||||||
;
|
|
||||||
DISKIV EQU $E450 ;DISK INITIALIZATION
|
|
||||||
DSKINV EQU $E453 ;DISK INTERFACE
|
|
||||||
CIOV EQU $E456 ;CENTRAL I/O ROUTINE
|
|
||||||
SIOV EQU $E459 ;SERIAL I/O ROUTINE
|
|
||||||
SETVBV EQU $E45C ;SET SYSTEM TIMERS
|
|
||||||
SYSVBV EQU $E45F ;VBLANK CALCULATIONS
|
|
||||||
XITVBV EQU $E462 ;EXIT VBLANK
|
|
||||||
SIOINV EQU $E465 ;SIO INITIALIZATION
|
|
||||||
SENDEV EQU $E468 ;SEND ENABLE ROUTINE
|
|
||||||
INTINV EQU $E46B ;INTRPT HANDLER INIT
|
|
||||||
CIOINV EQU $E46E ;CIO INITIALIZATION
|
|
||||||
BLKBDV EQU $E471 ;BLACKBOARD MODE
|
|
||||||
WARMSV EQU $E474 ;WARM START VECTOR
|
|
||||||
COLDSV EQU $E477 ;COLD START VECTOR
|
|
||||||
RBLOKV EQU $E47A ;CASSETTE READ BLOCK
|
|
||||||
CSOPIV EQU $E47D ;CASSETTE INPUT OPEN
|
|
||||||
;
|
|
||||||
; VECTORS ADDED FOR 800XL
|
|
||||||
;
|
|
||||||
PUPDIV EQU $E480 ;POWER UP DISPLAY
|
|
||||||
SLFTSV EQU $E483 ;SELF TEST PROGRAM
|
|
||||||
PHENTV EQU $E486 ;UPLOADED HANDLER ENTER
|
|
||||||
PHULNV EQU $E489 ;UPLOADED HANDLER UNLINK
|
|
||||||
PHINIV EQU $E48C ;UPLOADED HANDLER INIT
|
|
||||||
;
|
|
||||||
; OPERATING SYSTEM EQUATES
|
|
||||||
;
|
|
||||||
; COMMAND CODES FOR IOCBS
|
|
||||||
;
|
|
||||||
OPEN EQU $03 ;OPEN FOR I/O
|
|
||||||
GETREC EQU $05 ;GET RECORD (TEXT)
|
|
||||||
GETCHR EQU $07 ;GET CHARACTER(S)
|
|
||||||
PUTREC EQU $09 ;PUT RECORD (TEXT)
|
|
||||||
PUTCHR EQU $0B ;PUT CHARACTER(S)
|
|
||||||
CLOSE EQU $0C ;CLOSE DEVICE
|
|
||||||
STATIS EQU $0D ;STATUS REQUEST
|
|
||||||
SPECIL EQU $0E ;SPECIAL ENTRY COMMAND
|
|
||||||
;
|
|
||||||
; SPECIAL ENTRY COMMANDS
|
|
||||||
;
|
|
||||||
DRAWLN EQU $11 ;DRAW LINE
|
|
||||||
FILLIN EQU $12 ;FILL
|
|
||||||
RENAME EQU $20 ;RENAME DISK FILE
|
|
||||||
DELETE EQU $21 ;DELETE DISK FILE
|
|
||||||
FORMAT EQU $22 ;FORMAT DISK
|
|
||||||
LOCKFL EQU $23 ;LOCK FILE
|
|
||||||
UNLOCK EQU $24 ;UNLOCK FILE
|
|
||||||
POINT EQU $25 ;POINT SECTOR
|
|
||||||
NOTE EQU $26 ;NOTE SECTOR
|
|
||||||
IOCFRE EQU $FF ;IOCB "FREE"
|
|
||||||
;
|
|
||||||
; AUX1 EQUATES
|
|
||||||
; () INDICATES WHICH DEVICES
|
|
||||||
;
|
|
||||||
APPEND EQU $01 ;WR APPEND(D)-SCN RD(E)
|
|
||||||
DIRECT EQU $02 ;OPEN DIRECTORY(D)
|
|
||||||
OPNIN EQU $04 ;OPEN FOR INPUT(ALL)
|
|
||||||
OPNOT EQU $08 ;OPEN FOR OUTPUT(ALL)
|
|
||||||
OPNINO EQU $0C ;OPEN INPUT&OUTPUT(ALL)
|
|
||||||
MXDMOD EQU $10 ;OPEN MIXED MODE(E,S)
|
|
||||||
INSCLR EQU $20 ;OPEN W/O CLEAR(E,S)
|
|
||||||
;
|
|
||||||
; DEVICE NAMES
|
|
||||||
;
|
|
||||||
SCREDT EQU 'E' ;SCREEN EDITOR (R/W)
|
|
||||||
KBD EQU 'K' ;KEYBOARD (R ONLY)
|
|
||||||
DISPLY EQU 'S' ;SCREEN DISPLAY (R/W)
|
|
||||||
PRINTR EQU 'P' ;PRINTER (W ONLY)
|
|
||||||
CASSET EQU 'C' ;CASSETTE (R/W)
|
|
||||||
RS232 EQU 'R' ;MODEM (R/W)
|
|
||||||
DISK EQU 'D' ;DISK (R/W)
|
|
||||||
;
|
|
||||||
;
|
|
||||||
;
|
|
||||||
; OPERATING SYSTEM STATUS CODES
|
|
||||||
;
|
|
||||||
SUCCES EQU $01 ;SUCCESSFUL OPERATION
|
|
||||||
BRKABT EQU $80 ;BREAK KEY ABORT
|
|
||||||
PRVOPN EQU $81 ;IOCB ALREADY OPEN
|
|
||||||
NONDEV EQU $82 ;NON-EXISTANT DEVICE
|
|
||||||
WRONLY EQU $83 ;IOCB OPEN FOR W ONLY
|
|
||||||
NVALID EQU $84 ;INVALID COMMAND
|
|
||||||
NOTOPN EQU $85 ;DEVICE/FILE NOT OPEN
|
|
||||||
BADIOC EQU $86 ;INVALID IOCB #
|
|
||||||
RDONLY EQU $87 ;IOCB OPEN FOR R ONLY
|
|
||||||
EOFERR EQU $88 ;END OF FILE
|
|
||||||
TRNRCD EQU $89 ;TRUNCATED RECORD
|
|
||||||
TIMOUT EQU $8A ;PERIPHERAL TIMEOUT
|
|
||||||
DNACK EQU $8B ;DEVICE NO ACKNOWLEDGE
|
|
||||||
FRMERR EQU $8C ;SERIAL BUS FRAME ERR
|
|
||||||
CRSROR EQU $8D ;CURSOR OVERRANGE
|
|
||||||
OVRRUN EQU $8E ;SERIAL DATA OVERRUN
|
|
||||||
CHKERR EQU $8F ;SERIAL CHECKSUM ERR
|
|
||||||
DERRER EQU $90 ;PERIPHRAL DEVICE ERR
|
|
||||||
BADMOD EQU $91 ;BAD SCREEN MODE #
|
|
||||||
FNCNOT EQU $92 ;NONEXISTANT FUNCTION
|
|
||||||
SCRMEM EQU $93 ;SCREEN MEM TOO SMALL
|
|
||||||
;
|
|
||||||
; PAGE ZERO RAM ASSIGNMENTS
|
|
||||||
;
|
|
||||||
LNFLG EQU $00 ;LINBUG RAM
|
|
||||||
NGFLAG EQU $01 ;POWER-UP SELF-TEST FLAG
|
|
||||||
;
|
|
||||||
; THESE LOCATIONS NOT CLEARED
|
|
||||||
;
|
|
||||||
CASINI EQU $02 ;CASSETTE INIT LOC
|
|
||||||
RAMLO EQU $04 ;RAM POINTER MEM TST
|
|
||||||
TRAMSZ EQU $06 ;TEMP REG RAM SIZE
|
|
||||||
TSTDAT EQU $07 ;RAM TEST DATA REG
|
|
||||||
;
|
|
||||||
;CLEARED ON COLDSTART ONLY
|
|
||||||
;
|
|
||||||
WARMST EQU $08 ;WARM START FLAG
|
|
||||||
BOOTQ EQU $09 ;SUCCESSFUL BOOT FLG
|
|
||||||
DOSVEC EQU $0A ;DOS START VECTOR
|
|
||||||
DOSINI EQU $0C ;DOS INIT ADDRESS
|
|
||||||
APPMHI EQU $0E ;APPL MEM HI LIMIT
|
|
||||||
;
|
|
||||||
;CLEARED ON COLD OR WARM START
|
|
||||||
;
|
|
||||||
POKMSK EQU $10 ;MASK POKEY IRQ
|
|
||||||
BRKKEY EQU $11 ;BREAK KEY FLAG
|
|
||||||
RTCLOK EQU $12 ;REAL TIME CLOCK
|
RTCLOK EQU $12 ;REAL TIME CLOCK
|
||||||
BUFADR EQU $15 ;INDIRECT BUFF ADDR
|
|
||||||
ICCOMT EQU $17 ;COMMAND FOR VECTOR
|
|
||||||
DSKFMS EQU $18 ;FMS POINTER
|
|
||||||
DSKUTL EQU $1A ;DISK UTILITIES PTR
|
|
||||||
ABUFPT EQU $1C ;RESERVED
|
|
||||||
ICHIDZ EQU $20 ;HANDLER INDEX #
|
|
||||||
ICDNOZ EQU $21 ;DEVICE NUMBER
|
|
||||||
ICCOMZ EQU $22 ;COMMAND CODE
|
|
||||||
ICSTAZ EQU $23 ;STATUS RETURN
|
|
||||||
ICBALZ EQU $24 ;BUFFER ADDRESS
|
|
||||||
ICBAHZ EQU $25
|
|
||||||
ICPTLZ EQU $26 ;PUT BYTE ROUTINE-1
|
|
||||||
ICPTHZ EQU $27
|
|
||||||
ICBLLZ EQU $28 ;BUFFER LENGTH
|
|
||||||
ICBLHZ EQU $29
|
|
||||||
ICAX1Z EQU $2A ;AUXILIARY BYTES
|
|
||||||
ICAX2Z EQU $2B
|
|
||||||
ICSPRZ EQU $2C ;SPARE BYTES
|
|
||||||
ICIDNO EQU $2E ;IOCB # X 16
|
|
||||||
CIOCHR EQU $2F ;CIO CHARACTER BYTE
|
|
||||||
STATUS EQU $30 ;INTERNAL STATUS
|
|
||||||
CHKSUM EQU $31 ;CHECKSUM
|
|
||||||
BUFRLO EQU $32 ;DATA BUFFER LO BYTE
|
|
||||||
BUFRHI EQU $33 ;DATA BUFFER HI BYTE
|
|
||||||
BFENLO EQU $34 ;NEXT BYTE PAST DATA
|
|
||||||
BFENHI EQU $35 ;BUFFER (HI & LO)
|
|
||||||
LTEMP EQU $36 ;LOADER TEMP
|
|
||||||
BUFRFL EQU $38 ;DATA BUFFR FULL FLG
|
|
||||||
RECVDN EQU $39 ;RECIEVE DONE FLAG
|
|
||||||
XMTDON EQU $3A ;XMIT DONE FLAG
|
|
||||||
CHKSNT EQU $3B ;CHECKSUM SENT FLAG
|
|
||||||
NOCKSM EQU $3C ;NO CHKSUM SENT FLAG
|
|
||||||
;BPTR EQU $3D ;CASSETTE DATA INDEX
|
|
||||||
FTYPE EQU $3E ;INTERRECORD GAP TYPE
|
|
||||||
FEOF EQU $3F ;END OF FILE FLAG
|
|
||||||
FREQ EQU $40 ;BEEP COUNT
|
|
||||||
SOUNDR EQU $41 ;NOISY I/O FLAG
|
|
||||||
CRITIC EQU $42 ;CRITICAL MODE
|
|
||||||
FMSZPG EQU $43 ;FMS ZERO PAGE
|
|
||||||
ZCHAIN EQU $4A ;HANDLER LOADER TEMP
|
|
||||||
DSTAT EQU $4C ;DISPLAY STATUS
|
|
||||||
ATRACT EQU $4D ;ATTRACT FLAG
|
|
||||||
DRKMSK EQU $4E ;DARK ATTRACT MASK
|
|
||||||
COLRSH EQU $4F ;COLOR SHIFTER
|
|
||||||
TMPCHR EQU $50 ;TEMP STORAGE
|
|
||||||
HOLD1 EQU $51 ;TEMP STORAGE
|
|
||||||
LMARGN EQU $52 ;LEFT MARGIN (1)
|
|
||||||
RMARGN EQU $53 ;RIGHT MARGIN (38)
|
|
||||||
ROWCRS EQU $54 ;CURSOR COUNTERS
|
|
||||||
COLCRS EQU $55
|
|
||||||
DINDEX EQU $57 ;DISPLAY MODE #
|
|
||||||
SAVMSC EQU $58 ;SCREEN MEM ADDR
|
|
||||||
OLDROW EQU $5A ;DRAW START POSIT
|
|
||||||
OLDCOL EQU $5B
|
|
||||||
OLDCHR EQU $5D ;DATA UNDER CURSOR
|
|
||||||
OLDADR EQU $5E ;CURSOR MEM ADDR
|
|
||||||
FKDEF EQU $60 ;FUNC KEY DEFEAT POINTER
|
|
||||||
PALNTS EQU $62 ;PAL/NTSC FLAG
|
|
||||||
LOGCOL EQU $63 ;COL IN LOGICAL LINE
|
|
||||||
ADRESS EQU $64 ;TEMP STORAGE
|
|
||||||
MLTEMP EQU $66 ;TEMP STORAGE
|
|
||||||
SAVADR EQU $68 ;TEMP STORAGE
|
|
||||||
RAMTOP EQU $6A ;AVAILABLE RAM PAGES
|
|
||||||
BUFCNT EQU $6B ;BUFFER COUNT
|
|
||||||
BUFSTR EQU $6C ;EDITOR GETCH POINTR
|
|
||||||
BITMSK EQU $6E ;BIT MASK
|
|
||||||
SHFAMT EQU $6F ;PIXEL JUSTIFICATION
|
|
||||||
ROWAC EQU $70 ;ROW ACCUMULATOR
|
|
||||||
COLAC EQU $72 ;COLUMN ACCUMULATOR
|
|
||||||
ENDPT EQU $74 ;LINE LENGTH
|
|
||||||
DELTAR EQU $76 ;DELTA ROW
|
|
||||||
DELTAC EQU $77 ;DELTA COLUMN
|
|
||||||
KEYDEF EQU $79 ;KEY DEFEAT POINTER
|
|
||||||
SWPFLG EQU $7B ;SPLIT SCN CURS CNTL
|
|
||||||
HOLDCH EQU $7C ;KB CHAR TEMP HOLD
|
|
||||||
INSDAT EQU $7D ;TEMP STORAGE
|
|
||||||
COUNTR EQU $7E ;DRAW ITERATION CNT
|
|
||||||
;
|
|
||||||
; 80-FF ARE RESERVED FOR USER
|
|
||||||
;
|
|
||||||
; NOTE: SEE FLOATING POINT
|
|
||||||
; SUBROUTINE AREA FOR ZERO
|
|
||||||
; PAGE CELLS
|
|
||||||
;
|
|
||||||
; PAGE 1 - HARDWARE STACK
|
|
||||||
;
|
;
|
||||||
; PAGE TWO RAM ASSIGNMENTS
|
; PAGE TWO RAM ASSIGNMENTS
|
||||||
;
|
;
|
||||||
@@ -524,44 +281,7 @@ MODE4 EQU $04 ; display list mode 4
|
|||||||
MODE8 EQU $08 ; display list mode 8
|
MODE8 EQU $08 ; display list mode 8
|
||||||
MODEE EQU $0E ; display list mode E
|
MODEE EQU $0E ; display list mode E
|
||||||
MODEF EQU $0F ; display list mode F
|
MODEF EQU $0F ; display list mode F
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
; ENUMS
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
.enum @dmactl
|
|
||||||
blank = %00
|
|
||||||
narrow = %01
|
|
||||||
standard= %10
|
|
||||||
wide = %11
|
|
||||||
missiles= %100
|
|
||||||
players = %1000
|
|
||||||
lineX1 = %10000
|
|
||||||
lineX2 = %00000
|
|
||||||
dma = %100000
|
|
||||||
.ende
|
|
||||||
|
|
||||||
scr48 = @dmactl(wide|dma|players|missiles|lineX1)
|
|
||||||
scr40 = @dmactl(standard|dma|players|missiles|lineX1)
|
|
||||||
scr32 = @dmactl(narrow|dma|players|missiles|lineX1)
|
|
||||||
|
|
||||||
.enum @pmcntl
|
|
||||||
missiles= %1
|
|
||||||
players = %10
|
|
||||||
trigs = %100
|
|
||||||
.ende
|
|
||||||
|
|
||||||
.enum @gtictl
|
|
||||||
prior0 = %0
|
|
||||||
prior1 = %1
|
|
||||||
prior2 = %10
|
|
||||||
prior4 = %100
|
|
||||||
prior8 = %1000
|
|
||||||
ply5 = %10000 ; Fifth Player Enable
|
|
||||||
mlc = %100000 ; Multiple Color Player Enable
|
|
||||||
mode9 = %01000000
|
|
||||||
mode10 = %10000000
|
|
||||||
mode11 = %11000000
|
|
||||||
.ende
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; KBCODEs
|
; KBCODEs
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
|
|||||||
+2
-9
@@ -181,7 +181,7 @@ FirstSTART
|
|||||||
DisplayCopyPurchaseStart = 0
|
DisplayCopyPurchaseStart = 0
|
||||||
displayC64 = $2000 ; graphics screen memory start
|
displayC64 = $2000 ; graphics screen memory start
|
||||||
|
|
||||||
; SEI ; disable IRQ
|
SEI ; disable IRQ
|
||||||
LDA #$36
|
LDA #$36
|
||||||
STA $0001 ; Turn Off BASIC ROM
|
STA $0001 ; Turn Off BASIC ROM
|
||||||
LDA #<NMI ;
|
LDA #<NMI ;
|
||||||
@@ -222,9 +222,6 @@ FirstSTART
|
|||||||
dey
|
dey
|
||||||
bpl @-
|
bpl @-
|
||||||
|
|
||||||
; set gradient to the full LGBTIQQAAPP+ flag on start
|
|
||||||
mva #0 GradientNr ; #1 to set gradient number 2 :) (next one)
|
|
||||||
jsr SelectNextGradient.NotWind
|
|
||||||
|
|
||||||
; generate linetables
|
; generate linetables
|
||||||
jsr GenerateLineTable
|
jsr GenerateLineTable
|
||||||
@@ -271,11 +268,7 @@ StillWait
|
|||||||
.proc IsKeyPressed
|
.proc IsKeyPressed
|
||||||
; result: A=0 - yes , A>0 - no
|
; result: A=0 - yes , A>0 - no
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda SKSTAT
|
|
||||||
and #%00000100
|
|
||||||
beq @+
|
|
||||||
lda #1
|
lda #1
|
||||||
@ and STRIG0
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -308,7 +301,7 @@ MakeDarkScreen
|
|||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc WaitOneFrame
|
.proc WaitOneFrame
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
seq:wait ; or waitRTC ?
|
wait ; or waitRTC ?
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user