migrated to ACME assembler
commit 145d64aa6e78838ed07cefed372f0ad6a4687e97 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 20:16:57 2020 +0200 ACME adaptation commit 885209d7822286744ea53232ae7461472a01d5d6 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 19:57:25 2020 +0200 ACME adaptation commit 334d84486bc603551887e7cbeb59d329f2224cc7 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 18:29:15 2020 +0200 ACME adaptation commit b5966f49bcd8f0ca79cbec93819a31238924707e Author: FeralChild64 <you@example.com> Date: Sun Sep 20 18:09:31 2020 +0200 ACME adaptation commit 786536a93a5eab5e676fca99625b4eb094a554e7 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 17:24:48 2020 +0200 ACME adaptation commit 704c70dfb1f5d68775d6f3da220803b8a3990f56 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 15:07:12 2020 +0200 ACME adaptation commit 136874964c9083b375f151475310f9636871fc72 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 14:45:14 2020 +0200 ACME adaptation commit 8eca0d5700b72d04336e72c5cd3a68e18b85f96d Author: FeralChild64 <you@example.com> Date: Sun Sep 20 14:06:52 2020 +0200 ACME adaptation commit 11d29eb7ee318239d782f85498b6d0524624d5c4 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 13:56:45 2020 +0200 ACME apaptation commit c9b5e5e04cceb92c66bc027e6440bc0f7c5a499f Author: FeralChild64 <you@example.com> Date: Sun Sep 20 13:49:04 2020 +0200 ACME adaptation commit f5cc254cbc921f07863807468cb3fe26b410b409 Author: FeralChild64 <you@example.com> Date: Sun Sep 20 13:01:18 2020 +0200 ACME adaptation commit e135a27bf9c30cc0965379c954564e06406303b1 Author: FeralChild64 <you@example.com> Date: Sat Sep 19 21:55:01 2020 +0200 ACME adaptation commit e9dfddf90d9e2795e88b7da40ae050d733faeb56 Author: FeralChild64 <you@example.com> Date: Sat Sep 19 21:48:47 2020 +0200 Makefile fix commit 07030104c65cf5e5beeacf6d629ccb9245e58657 Author: FeralChild64 <you@example.com> Date: Sat Sep 19 21:42:00 2020 +0200 ACME adaptation commit f824362ee5bcfbffca86c430b57773b2ffd65655 Author: FeralChild64 <you@example.com> Date: Sat Sep 19 20:14:56 2020 +0200 ACME adaptation commit 3a3c59007dcd4940d89b8669f34ca56b61c25fdf Author: FeralChild64 <you@example.com> Date: Fri Sep 18 21:51:45 2020 +0200 ACME adaptation commit 6790ef7bc88a41de2881c69b7524dd4ab8c74b5d Author: FeralChild64 <you@example.com> Date: Fri Sep 18 20:35:23 2020 +0200 ACME adaptation commit 38ad18b90e9ec713aa7ca49576b3388ce1733357 Author: FeralChild64 <you@example.com> Date: Fri Sep 18 18:46:20 2020 +0200 ACME adaptation commit 541340371122a9702f7b2d9771c298223cffd0e9 Author: FeralChild64 <you@example.com> Date: Fri Sep 18 16:49:46 2020 +0200 ACME adaptation commit 25cfd5e186459be1a260d3eb8cfff767838de370 Author: FeralChild64 <you@example.com> Date: Thu Sep 17 20:13:33 2020 +0200 ACME adaptation commit f61599444d5b1d03d8fd8e4a6a7c3b85069bedb3 Author: FeralChild64 <you@example.com> Date: Thu Sep 17 19:29:23 2020 +0200 ACME adaptation commit b290be31ec7bb2e5723607697da1bbc621c84429 Author: FeralChild64 <you@example.com> Date: Thu Sep 17 17:20:14 2020 +0200 ACME adaptation commit 877be9e856880d98fd4bcb25b42aaaacda9dc463 Author: FeralChild64 <you@example.com> Date: Wed Sep 16 21:47:38 2020 +0200 ACME adaptation commit bb20edaf85d386e41d5c2f715b745b68fbd3362e Author: FeralChild64 <you@example.com> Date: Wed Sep 16 21:31:30 2020 +0200 ACME adaptation commit c5d31bd8685abce37c8e254d15aac20bd1570d9f Author: FeralChild64 <you@example.com> Date: Wed Sep 16 18:40:49 2020 +0200 ACME adaptation commit 29349826b38f8a89649171559dc8cf24c560aff1 Author: FeralChild64 <you@example.com> Date: Mon Sep 14 23:35:47 2020 +0200 ACME adaptation commit 8bcd6a621c4b11766d0cf34f79858ba90a67248e Author: FeralChild64 <you@example.com> Date: Mon Sep 14 22:52:25 2020 +0200 ACME adaptation commit e87a69edc2ce4bfcc460c31e08dcc352a985f88d Author: FeralChild64 <you@example.com> Date: Mon Sep 14 22:43:27 2020 +0200 ACME adaptation commit f49a097bd52e96d00b866c02bda7121e4543233c Author: FeralChild64 <you@example.com> Date: Mon Sep 14 19:02:07 2020 +0200 ACME adaptation commit fa0e9214a633b8e8f867cc70925b390940dcd426 Author: FeralChild64 <you@example.com> Date: Mon Sep 14 17:47:19 2020 +0200 ACME adaptation commit 1b763b91e7a03e426227129c7f22f0ce57a4c197 Author: FeralChild64 <you@example.com> Date: Mon Sep 14 17:17:10 2020 +0200 ACME adaptation commit e92a4b57b232cd85eb1e71090b8a89c7c8461ebc Author: FeralChild64 <you@example.com> Date: Mon Sep 14 17:15:37 2020 +0200 ACME adaptation commit de3c693e8a7e73ea5289198946058e3240894e6a Author: FeralChild64 <you@example.com> Date: Mon Sep 14 17:10:05 2020 +0200 ACME adaptation commit f9bd7ae0f04e932d613be9ed5cb19af9be5d338e Author: FeralChild64 <you@example.com> Date: Sun Sep 13 14:34:44 2020 +0200 ACME adaptation commit 694dee52555dbfc2b1f7f452a9671ff51106c057 Author: FeralChild64 <you@example.com> Date: Sun Sep 13 14:16:14 2020 +0200 ACME adaptation commit 0af2c55edfcd22942d9f25417eb0d35f55b71604 Author: FeralChild64 <you@example.com> Date: Fri Sep 11 17:38:09 2020 +0200 ACME adaptation commit 2015e17334bd56a1e8a13a5abc098d9c2e7ea44f Author: FeralChild64 <you@example.com> Date: Fri Sep 11 16:46:05 2020 +0200 ACME adaptation commit b1e972162798d60f4483cd6cc261e856c20c2c8c Author: FeralChild64 <you@example.com> Date: Fri Sep 11 16:24:31 2020 +0200 ACME adaptation commit 9d027e868466901ba53bf074a79ec8cf16273021 Author: FeralChild64 <you@example.com> Date: Fri Sep 11 15:04:31 2020 +0200 ACME adaptation commit 957186deddd1aa4f3b4f1aa1f421e4239a584e57 Author: FeralChild64 <you@example.com> Date: Thu Sep 10 22:49:07 2020 +0200 ACME adaptation commit b8060f67a455cfac109f08d96b62c360d693b931 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 23:07:28 2020 +0200 ACME adaptation commit e54d004568f44bbfe5c070ef1d7cf3544112e497 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 22:58:20 2020 +0200 ACME adaptation commit f90b77f073c5a605cb31c6ee451f65c8a8aff7d8 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 22:12:09 2020 +0200 ACME adaptation commit b211bb4afcd9c58fe1f5c92f3007717d611cd531 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 22:01:40 2020 +0200 ACME adaptation commit 8d7ea343b07e9e08e5f77f3c414758a6cffd0440 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 21:38:34 2020 +0200 ACME adaptation commit 46413eb0d92d6400aba0ff8dfe556e61e8a44d78 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 21:07:47 2020 +0200 ACME adaptation commit 9f98f69ecc21f7b74a5eb89e247f5a2c6fcb655d Author: FeralChild64 <you@example.com> Date: Wed Sep 9 20:05:03 2020 +0200 ACME adaptation commit 7bb9f1cadc682c7e0a4a6796739d860d473ca110 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 19:55:12 2020 +0200 ACME adaptation commit 5fc115392b5bdca6b56f67ad866b1884d2d2bdf8 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 19:31:10 2020 +0200 ACME adaptation commit b7940fc60e568d859df9e3156f6bacc6d685b2cc Author: FeralChild64 <you@example.com> Date: Wed Sep 9 19:16:09 2020 +0200 ACME adaptation commit 56288cb97197561afa0816b29c134ec1190e8eab Author: FeralChild64 <you@example.com> Date: Wed Sep 9 18:48:23 2020 +0200 ACME adaptation commit 10401a60fc7922a53d782120ef6795d889140218 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 16:34:16 2020 +0200 ACME adaptation commit 8ce76e4d2b56837a691ae84b1a412a2ae32a157b Author: FeralChild64 <you@example.com> Date: Wed Sep 9 16:20:44 2020 +0200 ACME adaptation commit 33fade899fa6172ea6b5b5f6683bb61f544429fd Author: FeralChild64 <you@example.com> Date: Wed Sep 9 15:28:46 2020 +0200 ACME adaptation commit a416f04734402fcfbc57a933731376df2e0180a1 Author: FeralChild64 <you@example.com> Date: Wed Sep 9 12:40:03 2020 +0200 ACME adaptation commit f8daee005b1d29f6912723be2ac94bc5fbeb0508 Author: FeralChild64 <you@example.com> Date: Mon Sep 7 23:29:54 2020 +0200 ACME adaptation commit 83fe6bdd0b08a44fdbfc6eefe323a4b194ccaf5b Author: FeralChild64 <you@example.com> Date: Mon Sep 7 22:23:16 2020 +0200 ACME adaptation commit cb1f75620b9c83000a15c9c7f7acefdfee79a979 Author: FeralChild64 <you@example.com> Date: Mon Sep 7 19:23:12 2020 +0200 ACME adaptation commit e524d517c933ae1f0aeb49764d307fadb4845025 Author: FeralChild64 <you@example.com> Date: Sun Sep 6 08:24:25 2020 +0200 ACME adaptation - replaced comments commit 2ab572c3a21f4a78a7312d0e684bc11d91d1717a Author: FeralChild64 <you@example.com> Date: Sat Sep 5 17:59:10 2020 +0200 ACME adaptation - replaced the assembler
This commit is contained in:
1 parent
bfc8291e41
commit
c8d255130c
685 files changed
+15835
-16296
No files matched your search
+287
-290
@@ -1,329 +1,326 @@
|
||||
//
|
||||
// Names of ZP and low memory locations:
|
||||
// - Computes Mapping the Commodore 64
|
||||
// - https://www.c64-wiki.com/wiki/Zeropage
|
||||
// - http://unusedino.de/ec64/technical/project64/memory_maps.html
|
||||
//
|
||||
;
|
||||
; Names of ZP and low memory locations:
|
||||
; - Computes Mapping the Commodore 64
|
||||
; - https://www.c64-wiki.com/wiki/Zeropage
|
||||
; - http://unusedino.de/ec64/technical/project64/memory_maps.html
|
||||
;
|
||||
|
||||
// $00-$01 - 6502 CPU registers are here
|
||||
; $00-$01 - 6502 CPU registers are here
|
||||
|
||||
//
|
||||
// Page 0 - BASIC area ($02-$8F)
|
||||
//
|
||||
;
|
||||
; Page 0 - BASIC area ($02-$8F)
|
||||
;
|
||||
|
||||
// $02 -- UNUSED -- free for user software
|
||||
.label ADRAY1 = $03 // $03-$04
|
||||
.label ADRAY2 = $05 // $05-$06
|
||||
.label CHARAC = $07 // [!] our implementation might be different XXX give more details
|
||||
.label ENDCHR = $08 // [!] our implementation might be different XXX give more details
|
||||
.label TRMPOS = $09 // -- NOT IMPLEMENTED --
|
||||
.label VERCKB = $0A // flag used by BASIC, 0 - LOAD, 1 - VERIFY
|
||||
.label COUNT = $0B // [!] our implementation might be different XXX give more details
|
||||
.label DIMFLG = $0C // [!] our implementation might be different XXX give more details
|
||||
.label VALTYP = $0D // expression eveluation result; $00 - float, $FF - string
|
||||
.label INTFLG = $0E // -- NOT IMPLEMENTED --
|
||||
.label GARBFL = $0F // [!] our implementation might be different XXX give more details
|
||||
.label SUBFLG = $10 // -- NOT IMPLEMENTED --
|
||||
.label INPFLG = $11 // -- NOT IMPLEMENTED --
|
||||
.label TANSGN = $12 // -- NOT IMPLEMENTED --
|
||||
.label CHANNL = $13 // -- NOT IMPLEMENTED --
|
||||
.label LINNUM = $14 // $14-$15 BASIC line number, [!] also used by DOS Wedge
|
||||
.label TEMPPT = $16 // pointer to the first available slot in the temporary string descriptor stack
|
||||
.label LASTPT = $17 // $17-$18 pointer to the last used slot in the temporary string descriptor
|
||||
.label TEMPST = $19 // $19-$21 temporary string stack descriptors
|
||||
.label INDEX = $22 // $22-$25 temporary variables, [!] our usage might be different
|
||||
.label RESHO = $26 // $26-$2A temporary variables, [!] our usage might be different
|
||||
.label TXTTAB = $2B // $2B-$2C start of BASIC code
|
||||
.label VARTAB = $2D // $2D-$2E end of BASIC code, start of variables
|
||||
.label ARYTAB = $2F // $2F-$30 pointer to start of array storage
|
||||
.label STREND = $31 // $31-$32 pointer to start of free RAM
|
||||
.label FRETOP = $33 // $33-$34 pointer to bottom of strings area
|
||||
.label FRESPC = $35 // $35-$36 [!] our implementation uses this as temporary string pointer
|
||||
.label MEMSIZ = $37 // $37-$38 highest address of BASIC memory + 1
|
||||
.label CURLIN = $39 // $39-$3A current BASIC line number
|
||||
.label OLDLIN = $3B // $3B-$3C previous BASIC line number
|
||||
.label OLDTXT = $3D // $3D-$3E current BASIC line pointer
|
||||
.label DATLIN = $3F // $3F-$40 -- NOT IMPLEMENTED --
|
||||
.label DATPTR = $41 // $41-$42 pointer for READ/DATA copmmands
|
||||
.label INPPTR = $43 // $43-$44 -- NOT IMPLEMENTED --
|
||||
.label VARNAM = $45 // $45-$46 current variable name
|
||||
.label VARPNT = $47 // $47-$48 current variable/descriptor pointer
|
||||
.label FORPNT = $49 // $49-$4A -- NOT IMPLEMENTED --
|
||||
.label OPPTR = $4B // $4B-$4C helper variable for expression computation, [!] our usage details are different
|
||||
.label OPMASK = $4D // -- NOT IMPLEMENTED --
|
||||
.label DEFPNT = $4E // $4E-$4F -- NOT IMPLEMENTED --
|
||||
.label DSCPNT = $50 // $50-$52 temporary area fro string handling, [!] our usage might differ
|
||||
.label FOUR6 = $53 // size of variable content (float = 5, integer = 2, string descriptor = 3)
|
||||
.label JMPER = $54 // $54-$56 -- NOT IMPLEMENTED --
|
||||
.label TEMPF1 = $57 // $57-$5B BASIC numeric work area
|
||||
.label TEMPF2 = $5C // $5C-$60 BASIC numeric work area
|
||||
; $02 -- UNUSED -- free for user software
|
||||
!addr ADRAY1 = $03 ; $03-$04
|
||||
!addr ADRAY2 = $05 ; $05-$06
|
||||
!addr CHARAC = $07 ; [!] our implementation might be different XXX give more details
|
||||
!addr ENDCHR = $08 ; [!] our implementation might be different XXX give more details
|
||||
!addr TRMPOS = $09 ; -- NOT IMPLEMENTED --
|
||||
!addr VERCKB = $0A ; flag used by BASIC, 0 - LOAD, 1 - VERIFY
|
||||
!addr COUNT = $0B ; [!] our implementation might be different XXX give more details
|
||||
!addr DIMFLG = $0C ; [!] our implementation might be different XXX give more details
|
||||
!addr VALTYP = $0D ; expression eveluation result; $00 - float, $FF - string
|
||||
!addr INTFLG = $0E ; -- NOT IMPLEMENTED --
|
||||
!addr GARBFL = $0F ; [!] our implementation might be different XXX give more details
|
||||
!addr SUBFLG = $10 ; -- NOT IMPLEMENTED --
|
||||
!addr INPFLG = $11 ; -- NOT IMPLEMENTED --
|
||||
!addr TANSGN = $12 ; -- NOT IMPLEMENTED --
|
||||
!addr CHANNL = $13 ; -- NOT IMPLEMENTED --
|
||||
!addr LINNUM = $14 ; $14-$15 BASIC line number, [!] also used by DOS Wedge
|
||||
!addr TEMPPT = $16 ; pointer to the first available slot in the temporary string descriptor stack
|
||||
!addr LASTPT = $17 ; $17-$18 pointer to the last used slot in the temporary string descriptor
|
||||
!addr TEMPST = $19 ; $19-$21 temporary string stack descriptors
|
||||
!addr INDEX = $22 ; $22-$25 temporary variables, [!] our usage might be different
|
||||
!addr RESHO = $26 ; $26-$2A temporary variables, [!] our usage might be different
|
||||
!addr TXTTAB = $2B ; $2B-$2C start of BASIC code
|
||||
!addr VARTAB = $2D ; $2D-$2E end of BASIC code, start of variables
|
||||
!addr ARYTAB = $2F ; $2F-$30 pointer to start of array storage
|
||||
!addr STREND = $31 ; $31-$32 pointer to start of free RAM
|
||||
!addr FRETOP = $33 ; $33-$34 pointer to bottom of strings area
|
||||
!addr FRESPC = $35 ; $35-$36 [!] our implementation uses this as temporary string pointer
|
||||
!addr MEMSIZ = $37 ; $37-$38 highest address of BASIC memory + 1
|
||||
!addr CURLIN = $39 ; $39-$3A current BASIC line number
|
||||
!addr OLDLIN = $3B ; $3B-$3C previous BASIC line number
|
||||
!addr OLDTXT = $3D ; $3D-$3E current BASIC line pointer
|
||||
!addr DATLIN = $3F ; $3F-$40 -- NOT IMPLEMENTED --
|
||||
!addr DATPTR = $41 ; $41-$42 pointer for READ/DATA copmmands
|
||||
!addr INPPTR = $43 ; $43-$44 -- NOT IMPLEMENTED --
|
||||
!addr VARNAM = $45 ; $45-$46 current variable name
|
||||
!addr VARPNT = $47 ; $47-$48 current variable/descriptor pointer
|
||||
!addr FORPNT = $49 ; $49-$4A -- NOT IMPLEMENTED --
|
||||
!addr OPPTR = $4B ; $4B-$4C helper variable for expression computation, [!] our usage details are different
|
||||
!addr OPMASK = $4D ; -- NOT IMPLEMENTED --
|
||||
!addr DEFPNT = $4E ; $4E-$4F -- NOT IMPLEMENTED --
|
||||
!addr DSCPNT = $50 ; $50-$52 temporary area fro string handling, [!] our usage might differ
|
||||
!addr FOUR6 = $53 ; size of variable content (float = 5, integer = 2, string descriptor = 3)
|
||||
!addr JMPER = $54 ; $54-$56 -- NOT IMPLEMENTED --
|
||||
!addr TEMPF1 = $57 ; $57-$5B BASIC numeric work area
|
||||
!addr TEMPF2 = $5C ; $5C-$60 BASIC numeric work area
|
||||
|
||||
.label __FAC1 = $61 // $61-$66 floating point accumulator 1
|
||||
.label FAC1_exponent = $61
|
||||
.label FAC1_mantissa = $62 // $62 - $65
|
||||
.label FAC1_sign = $66
|
||||
!addr __FAC1 = $61 ; $61-$66 floating point accumulator 1
|
||||
!addr FAC1_exponent = $61
|
||||
!addr FAC1_mantissa = $62 ; $62 - $65
|
||||
!addr FAC1_sign = $66
|
||||
|
||||
.label SGNFLG = $67 // -- NOT IMPLEMENTED --
|
||||
.label BITS = $68 // FAC1 overflow
|
||||
!addr SGNFLG = $67 ; -- NOT IMPLEMENTED --
|
||||
!addr BITS = $68 ; FAC1 overflow
|
||||
|
||||
.label __FAC2 = $69 // $69-$6E floating point accumulator 2 [!] also used for memory move pointers
|
||||
.label FAC2_exponent = $69
|
||||
.label FAC2_mantissa = $6A // $6A - $6D
|
||||
.label FAC2_sign = $6E
|
||||
!addr __FAC2 = $69 ; $69-$6E floating point accumulator 2 [!] also used for memory move pointers
|
||||
!addr FAC2_exponent = $69
|
||||
!addr FAC2_mantissa = $6A ; $6A - $6D
|
||||
!addr FAC2_sign = $6E
|
||||
|
||||
.label ARISGN = $6F // -- NOT IMPLEMENTED --
|
||||
.label FACOV = $70 // FAC1 low order mantissa
|
||||
.label FBUFPT = $71 // $71-$72 -- NOT IMPLEMENTED --
|
||||
.label CHRGET = $73 // $73-$8A -- NOT IMPLEMENTED --
|
||||
.label TXTPTR = $7A // $7A-$7B current BASIC statement pointer
|
||||
.label RNDX = $8B // $8B-$8F random number seed
|
||||
!addr ARISGN = $6F ; -- NOT IMPLEMENTED --
|
||||
!addr FACOV = $70 ; FAC1 low order mantissa
|
||||
!addr FBUFPT = $71 ; $71-$72 -- NOT IMPLEMENTED --
|
||||
!addr CHRGET = $73 ; $73-$8A -- NOT IMPLEMENTED --
|
||||
!addr TXTPTR = $7A ; $7A-$7B current BASIC statement pointer
|
||||
!addr RNDX = $8B ; $8B-$8F random number seed
|
||||
|
||||
//
|
||||
// Page 0 - Kernal area ($90-$FF)
|
||||
//
|
||||
;
|
||||
; Page 0 - Kernal area ($90-$FF)
|
||||
;
|
||||
|
||||
.label IOSTATUS = $90
|
||||
.label STKEY = $91 // keys down clears bits. STOP - bit 7, C= - bit 6, SPACE - bit 4, CTRL - bit 2
|
||||
.label SVXT = $92 // tape reading constant [!] our tape routines use it differently
|
||||
.label VERCKK = $93 // 0 = LOAD, 1 = VERIFY
|
||||
.label C3PO = $94 // flag - is BSOUR content valid
|
||||
.label BSOUR = $95 // serial bus buffered output byte
|
||||
.label SYNO = $96 // temporary tape routines storage, [!] our usage differs
|
||||
.label XSAV = $97 // temporary register storage for ASCII/tape related routines [!] usage details might differ
|
||||
.label LDTND = $98 // number of entries in LAT / FAT / SAT tables
|
||||
.label DFLTN = $99 // default input device
|
||||
.label DFLTO = $9A // default output device
|
||||
.label PRTY = $9B // tape storage for parity/checksum
|
||||
#if !CONFIG_TAPE_NORMAL && !CONFIG_TAPE_TURBO
|
||||
.label DPSW = $9C // -- NOT IMPLEMENTED --
|
||||
#else
|
||||
.label COLSTORE = $9C // [!] screen border storage for tape routines
|
||||
#endif
|
||||
.label MSGFLG = $9D // bit 6 = error messages, bit 7 = control message
|
||||
.label PTR1 = $9E // for tape support, counter of errorneous bytes
|
||||
.label PTR2 = $9F // for tape support, counter for errorneous bytes correction
|
||||
.label TIME = $A0 // $A0-$A2 jiffy clock
|
||||
.label IECPROTO = $A3 // [!] IEC or pseudo-IEC protocol, >= $80 for unknown; originally named TSFCNT
|
||||
.label TBTCNT = $A4 // temporary variable for tape and IEC, [!] our usage probably differs in details
|
||||
.label CNTDN = $A5 // -- NOT IMPLEMENTED --
|
||||
.label BUFPNT = $A6 // -- NOT IMPLEMENTED --
|
||||
.label INBIT = $A7 // temporary storage for tape / RS-232 received bits
|
||||
#if !CONFIG_LEGACY_SCNKEY
|
||||
.label BITCI = $A8 // -- NOT IMPLEMENTED --
|
||||
.label RINONE = $A9 // -- WIP -- (UP9600 only) RS-232 check for start bit flag
|
||||
.label RIDDATA = $AA // -- NOT IMPLEMENTED --
|
||||
.label RIPRTY = $AB // -- WIP -- checksum while reading tape
|
||||
#endif
|
||||
.label SAL = $AC // $AC-$AD -- XXX: describe -- (implemented screen part)
|
||||
.label EAL = $AE // $AE-$AF -- XXX: describe -- [!] used also by screen editor, for temporary color storage when scrolling
|
||||
.label CMP0 = $B0 // $B0-$B1 temporary tape storage, [!] here used for BRK instruction address
|
||||
.label TAPE1 = $B2 // $B2-$B3 tape buffer pointer
|
||||
#if !CONFIG_LEGACY_SCNKEY
|
||||
.label BITTS = $B4 // -- NOT IMPLEMENTED --
|
||||
#endif
|
||||
.label NXTBIT = $B5 // -- NOT IMPLEMENTED --
|
||||
#if !CONFIG_LEGACY_SCNKEY
|
||||
.label RODATA = $B6 // -- NOT IMPLEMENTED --
|
||||
#endif
|
||||
!addr IOSTATUS = $90
|
||||
!addr STKEY = $91 ; keys down clears bits. STOP - bit 7, C= - bit 6, SPACE - bit 4, CTRL - bit 2
|
||||
!addr SVXT = $92 ; tape reading constant [!] our tape routines use it differently
|
||||
!addr VERCKK = $93 ; 0 = LOAD, 1 = VERIFY
|
||||
!addr C3PO = $94 ; flag - is BSOUR content valid
|
||||
!addr BSOUR = $95 ; serial bus buffered output byte
|
||||
!addr SYNO = $96 ; temporary tape routines storage, [!] our usage differs
|
||||
!addr XSAV = $97 ; temporary register storage for ASCII/tape related routines [!] usage details might differ
|
||||
!addr LDTND = $98 ; number of entries in LAT / FAT / SAT tables
|
||||
!addr DFLTN = $99 ; default input device
|
||||
!addr DFLTO = $9A ; default output device
|
||||
!addr PRTY = $9B ; tape storage for parity/checksum
|
||||
!ifndef HAS_TAPE {
|
||||
!addr DPSW = $9C ; -- NOT IMPLEMENTED --
|
||||
} else {
|
||||
!addr COLSTORE = $9C ; [!] screen border storage for tape routines
|
||||
}
|
||||
!addr MSGFLG = $9D ; bit 6 = error messages, bit 7 = control message
|
||||
!addr PTR1 = $9E ; for tape support, counter of errorneous bytes
|
||||
!addr PTR2 = $9F ; for tape support, counter for errorneous bytes correction
|
||||
!addr TIME = $A0 ; $A0-$A2 jiffy clock
|
||||
!addr IECPROTO = $A3 ; [!] IEC or pseudo-IEC protocol, >= $80 for unknown; originally named TSFCNT
|
||||
!addr TBTCNT = $A4 ; temporary variable for tape and IEC, [!] our usage probably differs in details
|
||||
!addr CNTDN = $A5 ; -- NOT IMPLEMENTED --
|
||||
!addr BUFPNT = $A6 ; -- NOT IMPLEMENTED --
|
||||
!addr INBIT = $A7 ; temporary storage for tape / RS-232 received bits
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr BITCI = $A8 ; -- NOT IMPLEMENTED --
|
||||
!addr RINONE = $A9 ; -- WIP -- (UP9600 only) RS-232 check for start bit flag
|
||||
!addr RIDDATA = $AA ; -- NOT IMPLEMENTED --
|
||||
!addr RIPRTY = $AB ; -- WIP -- checksum while reading tape
|
||||
}
|
||||
!addr SAL = $AC ; $AC-$AD -- XXX: describe -- (implemented screen part)
|
||||
!addr EAL = $AE ; $AE-$AF -- XXX: describe -- [!] used also by screen editor, for temporary color storage when scrolling
|
||||
!addr CMP0 = $B0 ; $B0-$B1 temporary tape storage, [!] here used for BRK instruction address
|
||||
!addr TAPE1 = $B2 ; $B2-$B3 tape buffer pointer
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr BITTS = $B4 ; -- NOT IMPLEMENTED --
|
||||
}
|
||||
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED --
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr RODATA = $B6 ; -- NOT IMPLEMENTED --
|
||||
}
|
||||
!addr FNLEN = $B7 ; current file name length
|
||||
!addr LA = $B8 ; current logical_file number
|
||||
!addr SA = $B9 ; current secondary address
|
||||
!addr FA = $BA ; current device number
|
||||
!addr FNADDR = $BB ; $BB-$BC current file name pointer
|
||||
!addr ROPRTY = $BD ; -- NOT IMPLEMENTED -- tape / RS-232 temporary storage
|
||||
!addr FSBLK = $BE ; -- NOT IMPLEMENTED -- tape / RS-232 temporary storage
|
||||
!addr MYCH = $BF ; -- NOT IMPLEMENTED --
|
||||
!addr CAS1 = $C0 ; tape motor interlock
|
||||
!addr STAL = $C1 ; $C1-$C2 LOAD/SAVE start address
|
||||
!addr MEMUSS = $C3 ; $C3-$C4 temporary address for tape LOAD/SAVE
|
||||
!addr LSTX = $C5 ; last key matrix position [!] our usage probably differs in details
|
||||
!addr NDX = $C6 ; number of chars in keyboard buffer
|
||||
!addr RVS = $C7 ; flag, whether to print reversed characters
|
||||
!addr INDX = $C8 ; end of logical line (column, 0-79)
|
||||
!addr LSXP = $C9 ; $C9-$CA start of input, X/Y position (typo in Mapping the C64, fixed in Mapping the C128)
|
||||
!addr SFDX = $CB ; -- NOT IMPLEMENTED --
|
||||
!addr BLNSW = $CC ; cursor blink disable flag
|
||||
!addr BLNCT = $CD ; cursor blink countdown
|
||||
!addr GDBLN = $CE ; cursor saved character
|
||||
!addr BLNON = $CF ; cursor visibility flag
|
||||
!addr CRSW = $D0 ; whether to input from screen or keyboard (if from screen, stores input offset)
|
||||
!addr PNT = $D1 ; $D1-$D2 pointer to the current screen line
|
||||
!addr PNTR = $D3 ; current screen X position (logical column), 0-79
|
||||
!addr QTSW = $D4 ; quote mode flag
|
||||
!addr LNMX = $D5 ; logical line length, 39 or 79
|
||||
!addr TBLX = $D6 ; current screen Y position (row), 0-24
|
||||
!addr SCHAR = $D7 ; ASCII value of the last printed character
|
||||
!addr INSRT = $D8 ; insert mode flag/counter
|
||||
!addr LDTB1 = $D9 ; $D9-$F2 screen line link table, [!] our usage is different XXX give more details
|
||||
!addr USER = $F3 ; $F3-$F4 pointer to current color RAM location
|
||||
!addr KEYTAB = $F5 ; $F5-$F6 pointer to keyboard lookup table
|
||||
!addr RIBUF = $F7 ; $F7-$F8 -- WIP -- RS-232 receive buffer pointer
|
||||
!addr ROBUF = $F9 ; $F9-$FA -- WIP -- RS-232 send buffer pointer
|
||||
; $FB $FB-$FE -- UNUSED -- free for user software
|
||||
!addr BASZPT = $FF ; -- NOT IMPLEMENTED --
|
||||
|
||||
.label FNLEN = $B7 // current file name length
|
||||
.label LA = $B8 // current logical_file number
|
||||
.label SA = $B9 // current secondary address
|
||||
.label FA = $BA // current device number
|
||||
.label FNADDR = $BB // $BB-$BC current file name pointer
|
||||
.label ROPRTY = $BD // -- NOT IMPLEMENTED -- tape / RS-232 temporary storage
|
||||
.label FSBLK = $BE // -- NOT IMPLEMENTED -- tape / RS-232 temporary storage
|
||||
.label MYCH = $BF // -- NOT IMPLEMENTED --
|
||||
.label CAS1 = $C0 // tape motor interlock
|
||||
.label STAL = $C1 // $C1-$C2 LOAD/SAVE start address
|
||||
.label MEMUSS = $C3 // $C3-$C4 temporary address for tape LOAD/SAVE
|
||||
.label LSTX = $C5 // last key matrix position [!] our usage probably differs in details
|
||||
.label NDX = $C6 // number of chars in keyboard buffer
|
||||
.label RVS = $C7 // flag, whether to print reversed characters
|
||||
.label INDX = $C8 // end of logical line (column, 0-79)
|
||||
.label LSXP = $C9 // $C9-$CA start of input, X/Y position (typo in Mapping the C64, fixed in Mapping the C128)
|
||||
.label SFDX = $CB // -- NOT IMPLEMENTED --
|
||||
.label BLNSW = $CC // cursor blink disable flag
|
||||
.label BLNCT = $CD // cursor blink countdown
|
||||
.label GDBLN = $CE // cursor saved character
|
||||
.label BLNON = $CF // cursor visibility flag
|
||||
.label CRSW = $D0 // whether to input from screen or keyboard (if from screen, stores input offset)
|
||||
.label PNT = $D1 // $D1-$D2 pointer to the current screen line
|
||||
.label PNTR = $D3 // current screen X position (logical column), 0-79
|
||||
.label QTSW = $D4 // quote mode flag
|
||||
.label LNMX = $D5 // logical line length, 39 or 79
|
||||
.label TBLX = $D6 // current screen Y position (row), 0-24
|
||||
.label SCHAR = $D7 // ASCII value of the last printed character
|
||||
.label INSRT = $D8 // insert mode flag/counter
|
||||
.label LDTB1 = $D9 // $D9-$F2 screen line link table, [!] our usage is different XXX give more details
|
||||
.label USER = $F3 // $F3-$F4 pointer to current color RAM location
|
||||
.label KEYTAB = $F5 // $F5-$F6 pointer to keyboard lookup table
|
||||
.label RIBUF = $F7 // $F7-$F8 -- WIP -- RS-232 receive buffer pointer
|
||||
.label ROBUF = $F9 // $F9-$FA -- WIP -- RS-232 send buffer pointer
|
||||
// $FB $FB-$FE -- UNUSED -- free for user software
|
||||
.label BASZPT = $FF // -- NOT IMPLEMENTED --
|
||||
;
|
||||
; Page 1
|
||||
;
|
||||
|
||||
//
|
||||
// Page 1
|
||||
//
|
||||
!addr STACK = $100 ; $100-$1FF, processor stack
|
||||
|
||||
.label STACK = $100 // $100-$1FF, processor stack
|
||||
|
||||
//
|
||||
// Pages 2 & 3
|
||||
//
|
||||
;
|
||||
; Pages 2 & 3
|
||||
;
|
||||
|
||||
.label BUF = $200 // $200-$250, BASIC line editor input buffer (81 bytes)
|
||||
!addr BUF = $200 ; $200-$250, BASIC line editor input buffer (81 bytes)
|
||||
|
||||
// $250-$258 is the 81st - 88th characters in BASIC input, a carry over from VIC-20
|
||||
// and not used on C64 - they are used if CONFIG_LEGACY_SCNKEY is enabled.
|
||||
; $250-$258 is the 81st - 88th characters in BASIC input, a carry over from VIC-20
|
||||
; and not used on C64 - they are used if CONFIG_LEGACY_SCNKEY is enabled.
|
||||
|
||||
// [!] XXX document $251-$258 usage
|
||||
.label LAT = $259 // $259-$262, logical file numbers (table, 10 bytes)
|
||||
.label FAT = $263 // $263-$26C, device numbers (table, 10 bytes)
|
||||
.label SAT = $26D // $26D-$276, secondary addresses (table, 10 bytes)
|
||||
.label KEYD = $277 // $277-$280, keyboard buffer
|
||||
.label MEMSTR = $281 // $281-$282, start of BASIC memory
|
||||
.label MEMSIZK = $283 // $283-$284, NOTE: Mapping the 64 erroneously has the hex as $282 (DEC is correct)
|
||||
.label TIMOUT = $285 // IEEE-488 timeout
|
||||
.label COLOR = $286 // current text foreground color
|
||||
.label GDCOL = $287 // color of character under cursor
|
||||
.label HIBASE = $288 // high byte of start of screen
|
||||
.label XMAX = $289 // max keyboard buffer size
|
||||
.label RPTFLG = $28A // whether to repeat keys (highest bit set = repeat)
|
||||
.label KOUNT = $28B // key repeat counter
|
||||
.label DELAY = $28C // -- NOT IMPLEMENTED --
|
||||
.label SHFLAG = $28D // bucky keys (SHIFT/CTRL/C=) flags
|
||||
.label LSTSHF = $28E // last bucky key flags
|
||||
.label KEYLOG = $28F // $28F-$290 routine to setup keyboard decoding
|
||||
.label MODE = $291 // flag, is case switch allowed
|
||||
.label AUTODN = $292 // -- NOT IMPLEMENTED -- screen scroll disable
|
||||
#if !CONFIG_LEGACY_SCNKEY
|
||||
.label M51CRT = $293 // -- NOT IMPLEMENTED -- mock 6551
|
||||
.label M51CDR = $294 // -- NOT IMPLEMENTED -- mock 6551
|
||||
.label M51AJB = $295 // $295-$296 -- NOT IMPLEMENTED -- mock 6551
|
||||
.label RSSTAT = $297 // -- WIP -- (UP9600 only) mock 6551, RS-232 status
|
||||
.label BITNUM = $298 // -- NOT IMPLEMENTED --
|
||||
.label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED --
|
||||
#endif
|
||||
.label RIDBE = $29B // -- WIP -- write pointer into RS-232 receive buffer
|
||||
.label RIDBS = $29C // -- WIP -- read pointer into RS-232 receive buffer
|
||||
.label RODBS = $29D // -- WIP -- read pointer into RS-232 send buffer
|
||||
.label RODBE = $29E // -- WIP -- write pointer into RS-232 send buffer
|
||||
.label IRQTMP = $29F // $29F-$2A0 temporary IRQ vector storage [!] we use it for tape speed calibration instead
|
||||
.label ENABL = $2A1 // -- NOT IMPLEMENTED --
|
||||
.label TODSNS = $2A2 // -- NOT IMPLEMENTED --
|
||||
.label TRDTMP = $2A3 // -- NOT IMPLEMENTED --
|
||||
.label TD1IRQ = $2A4 // -- NOT IMPLEMENTED --
|
||||
.label TLNIDX = $2A5 // -- NOT IMPLEMENTED --
|
||||
.label TVSFLG = $2A6 // 0 = NTSC, 1 = PAL
|
||||
; [!] XXX document $251-$258 usage
|
||||
!addr LAT = $259 ; $259-$262, logical file numbers (table, 10 bytes)
|
||||
!addr FAT = $263 ; $263-$26C, device numbers (table, 10 bytes)
|
||||
!addr SAT = $26D ; $26D-$276, secondary addresses (table, 10 bytes)
|
||||
!addr KEYD = $277 ; $277-$280, keyboard buffer
|
||||
!addr MEMSTR = $281 ; $281-$282, start of BASIC memory
|
||||
!addr MEMSIZK = $283 ; $283-$284, NOTE: Mapping the 64 erroneously has the hex as $282 (DEC is correct)
|
||||
!addr TIMOUT = $285 ; IEEE-488 timeout
|
||||
!addr COLOR = $286 ; current text foreground color
|
||||
!addr GDCOL = $287 ; color of character under cursor
|
||||
!addr HIBASE = $288 ; high byte of start of screen
|
||||
!addr XMAX = $289 ; max keyboard buffer size
|
||||
!addr RPTFLG = $28A ; whether to repeat keys (highest bit set = repeat)
|
||||
!addr KOUNT = $28B ; key repeat counter
|
||||
!addr DELAY = $28C ; -- NOT IMPLEMENTED --
|
||||
!addr SHFLAG = $28D ; bucky keys (SHIFT/CTRL/C=) flags
|
||||
!addr LSTSHF = $28E ; last bucky key flags
|
||||
!addr KEYLOG = $28F ; $28F-$290 routine to setup keyboard decoding
|
||||
!addr MODE = $291 ; flag, is case switch allowed
|
||||
!addr AUTODN = $292 ; -- NOT IMPLEMENTED -- screen scroll disable
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr M51CRT = $293 ; -- NOT IMPLEMENTED -- mock 6551
|
||||
!addr M51CDR = $294 ; -- NOT IMPLEMENTED -- mock 6551
|
||||
!addr M51AJB = $295 ; $295-$296 -- NOT IMPLEMENTED -- mock 6551
|
||||
!addr RSSTAT = $297 ; -- WIP -- (UP9600 only) mock 6551, RS-232 status
|
||||
!addr BITNUM = $298 ; -- NOT IMPLEMENTED --
|
||||
!addr BAUDOF = $299 ; $299-$29A -- NOT IMPLEMENTED --
|
||||
}
|
||||
!addr RIDBE = $29B ; -- WIP -- write pointer into RS-232 receive buffer
|
||||
!addr RIDBS = $29C ; -- WIP -- read pointer into RS-232 receive buffer
|
||||
!addr RODBS = $29D ; -- WIP -- read pointer into RS-232 send buffer
|
||||
!addr RODBE = $29E ; -- WIP -- write pointer into RS-232 send buffer
|
||||
!addr IRQTMP = $29F ; $29F-$2A0 temporary IRQ vector storage [!] we use it for tape speed calibration instead
|
||||
!addr ENABL = $2A1 ; -- NOT IMPLEMENTED --
|
||||
!addr TODSNS = $2A2 ; -- NOT IMPLEMENTED --
|
||||
!addr TRDTMP = $2A3 ; -- NOT IMPLEMENTED --
|
||||
!addr TD1IRQ = $2A4 ; -- NOT IMPLEMENTED --
|
||||
!addr TLNIDX = $2A5 ; -- NOT IMPLEMENTED --
|
||||
!addr TVSFLG = $2A6 ; 0 = NTSC, 1 = PAL
|
||||
|
||||
// [!] $2A7-$2FF is normally free, but in our case some extra functionality uses it
|
||||
; [!] $2A7-$2FF is normally free, but in our case some extra functionality uses it
|
||||
|
||||
#if CONFIG_MEMORY_MODEL_60K
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
|
||||
// IRQs are disabled when doing such accesses, and a default NMI handler only increments
|
||||
// a counter, so that if an NMI occurs, it does not crash the machine, but can be captured.
|
||||
; IRQs are disabled when doing such accesses, and a default NMI handler only increments
|
||||
; a counter, so that if an NMI occurs, it does not crash the machine, but can be captured.
|
||||
|
||||
.label missed_nmi_flag = $2A7
|
||||
.label tiny_nmi_handler = $2A8
|
||||
.label peek_under_roms = tiny_nmi_handler + peek_under_roms_routine - tiny_nmi_handler_routine
|
||||
.label poke_under_roms = tiny_nmi_handler + poke_under_roms_routine - tiny_nmi_handler_routine
|
||||
.label memmap_allram = tiny_nmi_handler + memmap_allram_routine - tiny_nmi_handler_routine
|
||||
.label memmap_normal = tiny_nmi_handler + memmap_normal_routine - tiny_nmi_handler_routine
|
||||
#if SEGMENT_BASIC
|
||||
.label shift_mem_up_internal = tiny_nmi_handler + shift_mem_up_routine - tiny_nmi_handler_routine
|
||||
.label shift_mem_down_internal = tiny_nmi_handler + shift_mem_down_routine - tiny_nmi_handler_routine
|
||||
#endif
|
||||
!addr missed_nmi_flag = $2A7
|
||||
!addr tiny_nmi_handler = $2A8
|
||||
!addr peek_under_roms = tiny_nmi_handler + peek_under_roms_routine - tiny_nmi_handler_routine
|
||||
!addr poke_under_roms = tiny_nmi_handler + poke_under_roms_routine - tiny_nmi_handler_routine
|
||||
!addr memmap_allram = tiny_nmi_handler + memmap_allram_routine - tiny_nmi_handler_routine
|
||||
!addr memmap_normal = tiny_nmi_handler + memmap_normal_routine - tiny_nmi_handler_routine
|
||||
!ifdef SEGMENT_BASIC {
|
||||
!addr shift_mem_up_internal = tiny_nmi_handler + shift_mem_up_routine - tiny_nmi_handler_routine
|
||||
!addr shift_mem_down_internal = tiny_nmi_handler + shift_mem_down_routine - tiny_nmi_handler_routine
|
||||
}
|
||||
|
||||
#endif // CONFIG_MEMORY_MODEL_60K
|
||||
} ; CONFIG_MEMORY_MODEL_60K
|
||||
|
||||
// BASIC vectors
|
||||
.label IERROR = $300 // $300-$301
|
||||
.label IMAIN = $302 // $302-$303
|
||||
.label ICRNCH = $304 // $304-$305
|
||||
.label IQPLOP = $306 // $306-$307
|
||||
.label IGONE = $308 // $308-$309
|
||||
.label IEVAL = $30A // $30A-$30B
|
||||
; BASIC vectors
|
||||
!addr IERROR = $300 ; $300-$301
|
||||
!addr IMAIN = $302 ; $302-$303
|
||||
!addr ICRNCH = $304 ; $304-$305
|
||||
!addr IQPLOP = $306 ; $306-$307
|
||||
!addr IGONE = $308 ; $308-$309
|
||||
!addr IEVAL = $30A ; $30A-$30B
|
||||
|
||||
.label SAREG = $30C // .A storage, for SYS call
|
||||
.label SXREG = $30D // .X storage, for SYS call
|
||||
.label SYREG = $30E // .Y storage, for SYS call
|
||||
.label SPREG = $30F // .P storage, for SYS call
|
||||
!addr SAREG = $30C ; .A storage, for SYS call
|
||||
!addr SXREG = $30D ; .X storage, for SYS call
|
||||
!addr SYREG = $30E ; .Y storage, for SYS call
|
||||
!addr SPREG = $30F ; .P storage, for SYS call
|
||||
|
||||
.label USRPOK = $310 // -- NOT IMPLEMENTED -- JMP instruction
|
||||
.label USRADD = $311 // $311-$312 -- NOT IMPLEMENTED --
|
||||
// $313 -- UNUSED -- free for user software
|
||||
!addr USRPOK = $310 ; -- NOT IMPLEMENTED -- JMP instruction
|
||||
!addr USRADD = $311 ; $311-$312 -- NOT IMPLEMENTED --
|
||||
; $313 -- UNUSED -- free for user software
|
||||
|
||||
// Kernal vectors - interrupts
|
||||
.label CINV = $314 // $314-$315
|
||||
.label CBINV = $316 // $316-$317
|
||||
.label NMINV = $318 // $318-$319
|
||||
; Kernal vectors - interrupts
|
||||
!addr CINV = $314 ; $314-$315
|
||||
!addr CBINV = $316 ; $316-$317
|
||||
!addr NMINV = $318 ; $318-$319
|
||||
|
||||
// Kernal vectors - routines
|
||||
.label IOPEN = $31A // $31A-$31B
|
||||
.label ICLOSE = $31C // $31C-$31D
|
||||
.label ICHKIN = $31E // $31E-$31F
|
||||
.label ICKOUT = $320 // $320-$321
|
||||
.label ICLRCH = $322 // $322-$323
|
||||
.label IBASIN = $324 // $324-$325
|
||||
.label IBSOUT = $326 // $326-$327
|
||||
.label ISTOP = $328 // $328-$329
|
||||
.label IGETIN = $32A // $32A-$32B
|
||||
.label ICLALL = $32C // $32C-$32D
|
||||
.label USRCMD = $32E // $32E-$32F
|
||||
.label ILOAD = $330 // $330-$331
|
||||
.label ISAVE = $332 // $332-$333
|
||||
; Kernal vectors - routines
|
||||
!addr IOPEN = $31A ; $31A-$31B
|
||||
!addr ICLOSE = $31C ; $31C-$31D
|
||||
!addr ICHKIN = $31E ; $31E-$31F
|
||||
!addr ICKOUT = $320 ; $320-$321
|
||||
!addr ICLRCH = $322 ; $322-$323
|
||||
!addr IBASIN = $324 ; $324-$325
|
||||
!addr IBSOUT = $326 ; $326-$327
|
||||
!addr ISTOP = $328 ; $328-$329
|
||||
!addr IGETIN = $32A ; $32A-$32B
|
||||
!addr ICLALL = $32C ; $32C-$32D
|
||||
!addr USRCMD = $32E ; $32E-$32F
|
||||
!addr ILOAD = $330 ; $330-$331
|
||||
!addr ISAVE = $332 ; $332-$333
|
||||
|
||||
// $314 $334-$33B -- UNUSED -- free for user software
|
||||
; $314 $334-$33B -- UNUSED -- free for user software
|
||||
|
||||
#if !CONFIG_RS232_UP9600
|
||||
.label TBUFFR = $33C // $33C-$3FB [!] tape buffer, our usage details differ
|
||||
#else
|
||||
.label REVTAB = $37C // $37C-$3FB -- WIP -- [!] RS-232 precalculated data
|
||||
#endif
|
||||
!ifndef CONFIG_RS232_UP9600 {
|
||||
!addr TBUFFR = $33C ; $33C-$3FB [!] tape buffer, our usage details differ
|
||||
} else {
|
||||
!addr REVTAB = $37C ; $37C-$3FB -- WIP -- [!] RS-232 precalculated data
|
||||
}
|
||||
|
||||
// $3FC $3FC-$3FF -- UNUSED -- free for user software
|
||||
; $3FC $3FC-$3FF -- UNUSED -- free for user software
|
||||
|
||||
|
||||
//
|
||||
// Definitions for extended IEC functionality
|
||||
//
|
||||
;
|
||||
; Definitions for extended IEC functionality
|
||||
;
|
||||
|
||||
.const IEC_NORMAL = 0 // has to be 0, always!
|
||||
#if CONFIG_IEC_JIFFYDOS
|
||||
.const IEC_JIFFY = 1 // has to be 1, always!
|
||||
#endif
|
||||
#if CONFIG_IEC_DOLPHINDOS
|
||||
.const IEC_DOLPHIN = 2
|
||||
#endif
|
||||
#if CONFIG_IEC_BURST_CIA1 || CONFIG_IEC_BURST_CIA2 || ROM_LAYOUT_M65
|
||||
.const IEC_BURST = 3
|
||||
#endif
|
||||
#if ROM_LAYOUT_M65
|
||||
.const IEC_ROMDOS = 4
|
||||
#endif
|
||||
!set IEC_NORMAL = 0 ; has to be 0, always!
|
||||
!ifdef CONFIG_IEC_JIFFYDOS {
|
||||
!set IEC_JIFFY = 1 ; has to be 1, always!
|
||||
}
|
||||
!ifdef CONFIG_IEC_DOLPHINDOS {
|
||||
!set IEC_DOLPHIN = 2
|
||||
}
|
||||
!ifdef HAS_IEC_BURST {
|
||||
!set IEC_BURST = 3
|
||||
}
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
!set IEC_ROMDOS = 4
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Definitions for tape functionality
|
||||
//
|
||||
;
|
||||
; Definitions for tape functionality
|
||||
;
|
||||
|
||||
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO
|
||||
!ifdef HAS_TAPE {
|
||||
|
||||
.label __normal_time_S = IRQTMP+0 // duration of the short pulse
|
||||
.label __normal_time_M = IRQTMP+1 // duration of the medium pulse
|
||||
!addr __normal_time_S = IRQTMP+0 ; duration of the short pulse
|
||||
!addr __normal_time_M = IRQTMP+1 ; duration of the medium pulse
|
||||
|
||||
.label __turbo_half_S = IRQTMP+0 // half-duration of the short pulse
|
||||
.label __turbo_half_L = IRQTMP+1 // half-duration of the long pulse
|
||||
!addr __turbo_half_S = IRQTMP+0 ; half-duration of the short pulse
|
||||
!addr __turbo_half_L = IRQTMP+1 ; half-duration of the long pulse
|
||||
|
||||
.label __pulse_threshold = SVXT // pulse classification threshold
|
||||
.label __pulse_threshold_ML = SYNO // M/L pulse classification threshold, for normal only
|
||||
!addr __pulse_threshold = SVXT ; pulse classification threshold
|
||||
!addr __pulse_threshold_ML = SYNO ; M/L pulse classification threshold, for normal only
|
||||
}
|
||||
|
||||
#endif
|
||||
!ifdef CONFIG_TAPE_TURBO {
|
||||
|
||||
#if CONFIG_TAPE_TURBO
|
||||
|
||||
.label __tape_turbo_bytestore = STACK // location of byte storage helper routine
|
||||
|
||||
#endif
|
||||
!addr __tape_turbo_bytestore = STACK ; location of byte storage helper routine
|
||||
}
|
||||
Reference in new issue
Block a user