.MAIN. HCD65XX V3.1 10JULY87 PAGE 1 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 1 2 3 4 5 6 7 ;* ------------------ * 8 ;* ---------------------- ÂÕÒÓÔ ÓÕÂÒÏÕÔÉÎÅÓ -- (REV 2) ----------- * 9 ;* ------------------ * 10 ;* * 11 ;* ÔHESE ASSEMBLY LANGUAGE SUB-ROUTINES ARE DESIGNED FOR USE IN YOUR * 12 ;* ÂÁÓÉà AND MACHINE CODE PROGRAMS. Á ÂÁÓÉà PROGRAM NEEDS SIMPLY TO * 13 ;* ÐÏËÅ THE APPROPRIATE VALUES INTO THE VARIABLE LOCATIONS SHOWN BELOW, * 14 ;* AND THEN ÓÙÓ TO THE DESIRED ROUTINE. ÁLL OF THE ÂÕÒÓÔ PROTOCOL AND * 15 ;* HANDSHAKING IS DONE FOR YOU. ÔHE ÂÁÓÉà PROGRAM CAN THEN ÐÅÅË ANY * 16 ;* VALUES RETURNED. * 17 ;* 18 ;* ÔHE ROUTINES IN THIS LISTING THAT REQUIRE DATA BUFFER STORAGE AREAS * 19 ;* ARE PASSED THE LOCATION OF THE BUFFER IN ÂÕÆÌÏÃ. ÂÕÆÌÏà POINTS TO * 20 ;* ÒÁÍ LOCATION IN ÒÁÍ BANK 0 OF THE START OF THE BUFFER. ÓINCE THE * 21 ;* ËÅÒÎÅÌ AND É/Ï ARE NEEDED, YOU MUST PUT ÂÕÆÌÏà BELOW $Ã000. ÂUT BE * 22 ;* SURE TO PUT IT IN ÒÁÍ ABOVE YOUR ÂÁÓÉà TEXT. ÁS A GENERAL RULE, * 23 ;* WORK YOUR WAY BACK FROM $Ã000 AND YOU'LL BE ÏË. * 24 ;* 25 ;* ÔO USE THESE ROUTINES, YOUR ÂÁÓÉà PROGRAM MUST FIRST ÂÌÏÁÄ THE FILE * 26 ;* 'ÂÕÒÓÔ ÓÕÂÓ.ÂÉÎ'. ÔHE ROUTINES LOAD AT $1300, SO THEY ARE IN A * 27 ;* SAFE PLACE BELOW ÂÁÓÉà TEXT AREA. * 28 ;* 29 ;* ÔHERE IS NO ÂÕÒÓÔ ÆÏÒÍÁÔ ROUTINE PROVIDED. ÔHE FOLLOWING ÂÁÓÉà * 30 ;* COMMANDS WILL FORMAT PHYSICAL TRACKS 10 THROUGH 20 OF THE DISK WITH * 31 ;* 5 1024 BYTE SECTORS: * 32 ;* 33 ;* ÏÐÅÎ 1,8,15 * 34 ;* ÐÒÉÎÔ#1,"Õ0";ÃÈÒ$(3);ÃÈÒ$(20);ÃÈÒ$(5);ÃÈÒ$(10); * 35 ;* 36 ;* ÎOTE THE USE OF THE SEMICOLON (;) AT THE END OF THE STATEMENT. * 37 ;* ÔHIS IS VERY IMPORTANT! ÉF THERE WAS NO SEMICOLON, THE Ã128 WOULD * 38 ;* SEND A CARRIAGE RETURN AFTER THE LAST PARAMETER. ÓINCE THE 1581 * 39 ;* COUNTS THE NUMBER OF BYTES SENT TO DETERMINE THE NUMBER OF OPTIONAL * 40 ;* PARAMETERS THAT ARE BEING SENT, IT WOULD MISINTERPRET THE CARRIAGE * 41 ;* RETURN AS THE NEXT OPTIONAL PARAMETER. ÉN THIS CASE, IT WOULD BE * 42 ;* FILL BYTE. ÁNY FORMATTING ERRORS CAN BE CHECKED VIA THE COMMAND * 43 ;* CHANNEL. * 44 ;* 45 ;* ÓINCE THE ÂÕÒÓÔ COMMANDS MAKE USE OF THE COMMAND CHANNEL TO THE * 46 ;* DRIVE, THE COMMAND CHANNEL MUST FIRST BE ÏÐÅÎED IN YOUR ÂÁÓÉà * 47 ;* PROGRAM. ÔHE LOGICAL FILE NUMBER WHICH YOU ASSIGNED TO THE COMMAND * 48 ;* CHANNEL SHOULD BE POKED TO ÌÆ BEFORE CALLING ANY OF THESE ROUTINES. * 49 ;* * 50 51 52 53 54 55 56 57 .MAIN. HCD65XX V3.1 10JULY87 PAGE 2 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 58 ;******************************************************************** 59 ; ÖARIABLES - ÖALUES FROM ÂÁÓÉà CAN BE ÐÏËÅD, ÐÅÅËED TO THESE AREAS. 60 ;******************************************************************** 61 =1300 62 *=$1300 63 1300 00 64 ÓÔÁÔÕÓ .BYTE 0 ; STATUS BYTE 1301 08 65 ÄÅÖ .BYTE 8 ; DEVICE NUMBER 1302 08 66 ÌÆ .BYTE 8 ; LOGICAL FILE NUMBER 1303 =1304 67 ÔÒÁÃË *=*+1 ; TRACK 1304 =1305 68 ÓÅÃÔÏÒ *=*+1 ; SECTOR 1305 =1306 69 ÎÕÍÓÅà *=*+1 ; ÎUMBER OF SECTORS. 1306 =1308 70 ÂÕÆÌÏà *=*+2 ; ÐAGE # OF BUFFER TO GET/PUT DATA. 1308 =1309 71 ÓÅÃÓÉÚÅ *=*+1 ; ÓECTOR SIZE (1=256, 2=512, 4=1024) 1309 =130A 72 ÓÉÄÅ *=*+1 ; ÐHYSICAL SIDE OF THE DISK (0 OR 1). 130A =130B 73 ÍÉÎÓÅà *=*+1 ; ÍINIMUM LOGICAL SECTOR FOUND IN ÑÕÅÒÙ. 130B =130C 74 ÍÁØÓÅà *=*+1 ; ÍAXIMUM LOGICAL SECTOR FOUND IN ÑÕÅÒÙ. 130C =130D 75 ÉÎÔÌÖ *=*+1 ; ÐHYSICAL INTERLEAVE FOUND IN ÑÕÅÒÙ. 130D =130E 76 ÆÌÁÇ *=*+1 ; ÅMPTY TRACK FLAG. 77 ; ÔHIS FLAG IS USED TO INDICATE THAT THE 78 ; TRACK OR DATA JUST READ CONTAINS ALL 0'S. ÔHIS IS HANDY IN SOME CASES, 79 ; SUCH AS DURING A DISK COPY PROGRAM. ×HEN A DISK IS FORMATTED, THE SECTORS 80 ; ARE FILLED WITH 0'S. ÉF A SECTOR TO BE COPIED CONTAINS ALL 0'S, THEN WE 81 ; DON'T BOTHER TO WRITE IT TO THE DESTINATION DISK 82 83 84 ;**************************************************** 85 ; ÏTHER VARIABLES USED IN THE FOLLOWING ROUTINES.... 86 ;**************************************************** 87 88 130E 89 CMDLINE 130E 55 30 90 .BYTE 'U0' ; ÂURST PREFIX. =131A 91 *=*+10 ; ÐARAMETER SPACE FOR BURST COMMAND. 131A =131B 92 CMDLEN *=*+1 ; ÌENGTH OF THE COMMAND STRING (# OF BYTES). 131B =131C 93 OLDCLK *=*+1 ; ÓTATUS OF CLOCK LINE. 131C =131D 94 TEMP *=*+1 95 96 ;****************************************************************** 97 ; ÊÕÍÐ ÔÁÂÌÅ OF AVAILABLE BURST ROUTINES. ÓÙÓ TO THESE LOCATIONS 98 ; FROM ÂÁÓÉÃ. ÔHE ÂÕÒÓÔ ROUTINES THEMSELVES CAN THEN BE MODIFIED 99 ; OR CUSTOMIZED WITHOUT AFFECTING THE ÓÙÓ LOCATIONS FROM ÂÁÓÉÃ. 100 ;****************************************************************** 101 =1340 102 *=$1340 103 1340 104 Ê_ÉÎÑÕÉÒÅ_ÆÏÒÍÁÔ 1340 4C 148D 105 JMP ÉÎÑÕÉÒÅ_ÆÏÒÍÁÔ 1343 106 Ê_ÐÈÙÓÉÃÁÌ_ÒÅÁÄ 1343 4C 136B 107 JMP ÐÒÅÁÄ 1346 108 Ê_ÌÏÇÉÃÁÌ_ÒÅÁÄ 1346 4C 135E 109 JMP ÌÒÅÁÄ 1349 110 Ê_ÐÈÙÓÉÃÁÌ_×ÒÉÔÅ 1349 4C 13F9 111 JMP Ð×ÒÉÔÅ 134C 112 Ê_ÌÏÇÉÃÁÌ_×ÒÉÔÅ 134C 4C 13EC 113 JMP Ì×ÒÉÔÅ 114 .MAIN. HCD65XX V3.1 10JULY87 PAGE 3 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 115 134F 116 Ê_ÍÅÍÏÒÙ_ÒÅÁÄ 134F 4C 1532 117 JMP ÍÅÍÏÒÙ_ÒÅÁÄ 1352 118 Ê_ÍÅÍÏÒÙ_×ÒÉÔÅ 1352 4C 1594 119 JMP ÍÅÍÏÒÙ_×ÒÉÔÅ 1355 120 Ê_ÄÕÍÐ_ÃÁÃÈÅ 1355 4C 15FB 121 JMP ÄÕÍÐ_ÃÁÃÈÅ 1358 122 Ê_ÑÕÅÒÙ_ÆÏÒÍÁÔ 1358 4C 14AF 123 JMP ÑÕÅÒÙ_ÆÏÒÍÁÔ 135B 124 Ê_ÃÏÍÐÁÒÅ_ÍÅÍÏÒÙ 135B 4C 162A 125 JMP ÃÏÍÐÁÒÅ_ÍÅÍÏÒÙ 126 127 ;*************************************** 128 ; ÌOCATIONS OF IMPORTANT Ã128 STUFF... 129 ;*************************************** 130 =FFC9 131 CHKOUT=$FFC9 ; KERNEL CHANNEL OUTPUT =FFCC 132 CLRCHN=$FFCC ; KERNEL CLEAR CHANNEL =FFBA 133 SETLFS=$FFBA ; KERNEL SET LOGICAL FILE NUMBER =FFBD 134 SETNAM=$FFBD ; KERNEL SET FILENAME =FFD2 135 BSOUT =$FFD2 ; KERNEL BASIC INPUT/OUTPUT =FF47 136 SPIN_OUT=$FF47 ; ÓET UP FAST SERIAL FOR INPUT OR OUTPUT. 137 ; ÓÅà FOR OUTPUT, ÃÌà FOR INPUT. =DD00 138 D2PRA =$DD00 ; Ã128 SERIAL PORT LOCATION =0010 139 CLKOUT=$10 ; SLOW SERIAL CLOCK OUTPUT BIT MASK =0040 140 CLKIN =$40 ; SLOW SERIAL CLOCK INPUT BIT MASK =DC0D 141 D1ICR =$DC0D ; 6526 ÃÉÁ INTERRUPT CONTROL REGISTER =DC0C 142 D1SDR =$DC0C ; 6526 ÃÉÁ SERIAL DATA REGISTER =00FA 143 BUFFER=$FA ; ZERO PAGE POINTER VARIABLE =00FC 144 BUFFER2=$FC ; ZERO PAGE POINTER VARIABLE 145 146 ;****************************** 147 ; ÂÕÒÓÔ COMMAND PRIMITIVES 148 ;****************************** 149 =0000 150 ÐÂÕÒÓÔÒÄ =$00 ; ÐHYSICAL BURST READ. =0002 151 ÐÂÕÒÓÔ×Ò =$02 ; ÐHYSICAL BURST WRITE. =0080 152 ÌÂÕÒÓÔÒÄ =$80 ; ÌOGICAL BURST READ =0082 153 ÌÂÕÒÓÔ×Ò =$82 ; ÌOGICAL BURST WRITE. =0004 154 ÂÕÒÓÔ_ÉÎÑÕÉÒÅ =$04 ; ÂURST INQUIRE. =009D 155 ÄÕÍÐÃÁÃÈÅ =$9Ä ; ÄUMP TRACK CACHE ('FORCE' BIT SET) =008A 156 ÂÕÒÓÔ_ÑÕÅÒÙ =$8Á ; ÑUERY DISK FORMAT. 157 158 ;********************************************************* 159 ;* --------------- ÂÕÒÓÔ ÒÏÕÔÉÎÅÓ -------------------- * 160 ;********************************************************* 161 135E 162 ÌÒÅÁÄ ;ÌOGICAL SECTOR READ FROM THE DEVICE INDICATED BY ÌÆ. 163 ;ÔHE TRACK AND SECTOR ARE IN ÔÒÁÃË, ÓÅÃÔÏÒ. ÔHE LOCATION 164 ;ÓTATUS BYTE FROM DRIVE IS RETURNED IN ÓÔÁÔÕÓ. 165 135E A9 80 166 LDA #LBURSTRD ;LOGICAL BURST READ COMMAND 1360 8D 1310 167 STA CMDLINE+2 1363 A9 01 168 LDA #$01 1365 8D 1308 169 STA ÓÅÃÓÉÚÅ ;ÌOGICAL SECTOR SIZE IS ALWAYS 256 BYTES. 1368 4C 1377 170 JMP ÒÅÁÄ 171 .MAIN. HCD65XX V3.1 10JULY87 PAGE 4 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 172 173 136B 174 ÐÒÅÁÄ ;ÐHYSICAL SECTOR READ FROM DEVICE INDICATED BY ÌÆ. 175 ;ÔHE TRACK AND SECTOR ARE IN ÔÒÁÃË, ÓÅÃÔÏÒ. ÔHE LOCATION 176 ;OF START OF THE Ã128 BUFFER TO PUT THE READ DATA IN ÂÕÆÌÏÃ. 177 ;ÔHE PHYSICAL SECTOR SIZE IN ÓÅÃÓÉÚÅ (1=256,2=512,4=1024). 178 ;ÎUMBER OF SECTORS IN ÎÕÍÓÅÃ. 179 ;ÐHYSICAL SIDE OF THE DISK IN ÓÉÄÅ (0 OR 1). 180 ;ÓTATUS BYTE FROM DRIVE IS RETURNED IN ÓÔÁÔÕÓ. 181 136B A9 00 182 LDA #ÐÂÕÒÓÔÒÄ ;ÐHYSICAL BURST READ COMMAND. 136D AE 1309 183 LDX ÓÉÄÅ ; ÃHECK WHICH SIDE TO READ FROM. 1370 F0 02 184 BEQ 1$ 1372 09 10 185 ORA #$10 ; ÉF SIDE 1, THEN SET BIT IN THE COMMAND BYTE. 1374 8D 1310 186 1$ STA CMDLINE+2 187 188 1377 189 ÒÅÁÄ 190 1377 AD FF00 191 LDA $FF00 ;ÓAVE OLD ÍÍÕ SETUP. 137A 48 192 PHA 193 137B A9 0E 194 LDA #$0E ;ÓET ÍÍÕ FOR ÒÁÍ0,ËÅÒÎÅÌ,É/Ï. 137D 8D FF00 195 STA $FF00 196 1380 20 167D 197 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 198 1383 AD 1303 199 LDA ÔÒÁÃË 1386 8D 1311 200 STA ÃÍÄÌÉÎÅ+3 ; TRACK 1389 AD 1304 201 LDA ÓÅÃÔÏÒ 138C 8D 1312 202 STA ÃÍÄÌÉÎÅ+4 ; SECTOR 138F AD 1305 203 LDA ÎÕÍÓÅà 1392 8D 1313 204 STA ÃÍÄÌÉÎÅ+5 ; ÎUMBER OF SECTORS TO READ. 205 1395 A9 06 206 LDA #$06 ; ÌENGTH OF COMMAND STRING. 1397 8D 131A 207 STA ÃÍÄÌÅÎ 139A 20 1664 208 JSR SENDCMD ; SEND CMD STRING 209 139D AD 1306 210 LDA ÂÕÆÌÏà ; ÓET UP ZERO PAGE INDIRECT POINTER. 13A0 85 FA 211 STA ÂÕÆÆÅÒ 13A2 AD 1307 212 LDA ÂÕÆÌÏÃ+1 13A5 85 FB 213 STA ÂÕÆÆÅÒ+1 214 13A7 A0 00 215 LDY #0 ; CLEAR THE 'EMPTY SECTOR(S)' FLAG. 13A9 8C 130D 216 STY FLAG 217 13AC 78 218 SEI ; ÎO IRQ'S ALLOWED DURING HANDSHAKE. 13AD 2C DC0D 219 BIT D1ICR ; CLEAR PENDING 220 13B0 20 169C 221 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK. 222 13B3 AE 1308 223 1$ LDX ÓÅÃÓÉÚÅ ; ÓECTOR SIZE GIVES # OF PAGES PER SECTOR. 224 13B6 20 16A5 225 JSR ×ÁÉÔ ;×AIT FOR FAST BYTE (1ST IS STATUS). 13B9 AD DC0C 226 LDA D1SDR ;ÇET STATUS BYTE. 13BC 8D 1300 227 STA ÓÔÁÔÕÓ 228 .MAIN. HCD65XX V3.1 10JULY87 PAGE 5 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 229 230 13BF 29 0F 231 AND #15 ;×AS THERE AN ERROR? 13C1 C9 02 232 CMP #2 ; 13C3 B0 21 233 BCS 5$ ; BRANCH IF ERROR OCCURED. 234 13C5 20 169C 235 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE CLOCK SO NEXT BYTE IS SENT. 236 13C8 20 16A5 237 3$ JSR ×ÁÉÔ ;×AIT FOR THE NEXT BYTE. 238 13CB 20 169C 239 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK SO NEXT BYTE IS SENT. 13CE AD DC0C 240 LDA Ä1ÓÄÒ ;ÇET THE DATA BYTE 13D1 91 FA 241 STA (BUFFER),Y ; AND SAVE IT 242 ; WHILE NEXT BYTE IS BEING TRANSMITTED. 243 13D3 0D 130D 244 ORA FLAG ;ÕPDATE 'ZERO' SECTOR FLAG. 13D6 8D 130D 245 STA FLAG 246 13D9 C8 247 INY ;ÁNY MORE IN THIS PAGE? 13DA D0 EC 248 BNE 3$ 249 13DC E6 FB 250 INC ÂÕÆÆÅÒ+1 13DE CA 251 DEX ;ÌOOP FOR THE # OF PAGES PER SECTOR. 13DF D0 E7 252 BNE 3$ 253 13E1 CE 1313 254 DEC ÃÍÄÌÉÎÅ+5 ;ÌOOP FOR THE NUMBER OF SECTORS. 13E4 D0 CD 255 BNE 1$ 256 13E6 58 257 5$ CLI 258 13E7 68 259 PLA ;ÒESTORE ÍÍÕ TO OLD CONFIGURATION. 13E8 8D FF00 260 STA $FF00 261 13EB 60 262 RTS 263 264 ;**************************************************************** 265 13EC 266 Ì×ÒÉÔÅ ;ÌOGICAL SECTOR WRITE TO THE DEVICE INDICATED BY ÌÆ. 267 ;ÔHE TRACK AND SECTOR ARE IN ÔÒÁÃË, ÓÅÃÔÏÒ. ÔHE LOCATION 268 ;OF START OF Ã128 BUFFER CONTAINING WRITE DATA IN ÂÕÆÌÏÃ. 269 ;ÓTATUS BYTE FROM DRIVE IS RETURNED IN ÓÔÁÔÕÓ. 270 13EC A9 82 271 LDA #LBURSTWR 13EE 8D 1310 272 STA CMDLINE+2 ; BURST WRITE 13F1 A9 01 273 LDA #$01 13F3 8D 1308 274 STA ÓÅÃÓÉÚÅ ; ÌOGICAL SECTOR SIZE IS ALWAYS 256 BYTES. 13F6 4C 1405 275 JMP ×ÒÉÔÅ 276 277 13F9 278 Ð×ÒÉÔÅ ;ÐHYSICAL SECTOR WRITE TO THE DEVICE INDICATED BY ÌÆ. 279 ;ÔHE TRACK AND SECTOR ARE IN ÔÒÁÃË, ÓÅÃÔÏÒ. ÔHE LOCATION 280 ;OF START OF Ã128 BUFFER CONTAINING WRITE DATA IN ÂÕÆÌÏÃ. 281 ;ÔHE PHYSICAL SECTOR SIZE IN ÓÅÃÓÉÚÅ (1=256,2=512,4=1024). 282 ;ÎUMBER OF SECTORS IN ÎÕÍÓÅÃ. 283 ;ÐHYSICAL SIDE IN ÓÉÄÅ. 284 ;ÓTATUS BYTE FROM DRIVE IS RETURNED IN ÓÔÁÔÕÓ. 285 .MAIN. HCD65XX V3.1 10JULY87 PAGE 6 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 286 287 13F9 A9 02 288 LDA #ÐÂÕÒÓÔ×Ò ;ÐHYSICAL BURST WRITE COMMAND. 13FB AE 1309 289 LDX ÓÉÄÅ ; ÃHECK WHICH SIDE TO WRITE TO. 13FE F0 02 290 BEQ 1$ 1400 09 10 291 ORA #$10 ; ÉF SIDE 1, THEN SET BIT IN THE COMMAND BYTE. 1402 8D 1310 292 1$ STA CMDLINE+2 293 294 1405 295 ×ÒÉÔÅ 296 1405 AD FF00 297 LDA $FF00 ;ÓAVE OLD ÍÍÕ SETUP. 1408 48 298 PHA 299 1409 A9 0E 300 LDA #$0E ;ÓET ÍÍÕ FOR ÒÁÍ0,ËÅÒÎÅÌ,É/Ï. 140B 8D FF00 301 STA $FF00 302 140E 20 167D 303 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 1411 AD 1303 304 LDA ÔÒÁÃË 1414 8D 1311 305 STA ÃÍÄÌÉÎÅ+3 ; TRACK 1417 AD 1304 306 LDA ÓÅÃÔÏÒ 141A 8D 1312 307 STA ÃÍÄÌÉÎÅ+4 ; SECTOR 141D AD 1305 308 LDA ÎÕÍÓÅà 1420 8D 1313 309 STA ÃÍÄÌÉÎÅ+5 ; ÎUMBER OF SECTORS TO WRITE. 310 1423 A9 06 311 LDA #$06 1425 8D 131A 312 STA ÃÍÄÌÅÎ ;ÃOMMAND LENGTH. 1428 20 1664 313 JSR SENDCMD ; SEND CMD STRING 314 142B AD 1306 315 LDA ÂÕÆÌÏà ; ÓET UP ZERO PAGE INDIRECT POINTER. 142E 85 FA 316 STA ÂÕÆÆÅÒ 1430 AD 1307 317 LDA ÂÕÆÌÏÃ+1 1433 85 FB 318 STA ÂÕÆÆÅÒ+1 319 1435 A9 40 320 LDA #CLKIN ;ÉNITIAL CLOCK STATUS. 1437 8D 131B 321 STA OLDCLK 322 143A A0 00 323 LDY #0 143C 78 324 SEI ; NO IRQ'S DURING BURST HANDSHAKE 325 143D AE 1308 326 1$ LDX ÓÅÃÓÉÚÅ ; ÓECTOR SIZE GIVES # OF PAGES PER SECTOR. 327 1440 38 328 SEC ;ÔURN FAST SERIAL TO OUTPUT MODE. 1441 20 FF47 329 JSR SPIN_OUT 330 1444 AD DD00 331 2$ LDA D2PRA ;×AIT FOR STATE CHANGE. 1447 4D 131B 332 EOR OLDCLK 144A 29 40 333 AND #CLKIN 144C F0 F6 334 BEQ 2$ 335 144E 4D 131B 336 EOR OLDCLK ;ÃHANGE STATUS OF ÏÌÄÃÌË. 1451 8D 131B 337 STA OLDCLK 338 1454 B1 FA 339 LDA (BUFFER),Y ; GET DATA 1456 8D DC0C 340 STA D1SDR ; & SEND IT 341 1459 20 16A5 342 JSR ×ÁÉÔ ;×AIT FOR THE BYTE TO BE TRANSMITTED. .MAIN. HCD65XX V3.1 10JULY87 PAGE 7 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 343 344 145C C8 345 INY 145D D0 E5 346 BNE 2$ ;ÁNY MORE LEFT IN THIS PAGE? 347 145F E6 FB 348 INC BUFFER+1 1461 CA 349 DEX ;ÌOOP FOR THE # OF PAGES PER SECTOR. 1462 D0 E0 350 BNE 2$ 351 1464 18 352 CLC ;ÔURN AROUND TO INPUT MODE TO GET ÓÔÁÔÕÓ. 1465 20 FF47 353 JSR SPIN_OUT 354 1468 2C DC0D 355 BIT D1ICR ; CLEAR PENDING 356 146B 20 1688 357 JSR CLKLO ; SET CLOCK LOW WHEN READY FOR STATUS 358 146E 20 16A5 359 JSR ×ÁÉÔ ;×AIT FOR THE BYTE TO BE SHIFTED IN. 1471 AD DC0C 360 LDA D1SDR ;ÇET THE STATUS BYTE. 1474 8D 1300 361 STA ÓÔÁÔÕÓ ;ÓAVE IT. 1477 48 362 PHA 1478 20 1693 363 JSR CLKHI ;ÒELEASE THE SLOW CLOCK LINE. 147B 68 364 PLA 365 147C 29 0F 366 AND #15 ;ÃHECK FOR ANY ERROR. 147E C9 02 367 CMP #2 1480 B0 05 368 BCS 7$ ; BRANCH IF THERE WAS AN ERROR. 369 1482 CE 1313 370 DEC ÃÍÄÌÉÎÅ+5 ;ÌOOP FOR THE NUMBER OF SECTORS. 1485 D0 B6 371 BNE 1$ 372 1487 58 373 7$ CLI 1488 68 374 PLA ;ÒESTORE OLD MEMORY CONFIGURATION. 1489 8D FF00 375 STA $FF00 148C 60 376 RTS 377 378 ;************************************************************ 379 148D 380 ÉÎÑÕÉÒÅ_ÆÏÒÍÁÔ ;ÓENDS AN ÉÎÑÕÉÒÅ ÄÉÓË COMMAND TO THE DRIVE INDICATE BY 381 ;THE LOGICAL FILE (ÌÆ). ÓTATUS IS RETURNED IN ÓÔÁÔÕÓ. 382 148D 20 167D 383 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 1490 A9 04 384 LDA #ÂÕÒÓÔ_ÉÎÑÕÉÒÅ ; INQUIRE BURST COMMAND 1492 8D 1310 385 STA CMDLINE+2 1495 A9 03 386 LDA #$03 ; LENGTH OF COMMAND. 1497 8D 131A 387 STA ÃÍÄÌÅÎ 149A 20 1664 388 JSR SENDCMD ; SEND CMD STRING 389 149D 78 390 SEI ;ÄISABLE INTERRUPTS DURING HANDSHAKE. 391 149E 2C DC0D 392 BIT Ä1ÉÃÒ ;ÃLEAR ANY BYTE READY THAT'S PENDING. 393 14A1 20 169C 394 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE CLOCK SO 1581 SENDS NEXT. 14A4 20 16A5 395 JSR ×ÁÉÔ ;×AIT FOR THE BYTE TO BE SHIFTED IN. 14A7 AD DC0C 396 LDA Ä1ÓÄÒ ;ÇET THE STATUS BYTE. 14AA 8D 1300 397 STA ÓÔÁÔÕÓ ;ÓAVE IT OFF. 14AD 58 398 CLI 14AE 60 399 RTS .MAIN. HCD65XX V3.1 10JULY87 PAGE 8 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 400 401 402 ;************************************************************ 403 14AF 404 ÑÕÅÒÙ_ÆÏÒÍÁÔ ;ÓENDS A ÑÕÅÒÙ ÄÉÓË ÆÏÒÍÁÔ COMMAND TO THE DRIVE INDICATE BY 405 ;THE LOGICAL FILE (ÌÆ). ÐHYSICAL TRACK NUMBER TO QUERY 406 ;SHOULD BE PROVIDED IN ÔÒÁÃË. ÐHYSICAL SIDE SHOULD 407 ;BE PROVIDED IN ÓÉÄÅ. ÓTATUS IS RETURNED IN ÓÔÁÔÕÓ. 408 ;ÎUMBER OF SECTORS FOUND ON THE TRACK RETURNED IN ÎÕÍÓÅÃ. 409 ;ÌOGICAL TRACK NUMBER FOUND IN THE SECTOR HEADERS RETURNED 410 ;IN ÔÒÁÃË. ÍINIMUM LOGICAL SECTOR NUMBER FOUND IN THE 411 ;SECTOR HEADERS IS RETURNED IN ÍÉÎÓÅÃ. ÔHE MAXIMIUM 412 ;LOGICAL SECTOR IS RETURNED ÍÁØÓÅÃ. ÐHYSICAL INTERLEAVE 413 ;IS RETURNED IN ÉÎÔÌÖ. 414 ;ÉF AN ERROR IS ENCOUNTERED IN COMPILING THIS INFORMATION 415 ;(AS INDICATED BY ÓÔÁÔÕÓ), THEN NONE OF THE RETURN VALUES 416 ;ARE VALID (EXCEPT ÓÔÁÔÕÓ). 417 14AF 20 167D 418 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 419 14B2 A9 8A 420 LDA #ÂÕÒÓÔ_ÑÕÅÒÙ ;ÑÕÅÒÙ ÄÉÓË BURST COMMAND 14B4 AE 1309 421 LDX ÓÉÄÅ ; ÓET THE SIDE BIT ACCORDINGLY. 14B7 D0 02 422 BNE 4$ 14B9 09 10 423 ORA #$10 14BB 8D 1310 424 4$ STA CMDLINE+2 425 14BE AD 1303 426 LDA ÔÒÁÃË ; ÐHYSICAL TRACK OFFSET. 14C1 8D 1311 427 STA CMDLINE+3 14C4 A9 04 428 LDA #$04 ; LENGTH OF COMMAND. 14C6 8D 131A 429 STA ÃÍÄÌÅÎ 14C9 20 1664 430 JSR SENDCMD ; SEND CMD STRING 431 14CC 78 432 SEI ;ÄISABLE INTERRUPTS DURING HANDSHAKE. 14CD 2C DC0D 433 BIT Ä1ÉÃÒ ;ÃLEAR ANY BYTE READY THAT'S PENDING. 434 14D0 20 169C 435 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK SO 1581 SENDS NEXT. 14D3 20 16A5 436 JSR ×ÁÉÔ ;×AIT FOR THE FIRST STATUS BYTE. 14D6 AD DC0C 437 LDA Ä1ÓÄÒ ;ÇET THE STATUS BYTE (STATUS OF TRACK 0). 14D9 8D 1300 438 STA ÓÔÁÔÕÓ ;ÓAVE IT OFF. 439 14DC 29 0F 440 AND #$0F ;×AS THERE AN ERROR? 14DE C9 02 441 CMP #2 14E0 B0 4E 442 BCS 5$ ; BRANCH IF THERE WAS AN ERROR. 443 14E2 20 169C 444 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 14E5 20 16A5 445 JSR ×ÁÉÔ ;×AIT FOR NEXT STATUS BYTE TO BE READY. 14E8 AD DC0C 446 LDA Ä1ÓÄÒ ;ÇET IT (STATUS OF TRACK ÔÒÁÃË). 14EB 8D 1300 447 STA ÓÔÁÔÕÓ ;ÓAVE IT. 448 14EE 29 0F 449 AND #$0F ;×AS THERE AN ERROR? 14F0 C9 02 450 CMP #2 14F2 B0 3C 451 BCS 5$ ; BRANCH IF AN ERROR. 452 14F4 20 169C 453 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 14F7 20 16A5 454 JSR ×ÁÉÔ ;×AIT FOR 'NUMBER OF SECTORS BYTE' TO BE READY. 14FA AD DC0C 455 LDA Ä1ÓÄÒ ;ÇET IT. 14FD 8D 1305 456 STA ÎÕÍÓÅà ;ÓAVE IT. .MAIN. HCD65XX V3.1 10JULY87 PAGE 9 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 457 458 1500 20 169C 459 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 1503 20 16A5 460 JSR ×ÁÉÔ ;×AIT FOR 'LOGICAL TRACK #' BYTE TO BE READY. 1506 AD DC0C 461 LDA Ä1ÓÄÒ ;ÇET IT. 1509 8D 1303 462 STA ÔÒÁÃË ;ÓAVE IT. 463 150C 20 169C 464 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 150F 20 16A5 465 JSR ×ÁÉÔ ;×AIT FOR 'MINIMUM SECTOR #' BYTE TO BE READY. 1512 AD DC0C 466 LDA Ä1ÓÄÒ ;ÇET IT. 1515 8D 130A 467 STA ÍÉÎÓÅà ;ÓAVE IT. 468 1518 20 169C 469 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 151B 20 16A5 470 JSR ×ÁÉÔ ;×AIT FOR 'MAXIMUM SECTOR #' BYTE TO BE READY. 151E AD DC0C 471 LDA Ä1ÓÄÒ ;ÇET IT. 1521 8D 130B 472 STA ÍÁØÓÅà ;ÓAVE IT. 473 1524 20 169C 474 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK, SO 1581 SENDS NEXT. 1527 20 16A5 475 JSR ×ÁÉÔ ;×AIT FOR 'INTERLEAVE' BYTE TO BE READY. 152A AD DC0C 476 LDA Ä1ÓÄÒ ;ÇET IT. 152D 8D 130C 477 STA ÉÎÔÌÖ ;ÓAVE IT. 478 1530 58 479 5$ CLI 1531 60 480 RTS 481 482 ;*************************************************************** 483 1532 484 ÍÅÍÏÒÙ_ÒÅÁÄ ;ÂURST MEMORY READ OF THE 1581. ÐAGE IN 1581 MEMORY TO 485 ;START READING AT IN .Ø, NUMBER OF PAGES TO READ IN .Ù, 486 ;LOCATION TO STORE DATA IN Ã128 MEMORY IN ÂÕÆÌÏÃ. 487 ;ÌOGICAL FILE TO BE READ FROM IN ÌÆ. 488 1532 AD FF00 489 LDA $FF00 ;ÓAVE OLD ÍÍÕ SETUP. 1535 48 490 PHA 491 1536 A9 0E 492 LDA #$0E ;ÓET ÍÍÕ FOR ÒÁÍ0,ËÅÒÎÅÌ,É/Ï. 1538 8D FF00 493 STA $FF00 494 153B 20 167D 495 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 153E A9 3E 496 LDA #$3Å ;('>') 'BURST MEMORY READ' COMMAND STRING. 1540 8D 1310 497 STA ÃÍÄÌÉÎÅ+2 ; ( "Õ0>ÍÒ" ) 1543 A9 4D 498 LDA #$4Ä ;('Í') 1545 8D 1311 499 STA ÃÍÄÌÉÎÅ+3 1548 A9 52 500 LDA #$52 ;('Ò') 154A 8D 1312 501 STA ÃÍÄÌÉÎÅ+4 154D 8E 1313 502 STX ÃÍÄÌÉÎÅ+5 ; 1581 PAGE TO START READING FROM. 1550 8C 1314 503 STY ÃÍÄÌÉÎÅ+6 ; # OF PAGES TO READ. 504 1553 A9 07 505 LDA #$07 ; ÌENGTH OF COMMAND STRING. 1555 8D 131A 506 STA ÃÍÄÌÅÎ 1558 20 1664 507 JSR SENDCMD ; SEND CMD STRING 508 155B AD 1306 509 LDA ÂÕÆÌÏà ; ÓET UP ZERO PAGE INDIRECT POINTER. 155E 85 FA 510 STA ÂÕÆÆÅÒ 1560 AD 1307 511 LDA ÂÕÆÌÏÃ+1 1563 85 FB 512 STA ÂÕÆÆÅÒ+1 513 .MAIN. HCD65XX V3.1 10JULY87 PAGE 10 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 514 1565 A9 00 515 LDA #0 ; CLEAR THE 'EMPTY SECTOR(S)' FLAG. 1567 8D 130D 516 STA FLAG 517 156A 78 518 SEI ; ÎO IRQ'S ALLOWED DURING HANDSHAKE. 519 156B 2C DC0D 520 BIT D1ICR ; CLEAR PENDING 521 156E 20 169C 522 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE STATE OF CLOCK. 523 1571 A0 00 524 LDY #0 1573 20 16A5 525 3$ JSR ×ÁÉÔ ;×AIT FOR THE BYTE TO BE SHIFTED IN. 526 1576 20 169C 527 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE CLOCK SO NEXT BYTE IS SENT. 1579 AD DC0C 528 LDA D1SDR ; GET DATA 157C 91 FA 529 STA (BUFFER),Y ; AND SAVE IT WHILE NEXT BYTE IS TRANSMITTED. 530 157E 0D 130D 531 ORA FLAG ; ÕPDATE 'ZERO' FLAG. 1581 8D 130D 532 STA FLAG 533 1584 C8 534 INY 1585 D0 EC 535 BNE 3$ ;ÁNY MORE IN THIS PAGE? 536 1587 E6 FB 537 INC ÂÕÆÆÅÒ+1 1589 CE 1314 538 DEC ÃÍÄÌÉÎÅ+6 ;ÁNY MORE PAGES TO DO? 158C D0 E5 539 BNE 3$ 540 158E 58 541 5$ CLI 542 158F 68 543 PLA ;ÒESTORE OLD MEMORY CONFIGURATION. 1590 8D FF00 544 STA $FF00 545 1593 60 546 RTS 547 548 ;************************************************************ 549 1594 550 ÍÅÍÏÒÙ_×ÒÉÔÅ ;ÂURST MEMORY WRITE TO THE 1581'S MEMORY. ÔHE 551 ;LOCATION IN Ã128 MEMORY TO SEND DATA FROM IN ÂÕÆÌÏÃ. 552 ;ÔHE PAGE IN 1581 MEMORY TO START WRITING TO IN .Ø. 553 ;ÔHE NUMBER OF PAGES TO WRITE IN .Ù. 554 ;ÌOGICAL FILE TO BE WRITTEN TO IN ÌÆ. 555 1594 AD FF00 556 LDA $FF00 ;ÓAVE OLD ÍÍÕ SETUP. 1597 48 557 PHA 558 1598 A9 0E 559 LDA #$0E ;ÓET ÍÍÕ FOR ÒÁÍ0,ËÅÒÎÅÌ,É/Ï. 159A 8D FF00 560 STA $FF00 561 159D 20 167D 562 JSR ÓÅÔÕ0 ;ÐUT "Õ0" AT START OF COMMAND STRING. 15A0 A9 3E 563 LDA #$3Å ;('>') 'BURST MEMORY WRITE' COMMAND STRING. 15A2 8D 1310 564 STA ÃÍÄÌÉÎÅ+2 ; ( "Õ0>Í×" ) 15A5 A9 4D 565 LDA #$4Ä ;('Í') 15A7 8D 1311 566 STA ÃÍÄÌÉÎÅ+3 15AA A9 57 567 LDA #$57 ;('×') 15AC 8D 1312 568 STA ÃÍÄÌÉÎÅ+4 15AF 8E 1313 569 STX ÃÍÄÌÉÎÅ+5 ; 1581 PAGE TO START WRITING TO. 15B2 8C 1314 570 STY ÃÍÄÌÉÎÅ+6 ; # OF PAGES TO WRITE. .MAIN. HCD65XX V3.1 10JULY87 PAGE 11 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 571 572 15B5 A9 07 573 LDA #$07 ; ÌENGTH OF COMMAND STRING. 15B7 8D 131A 574 STA ÃÍÄÌÅÎ 575 15BA 20 1664 576 JSR SENDCMD ; SEND CMD STRING 577 15BD AD 1306 578 LDA ÂÕÆÌÏà ; ÓET UP ZERO PAGE INDIRECT POINTER. 15C0 85 FA 579 STA ÂÕÆÆÅÒ 15C2 AD 1307 580 LDA ÂÕÆÌÏÃ+1 15C5 85 FB 581 STA ÂÕÆÆÅÒ+1 582 15C7 A9 40 583 LDA #CLKIN ;ÉNITIAL CLOCK STATUS. 15C9 8D 131B 584 STA OLDCLK 585 15CC A0 00 586 LDY #0 15CE 78 587 SEI ;ÎO ÉÒÑ'S ALLOWED DURING HANDSHAKE. 588 15CF 38 589 SEC ; ÓET TO OUTPUT MODE. 15D0 20 FF47 590 JSR ÓÐÉÎ_ÏÕÔ 591 15D3 AD DD00 592 2$ LDA D2PRA ;×AIT FOR STATE (SLOW CLOCK LINE) CHANGE. 15D6 4D 131B 593 EOR ÏÌÄÃÌË 15D9 29 40 594 AND #ÃÌËÉÎ 15DB F0 F6 595 BEQ 2$ 596 15DD 4D 131B 597 EOR ÏÌÄÃÌË ;ÃHANGE STATUS OF ÏÌÄÃÌË VARIABLE. 15E0 8D 131B 598 STA ÏÌÄÃÌË 599 15E3 B1 FA 600 LDA (ÂÕÆÆÅÒ),Y ;ÇET DATA TO WRITE. 15E5 8D DC0C 601 STA Ä1ÓÄÒ ;ÓEND IT. 602 15E8 20 16A5 603 JSR ×ÁÉÔ ;×AIT FOR THE BYTE TO BE SENT. 604 15EB C8 605 INY 15EC D0 E5 606 BNE 2$ ;ÍORE IN THIS PAGE? 607 15EE E6 FB 608 INC ÂÕÆÆÅÒ+1 15F0 CE 1314 609 DEC ÃÍÄÌÉÎÅ+6 15F3 D0 DE 610 BNE 2$ ;ÁNY MORE PAGES TO SEND? 611 15F5 58 612 CLI 613 15F6 68 614 PLA ;ÒESTORE OLD MEMORY CONFIGURATION. 15F7 8D FF00 615 STA $FF00 616 15FA 60 617 RTS 618 619 620 ;********************************************************** 621 622 15FB 623 ÄÕÍÐ_ÃÁÃÈÅ ;ÄUMPS THE TRACK CACHE AT 1581 $0Ã00 TO THE PHYSICAL TRACK 624 ;SPECIFIED IN ÔÒÁÃË, ON THE SIDE SPECIFIED IN ÓÉÄÅ. ÔHE 625 ;'FORCE' BIT IS SET, SO IT IS WRITTEN WHETHER DIRTY OR NOT. 626 627 .MAIN. HCD65XX V3.1 10JULY87 PAGE 12 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 628 15FB 20 167D 629 JSR ÓÅÔÕ0 15FE A9 9D 630 LDA #ÄÕÍÐÃÁÃÈÅ ;ÄUMP TRACK CACHE COMMAND. 631 1600 AE 1309 632 LDX ÓÉÄÅ ; ÓET ÓÉÄÅ BIT ACCORDINGLY. 1603 F0 02 633 BEQ 1$ 1605 09 40 634 ORA #$40 635 1607 8D 1310 636 1$ STA ÃÍÄÌÉÎÅ+2 ; ÐUT THE COMMAND BYTE INTO COMMAND STRING. 160A AD 1303 637 LDA ÔÒÁÃË 160D 8D 1311 638 STA ÃÍÄÌÉÎÅ+3 ; ÐHYSICAL TRACK TO DUMP CACHE TO. 639 1610 A9 04 640 LDA #4 1612 8D 131A 641 STA ÃÍÄÌÅÎ ;ÌENGTH OF THE COMMAND STRING. 1615 20 1664 642 JSR ÓÅÎÄÃÍÄ 643 1618 78 644 SEI ;ÄISABLE INTERRUPTS DURING HANDSHAKE. 645 1619 2C DC0D 646 BIT Ä1ÉÃÒ ;ÃLEAR ANY BYTE READY THAT'S PENDING. 647 161C 20 169C 648 JSR ÃÌË_ÃÈÎÇ ;ÃHANGE CLOCK SO 1581 WILL SEND STATUS BYTE. 161F 20 16A5 649 JSR ×ÁÉÔ ;×AIT FOR BYTE TO BE SHIFTED IN. 1622 AD DC0C 650 LDA Ä1ÓÄÒ ;ÇET THE STATUS BYTE. 1625 8D 1300 651 STA ÓÔÁÔÕÓ ;ÓAVE IT OFF. 652 1628 58 653 CLI 1629 60 654 RTS 655 656 657 ;************************************************************* 658 162A 659 ÃÏÍÐÁÒÅ_ÍÅÍÏÒÙ ;ÃOMPARES MEMORY BLOCKS IN THE Ã128 MEMORY. 660 ;ÎUMBER OF PAGES TO COMPARE IN .Á. 661 ;ÆIRST PAGE OF FIRST MEMORY BLOCK IN .Ø. 662 ;ÆIRST PAGE OF SECOND MEMORY BLOCK IN .Ù. 663 ;ÉF THEY ARE EQUAL, THEN ÓÔÁÔÕÓ=0. 664 162A 8D 131C 665 STA TEMP 666 162D AD FF00 667 LDA $FF00 ;ÓAVE OLD ÍÍÕ SETUP. 1630 48 668 PHA 669 1631 A9 0E 670 LDA #$0E ;ÓET ÍÍÕ FOR ÒÁÍ0,ËÅÒÎÅÌ,É/Ï. 1633 8D FF00 671 STA $FF00 672 1636 86 FB 673 STX BUFFER+1 ;ÓET UP ÍÓ OF 1ST MEMORY POINTER. 1638 84 FD 674 STY BUFFER2+1 ;ÓET UP ÍÓ OF 2ND MEMORY POINTER. 163A AE 131C 675 LDX TEMP ;ÎUMBER OF PAGES TO COMPARE. 676 163D A9 00 677 LDA #0 ;ÓET UP ÌÓÂ'S OF MEMORY POINTERS. 163F 85 FA 678 STA BUFFER 1641 85 FC 679 STA BUFFER2 680 1643 8D 1300 681 STA ÓÔÁÔÕÓ ;ÉNITIALIZE ÓÔÁÔÕÓ. 682 1646 A0 00 683 LDY #0 684 .MAIN. HCD65XX V3.1 10JULY87 PAGE 13 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 685 1648 B1 FA 686 2$ LDA (BUFFER),Y 164A D1 FC 687 CMP (BUFFER2),Y 164C F0 07 688 BEQ 1$ 689 164E A9 FF 690 LDA #$FF ;ÎOT EQUAL! ÌOAD ÓÔÁÔÕÓ WITH NONZERO. 1650 8D 1300 691 STA ÓÔÁÔÕÓ 1653 D0 0A 692 BNE 99$ ; (BRANCH ALWAYS) 693 1655 C8 694 1$ INY 1656 D0 F0 695 BNE 2$ ;ÍORE IN THIS PAGE? 696 1658 E6 FB 697 INC BUFFER+1 165A E6 FD 698 INC BUFFER2+1 165C CA 699 DEX ;# OF PAGES COUNTER. 165D D0 E9 700 BNE 2$ 701 165F 68 702 99$ PLA ;ÒESTORE OLD MEMORY CONFIGURATION. 1660 8D FF00 703 STA $FF00 704 1663 60 705 RTS 706 707 ;********************************************************** 708 1664 709 ÓÅÎÄÃÍÄ ;ÓENDS THE COMMAND IN ÃÍÄÌÉÎÅ TO THE LOGICAL FILE 710 ;INDICATED BY ÌÆ. ÌENGTH OF THE COMMAND SHOULD BE IN ÃÍÄÌÅÎ. 711 1664 AE 1302 712 LDX ÌÆ 1667 20 FFC9 713 JSR CHKOUT ; CHANNEL OUTPUT (POINTED TO BY .Ø) 166A A2 00 714 LDX #0 166C AC 131A 715 LDY CMDLEN ; SEND CMD 166F BD 130E 716 1$ LDA CMDLINE,X 1672 20 FFD2 717 JSR BSOUT 1675 E8 718 INX 1676 88 719 DEY 1677 D0 F6 720 BNE 1$ 721 1679 20 FFCC 722 JSR CLRCHN ; SEND BUFFERED CHAR & EOI 167C 60 723 RTS 724 725 ;*********************************************************** 726 167D A9 55 727 ÓÅÔÕ0 LDA #85 ;'Õ' 167F 8D 130E 728 STA ÃÍÄÌÉÎÅ 1682 A9 30 729 LDA #48 ;'0' 1684 8D 130F 730 STA ÃÍÄÌÉÎÅ+1 1687 60 731 RTS 732 733 1688 734 ÃÌËÌÏ ; SET CLOCK LOW 1688 48 735 PHA 1689 AD DD00 736 LDA D2PRA 168C 09 10 737 ORA #CLKOUT 168E 8D DD00 738 STA D2PRA 1691 68 739 PLA 1692 60 740 RTS 741 .MAIN. HCD65XX V3.1 10JULY87 PAGE 14 0:BURST SUBS.SRC,S,R ERROR ADDR CODE SEQ SOURCE STATEMENT 742 743 1693 744 ÃÌËÈÉ ; SET CLOCK HIGH 1693 AD DD00 745 LDA D2PRA 1696 29 EF 746 AND #$FF-CLKOUT 1698 8D DD00 747 STA D2PRA 169B 60 748 RTS 749 169C 750 ÃÌË_ÃÈÎÇ ; CHANGE THE STATE OF THE CLOCK LINE OUTPUT. 169C AD DD00 751 LDA Ä2ÐÒÁ 169F 49 10 752 EOR #CLKOUT 16A1 8D DD00 753 STA Ä2ÐÒÁ 16A4 60 754 RTS 755 16A5 756 ×ÁÉÔ ; WAIT FOR THE SHIFT REGISTER TO BE FULL OR EMPTY. 16A5 A9 08 757 1$ LDA #8 16A7 2C DC0D 758 BIT Ä1ÉÃÒ 16AA F0 F9 759 BEQ 1$ 16AC 60 760 RTS 761 762 763 .END 0 ERRORS DETECTED .MAIN. HCD65XX V3.1 10JULY87 PAGE 15 SYMBOL TABLE = LABEL, <=> = SYMBOL, <+>= MULTIBLY DEFINED BSOUT =FFD2 BUFFER =00FA BUFFER2 =00FC BUFLOC 1306 BURST_INQUIRE =0004 BURST_QUERY =008A CHKOUT =FFC9 CLKHI 1693 CLKIN =0040 CLKLO 1688 CLKOUT =0010 CLK_CHNG 169C CLRCHN =FFCC CMDLEN 131A CMDLINE 130E COMPARE_MEMORY 162A D1ICR =DC0D D1SDR =DC0C D2PRA =DD00 DEV 1301 DUMPCACHE =009D DUMP_CACHE 15FB FLAG 130D INQUIRE_FORMAT 148D INTLV 130C J_COMPARE_MEMORY 135B J_DUMP_CACHE 1355 J_INQUIRE_FORMAT 1340 J_LOGICAL_READ 1346 J_LOGICAL_WRITE 134C J_MEMORY_READ 134F J_MEMORY_WRITE 1352 J_PHYSICAL_READ 1343 J_PHYSICAL_WRITE 1349 J_QUERY_FORMAT 1358 LBURSTRD =0080 LBURSTWR =0082 LF 1302 LREAD 135E LWRITE 13EC MAXSEC 130B MEMORY_READ 1532 MEMORY_WRITE 1594 MINSEC 130A NUMSEC 1305 OLDCLK 131B PBURSTRD =0000 PBURSTWR =0002 PREAD 136B PWRITE 13F9 QUERY_FORMAT 14AF READ 1377 SECSIZE 1308 SECTOR 1304 SENDCMD 1664 SETLFS =FFBA SETNAM =FFBD SETU0 167D SIDE 1309 SPIN_OUT =FF47 STATUS 1300 TEMP 131C TRACK 1303 WAIT 16A5 WRITE 1405