1;ACME 0.97
2
3!ifdef lib_cbm_c128_zeropage_a !eof
4lib_cbm_c128_zeropage_a = 1
5
6; These labels and their values are given in the C128 manual.
7; Label names were converted to lower case and prefixed by "z_", however.
8; The following labels appear twice, only their first appearance is active:
9;   z_verck,  given as   $0c and   $93
10;   z_count,  given as   $0d and   $a5
11;   z_keysiz, given as   $78 and   $da
12;   z_keynum, given as   $77 and   $dc
13;   z_xcnt,   given as $0110 and $0a80
14;   z_hulp,   given as   $78 and $0aa0
15;   z_keynxt, given as   $dd and $1152
16;   z_xsave , given as $0ab2 and $115d
17;   z_bitmsk, given as   $da and $116d
18;   z_dejavu, given as $0a02 and $1221
19
20!address {
21	z_d8502		= $00
22	z_d6510		= $00
23	z_r8502		= $01
24	z_r6510		= $01
25	z_bank		= $02
26	z_pc_hi		= $03
27	z_pc_lo		= $04
28	z_s_reg		= $05
29	z_a_reg		= $06
30	z_x_reg		= $07
31	z_y_reg		= $08
32	z_stkptr	= $09
33	z_integr	= $09
34	z_charac	= $09
35; labels from MONITOR {
36	z_pcb		= $02
37	z_pch		= $03
38	z_pcl		= $04
39	z_flgs		= $05
40	z_acc		= $06
41	z_xr		= $07
42	z_yr		= $08
43	z_sp		= $09
44;}
45	z_endchr	= $0a
46	z_trmpos	= $0b
47	z_verck		= $0c
48	z_count		= $0d
49	z_dimflg	= $0e
50	z_valtyp	= $0f
51	z_intflg	= $10
52	z_garbfl	= $11
53	z_dores		= $11
54	z_subflg	= $12
55	z_inpflg	= $13
56	z_domask	= $14
57	z_tansgn	= $14
58	z_channl	= $15
59	z_poker		= $15
60	z_linnum	= $16
61	z_temppt	= $18
62	z_lastpt	= $19
63	z_tempst	= $1b
64	z_index		= $24
65	z_index1	= $24
66	z_index2	= $26	; given as $24 in german manual, which is probably wrong
67	z_resho		= $28
68	z_resmoh	= $29
69	z_addend	= $2a
70	z_resmo		= $2a
71	z_reslo		= $2b
72	z_txttab	= $2d
73	z_vartab	= $2f
74	z_arytab	= $31
75	z_strend	= $33
76	z_fretop	= $35
77	z_frespc	= $37
78	z_max_mem_1	= $39
79	z_curlin	= $3b
80	z_txtptr	= $3d
81	z_form		= $3f
82	z_fndpnt	= $3f
83	z_datlin	= $41
84	z_datptr	= $43
85	z_inpptr	= $45
86	z_varnam	= $47
87	z_fdecpt	= $49
88	z_varpnt	= $49
89	z_lstpnt	= $4b
90	z_andmsk	= $4b
91	z_forpnt	= $4b
92	z_eormsk	= $4c
93	z_vartxt	= $4d
94	z_opptr		= $4d
95	z_opmask	= $4f
96	z_grbpnt	= $50
97	z_tempf3	= $50
98	z_defpnt	= $50
99	z_dscpnt	= $52
100	z_helper	= $55
101	z_jmper		= $56
102	z_oldov		= $58
103	z_tempf1	= $59
104	z_arypnt	= $5a
105	z_highds	= $5a
106	z_hightr	= $5c
107	z_tempf2	= $5e
108	z_deccnt	= $5f
109	z_grbtop	= $61
110	z_dptflg	= $61
111	z_lowtr		= $61
112	z_expsgn	= $62
113	z_fac1		= $63
114	z_degree	= $69
115	z_sgnflg	= $69
116	z_argexp	= $6a
117	z_strng1	= $70
118	z_arisgn	= $70
119	z_facov		= $71
120	z_strng2	= $72
121	z_polypt	= $72
122	z_curtol	= $72
123	z_fbufpt	= $72
124	z_autinc	= $74
125	z_mvdflg	= $76
126	z_noze		= $77
127	z_sprnum	= $77
128	z_keynum	= $77
129	z_hulp		= $78
130	z_keysiz	= $78
131	z_syntmp	= $79
132	z_dsdesc	= $7a
133	z_tos		= $7d
134	z_runmod	= $7f
135	z_parsts	= $80
136	z_point		= $80
137	z_parstx	= $81
138	z_oldstk	= $82
139	z_colsel	= $83
140	z_multicolor_1	= $84
141	z_multicolor_2	= $85
142	z_foreground	= $86
143	z_scale_x	= $87
144	z_scale_y	= $89
145	z_stopnb	= $8b
146	z_grapnt	= $8c
147	z_vtemp1	= $8e
148	z_vtemp2	= $8f
149	z_status	= $90
150	z_stkey		= $91
151	z_svxt		= $92
152	;z_verck	= $93	; already given as $0c!
153	z_c3po		= $94
154	z_bsour		= $95
155	z_syno		= $96
156	z_xsav		= $97
157	z_ldtnd		= $98
158	z_dfltn		= $99
159	z_dflto		= $9a
160	z_prty		= $9b
161	z_dpsw		= $9c
162	z_msgflg	= $9d
163	z_ptr1		= $9e
164	z_t1		= $9e
165	z_ptr2		= $9f
166	z_t2		= $9f
167	z_time		= $a0
168	z_r2d2		= $a3
169	z_pcntr		= $a3
170	z_bsour1	= $a4
171	;z_count	= $a5	; already given as $0d!
172	z_cntdn		= $a5
173	z_bufpt		= $a6
174	z_inbit		= $a7
175	z_bitci		= $a8
176	z_rinone	= $a9
177	z_ridata	= $aa
178	z_riprty	= $ab
179	z_sal		= $ac
180	z_sah		= $ad
181	z_eal		= $ae
182	z_eah		= $af
183	z_cmpo		= $b0
184	z_tape1		= $b2
185	z_bitts		= $b4
186	z_nxtbit	= $b5
187	z_rodata	= $b6
188	z_fnlen		= $b7
189	z_la		= $b8
190	z_sa		= $b9
191	z_fa		= $ba
192	z_fnadr		= $bb
193	z_roprty	= $bd
194	z_fsblk		= $be
195	z_drive		= $bf
196	z_cas1		= $c0
197	z_stal		= $c1
198	z_stah		= $c2
199	z_memuss	= $c3
200	z_data		= $c5
201	z_ba		= $c6
202	z_fnbank	= $c7
203	z_ribuf		= $c8
204	z_robuf		= $ca
205	z_keytab	= $cc
206	z_imparm	= $ce
207	z_ndx		= $d0
208	z_kyndx		= $d1
209	z_keyidx	= $d2
210	z_shflag	= $d3
211	z_sfdx		= $d4
212	z_lstx		= $d5
213	z_crsw		= $d6
214	z_mode		= $d7
215	z_graphm	= $d8
216	z_charen	= $d9
217	z_sedsal	= $da
218	z_sedeal	= $dc
219	z_sedt1		= $de
220	z_sedt2		= $df
221
222	;z_keysiz	= $da	; already given as $78!
223	z_keylen	= $db
224	;z_keynum	= $dc	; already given as $77!
225	z_keynxt	= $dd
226	z_keybnk	= $de
227	z_keytmp	= $df
228
229	z_bitmsk	= $da
230	z_saver		= $db
231
232; these vars are for the currently active screen (vic/vdc) {
233	; the values for the other screen are at $a40..$a5a,
234	; and the contents are exchanged when changing screens.
235	; there is a second pair of screen-specific blocks at $354 and $a60.
236	z_pnt		= $e0
237	z_user		= $e2
238	z_scbot		= $e4
239	z_sctop		= $e5
240	z_sclf		= $e6
241	z_scrt		= $e7
242	z_lsxp		= $e8
243	z_lstp		= $e9
244	z_indx		= $ea
245	z_tblx		= $eb
246	z_pntr		= $ec
247	z_lines		= $ed
248	z_columns	= $ee
249	z_datax		= $ef
250	z_lstchr	= $f0
251	z_color		= $f1
252	z_tcolor	= $f2
253	z_rvs		= $f3
254	z_qtsw		= $f4
255	z_insrt		= $f5
256	z_insflg	= $f6
257	z_locks		= $f7
258	z_scroll	= $f8
259	z_beeper	= $f9
260	;z_frekzp	= $fa	; ROM does not use this, but it does get swapped out when screen changes!
261;}
262	; $fb/$fc/$fd/$fe are unused
263	z_lofbuf	= $ff	; overwritten when outputting line numbers or ti$
264	z_fbuffr	= $0100	; buffer for number strings
265	z_xcnt		= $0110
266	z_dosf1l	= $0111
267	z_dosds1	= $0112
268	z_dosf2l	= $0113
269	z_dosds2	= $0114
270	z_dosf2a	= $0115
271	z_dosofl	= $0117
272	z_dosofh	= $0119
273	z_dosla		= $011b
274	z_dosfa		= $011c
275	z_dossa		= $011d
276	z_dosrcl	= $011e
277	z_dosbnk	= $011f
278	z_dosdid	= $0120
279	z_didchk	= $0122
280	z_bnr		= $0123
281	z_enr		= $0124
282	z_dolr		= $0125
283	z_flag		= $0126
284	z_swe		= $0127
285	z_usgn		= $0128
286	z_uexp		= $0129
287	z_vn		= $012a
288	z_chsn		= $012b
289	z_vf		= $012c
290	z_nf		= $012d
291	z_posp		= $012e
292	z_fesp		= $012f
293	z_etof		= $0130
294	z_cform		= $0131
295	z_sno		= $0132
296	z_blfd		= $0133
297	z_begfd		= $0134
298	z_lfor		= $0135
299	z_endfd		= $0136
300	z_sysstk	= $0137
301	z_buf		= $0200
302; this block is not in the german C128 manual {
303	z_fetch		= $02a2
304	z_fetchvec	= $02aa
305	z_stash		= $02af
306	z_stavec	= $02b9
307	z_cmpare	= $02c8
308	z_cmpvec	= $02c8
309	z_jsrfar	= $02cd
310	z_jmpfar	= $02e3
311;}
312	z_esc_fn_vec	= $02fc
313	z_bnkvec	= $02fe
314	z_ierror	= $0300
315	z_icrnch	= $0304
316	z_iqplop	= $0306
317	z_igone		= $0308
318	z_ieval		= $030a
319	z_iesclk	= $030c
320	z_iescpr	= $030e
321	z_iescex	= $0310
322	z_itime		= $0312
323	z_iirq		= $0314
324	z_ibrk		= $0316
325	z_inmi		= $0318
326	z_iopen		= $031a
327	z_iclose	= $031c
328	z_ichkin	= $031e
329	z_ichkout	= $0320
330	z_iclrch	= $0322
331	z_ibasin	= $0324
332	z_ibasout	= $0326
333	z_istop		= $0328
334	z_igetin	= $032a
335	z_iclall	= $032c
336	z_exmon		= $032e
337	z_iload		= $0330
338	z_isave		= $0332
339; this block is not in the german C128 manual {
340	z_ctlvec	= $0334
341	z_shfvec	= $0336
342	z_escvec	= $0338
343	z_keyvec	= $033a
344	z_keychk	= $033c
345	z_decode	= $033e
346	z_decode_shift	= $0340
347	z_decode_cbm	= $0342
348	z_decode_ctrl	= $0344
349	z_decode_alt	= $0346
350	z_decode_caps	= $0348
351	z_keyd		= $034a
352	; these vars are for the currently active screen (vic/vdc) {
353	; the values for the other screen are at $a60..$a6d,
354	; and the contents are exchanged when changing screens.
355	; there is a second pair of screen-specific blocks at $e0 and $a40.
356	z_tabmap	= $0354
357	z_bitabl	= $035e
358	;}
359	z_lat		= $0362
360	z_fat		= $036c
361	z_sat		= $0376
362	z_chrget	= $0380
363	z_chrgot	= $0386
364	z_qnum		= $0390
365;}
366	z_ind_sub_ram0	= $039f
367	z_ind_sub_ram1	= $03ab
368	z_indin1_ram1	= $03b7
369	z_indin2	= $03c0
370	z_indtxt	= $03c9
371	z_zero		= $03d2
372	z_current_bank	= $03d5
373	z_tmpdes	= $03d6
374	z_fin_bank	= $03da
375	z_savsiz	= $03db
376	z_bits		= $03df
377	z_sprtmp_1	= $03e0
378	z_sprtmp_2	= $03e1
379	z_fg_bg		= $03e2
380	z_fg_mc1	= $03e3
381	z_vicscn	= $0400
382	z_system	= $0a00
383	z_dejavu	= $0a02
384	z_palnts	= $0a03
385	z_init_status	= $0a04
386	z_memstr	= $0a05
387	z_memsiz	= $0a07
388	z_irqtmp	= $0a09
389	z_caston	= $0a0b
390	z_kika26	= $0a0c
391	z_stupid	= $0a0d
392	z_timout	= $0a0e
393	z_enabl		= $0a0f
394	z_m51ctr	= $0a10
395	z_m51cdr	= $0a11
396	z_m51ajb	= $0a12
397	z_rsstat	= $0a14
398	z_bitnum	= $0a15
399	z_baudof	= $0a16
400	z_ridbe		= $0a18
401	z_ridbs		= $0a19
402	z_rodbs		= $0a1a
403	z_rodbe		= $0a1b
404	z_serial	= $0a1c
405	z_timer		= $0a1d
406	z_xmax		= $0a20
407	z_pause		= $0a21
408	z_rptflg	= $0a22
409	z_kount		= $0a23
410	z_delay		= $0a24
411	z_lstshf	= $0a25
412	z_blnon		= $0a26
413	z_blnsw		= $0a27
414	z_blnct		= $0a28
415	z_gdbln		= $0a29
416	z_gdcol		= $0a2a
417
418	z_curmod	= $0a2b
419	z_vm1		= $0a2c
420	z_vm2		= $0a2d
421	z_vm3		= $0a2e
422	z_vm4		= $0a2f
423	z_lintmp	= $0a30
424	z_sav80a	= $0a31
425	z_sav80b	= $0a32
426	z_curcol	= $0a33
427	z_split		= $0a34
428	z_fnadrx	= $0a35
429	z_palcnt	= $0a36
430	z_speed		= $0a37
431	z_sprites	= $0a38
432	z_blanking	= $0a39
433; this block is not in the german C128 manual {
434	z_hold_off	= $0a3a
435	z_ldtbi_sa	= $0a3b
436	z_clr_ea_lo	= $0a3c
437	z_clr_ea_hi	= $0a3d
438;}
439
440; $a40 - $a5a: data of currently inactive screen (vic/vdc).
441; the values for the active screen are at $e0..$fa.
442
443	; $a5b - $a5f: unused?
444
445; $a60 - $a6d: data of currently inactive screen (vic/vdc).
446; the values for the active screen are at $354..$361.
447
448	; $a6e - $a7f: unused?
449
450	;z_xcnt		= $0a80	; already given as $0110!
451	;z_hulp		= $0aa0	; already given as $78!
452	z_format	= $0aaa
453	z_length	= $0aab
454	z_msal		= $0aac
455	z_sxreg		= $0aaf
456	z_syreg		= $0ab0
457	z_wrap		= $0ab1
458	z_xsave		= $0ab2
459	z_direction	= $0ab3
460	z_temps		= $0ab4
461	z_curbnk	= $0ac0
462	z_pat		= $0ac1
463	z_tbuffr	= $0b00
464	z_rs232i	= $0c00
465	z_rs232o	= $0d00
466
467	z_pkybuf	= $1000
468	z_pkydef	= $100a
469	z_dosstr	= $1100
470	z_vwork		= $1131
471	z_xypos		= $1131
472	z_xpos		= $1131
473	z_ypos		= $1133
474	z_xdest		= $1135
475	z_ydest		= $1137
476	z_xyabs		= $1139
477	z_xabs		= $1139
478	z_yabs		= $113b
479	z_xysgn		= $113d
480	z_xsgn		= $113d
481	z_ysgn		= $113f
482	z_fct		= $1141
483	z_errval	= $1145
484	z_lesser	= $1147
485	z_greatr	= $1148
486	z_angsgn	= $1149
487	z_sinval	= $114a
488	z_cosval	= $114c
489	z_angcnt	= $114e
490	z_xcircl	= $1150
491	z_ycircl	= $1152
492	z_xradus	= $1154
493	z_yradus	= $1156
494	z_rotang	= $1158
495	z_angbeg	= $115c
496	z_angend	= $115e
497	z_xrcos		= $1160
498	z_yrsin		= $1162
499	z_xrsin		= $1164
500	z_yrcos		= $1166
501	z_xcentr	= $1150
502	z_ycentr	= $1152
503	z_xdist1	= $1154
504	z_ydist1	= $1156
505	z_xdist2	= $1158
506	z_ydist2	= $115a
507	z_disend	= $115c
508	z_colcnt	= $115e
509	z_rowcnt	= $115f
510	z_strcnt	= $1160
511	z_xcord1	= $1150
512	z_ycord1	= $1152
513	z_boxang	= $1154
514	z_xcount	= $1156
515	z_ycount	= $1158
516	z_bxleng	= $115a
517	z_xcord2	= $115c
518	z_ycord2	= $115e
519	z_leylen	= $1151
520	;z_keynxt	= $1152	; already given as $dd!
521	z_strsz		= $1153
522	z_gettyp	= $1154
523	z_strptr	= $1155
524	z_oldbyt	= $1156
525	z_newbyt	= $1157
526	z_xsize		= $1159
527	z_ysize		= $115b
528	;z_xsave	= $115d	; already given as $0ab2!
529	z_stradr	= $115f
530	z_bitidx	= $1161
531	z_chrpag	= $1168
532	z_bitcnt	= $1169
533	z_scalem	= $116a
534	z_width		= $116b
535	z_filflg	= $116c
536	;z_bitmsk	= $116d	; already given as $da!
537	z_numcnt	= $116e
538	z_trcflg	= $116f
539	z_renum_tmp_1	= $1170
540	z_renum_tmp_2	= $1172
541	z_t3		= $1174
542	z_t4		= $1175
543	z_vtemp3	= $1177
544	z_vtemp4	= $1178
545	z_vtemp5	= $1179
546	z_adray1	= $117a
547	z_adray2	= $117c
548	z_sprite_data	= $117e
549	z_vic_save	= $11d6
550; this block is not in the german C128 manual {
551	z_upper_lower	= $11eb
552	z_upper_graphic	= $11ec
553;}
554	z_oldlin	= $1200
555	z_oldtxt	= $1202
556	z_puchrs	= $1204
557	z_pufill	= $1204
558	z_pucoma	= $1205
559	z_pudot		= $1206
560	z_pumony	= $1207
561	z_errnum	= $1208
562	z_errlin	= $1209
563	z_trapno	= $120b
564	z_tmptrp	= $120d
565	z_errtxt	= $120e
566	z_text_top	= $1210
567	z_max_mem_0	= $1212
568	z_tmptxt	= $1214
569	z_tmplin	= $1216
570	z_usrpok	= $1218
571	z_rndx		= $121b
572	z_circle_segment	= $1220
573	;z_dejavu	= $1221	; already given as $0a02!
574	z_tempo_rate	= $1222
575	z_voices	= $1223
576	z_ntime		= $1229
577	z_octave	= $122b
578	z_sharp		= $122c
579	z_pitch		= $122d
580	z_voice		= $122f
581	z_wave0		= $1230
582	z_dnote		= $1233
583	z_fltsav	= $1234
584	z_fltflg	= $1238
585	z_nibble	= $1239
586	z_tonnum	= $123a
587	z_tonval	= $123b
588	z_parcnt	= $123e
589	z_atktab	= $123f
590	z_sustab	= $1249
591	z_wavtab	= $1253
592	z_pulslw	= $125d
593	z_pulshi	= $1267
594	z_filters	= $1271
595	z_int_trip_flag	= $1276
596	z_int_adr_lo	= $1279
597	z_int_adr_hi	= $127c
598	z_intval	= $127f
599	z_coltyp	= $1280
600	z_sound_voice	= $1281
601	z_sound_time_lo	= $1282
602	z_sound_time_hi	= $1285
603	z_sound_max_lo	= $1288
604	z_sound_max_hi	= $128b
605	z_sound_min_lo	= $128e
606	z_sound_min_hi	= $1291
607	z_sound_direction	= $1294
608	z_sound_step_lo	= $1297
609	z_sound_step_hi	= $129a
610	z_sound_freq_lo	= $129d
611	z_sound_freq_hi	= $12a0
612	z_temp_time_lo	= $12a3
613	z_temp_time_hi	= $12a4
614	z_temp_max_lo	= $12a5
615	z_temp_max_hi	= $12a6
616	z_temp_min_lo	= $12a7
617	z_temp_min_hi	= $12a8
618	z_temp_direction	= $12a9
619	z_temp_step_lo	= $12aa
620	z_temp_step_hi	= $12ab
621	z_temp_freq_lo	= $12ac
622	z_temp_freq_hi	= $12ad
623	z_temp_pulse_lo	= $12ae
624	z_temp_pulse_hi	= $12af
625	z_temp_waveform	= $12b0
626	z_pot_temp_1	= $12b1
627	z_pot_temp_2	= $12b2
628	z_window_temp	= $12b3
629	z_savram	= $12b7
630	z_defmod	= $12fa
631	z_lincnt	= $12fb
632	z_sprite_number	= $12fc
633; this block is not in the german C128 manual {
634	z_irq_wrap_flag	= $12fd
635	z_rambot	= $1c00
636;}
637}
638