10 ;›20 ;›30 .OPT NO LIST›40 ;›50 ;SAVE#D:RELOC>DEMO.M65›60 ;›70 ;..›80 ;LIST#D:RELOC>DEMO.LST›90 ;›0100 ;›0110 ;›0120 ;ASM,,#D:RELOC>DEMO.COM›0130 JOHN = $06FE›0140 ;›0150 *= $3000›0160 .INCLUDE #D:SNAPSHOT>SYSLIB.M65›0170 G.START›0180 LDA #$60›0190 STA G.START›0200 LDA JOHN+1›0210 STA $01›0220 LDA JOHN›0230 SEC ›0240 SBC #$09 ;POINT TO 1ST BYTE OF SNAPSHOT'S VECTOR TABLE. THE FIRST BYTE IS A FLAG.›0250 STA $00›0260 BCS COPY.SNAP.TABLE›0270 DEC $01›0280 COPY.SNAP.TABLE›0290 LDA $00›0300 LDX $01›0310 STA SNAP.TABLE›0320 STX SNAP.TABLE+1›0330 C.S.T.B1›0340 LDY #1›0350 LDA ($00),Y›0360 STA SNAP.TABLE+2›0370 INY ›0380 LDA ($00),Y›0390 STA SNAP.TABLE+3›0400 C.S.T.B2›0410 INY ›0420 LDA ($00),Y›0430 STA SNAP.TABLE+4›0440 INY ›0450 LDA ($00),Y›0460 STA SNAP.TABLE+5›0470 ;›0480 LDA #0›0490 TAY ›0500 TAX ›0510 LDA SNAP.TABLE+2›0520 STA $00›0530 LDA SNAP.TABLE+3›0540 STA $01›0550 BNE COPY.P.BUFFER›0560 JMP MAJOR.ERROR›0570 ;Now to calculate the correct addresses,›0580 ;and place them into our snapshot program buffer before copying it›0590 ;to snapshot's internal program buffer.›0600 LDA SNAP.TABLE+3›0610 STA P.BUFFER+7›0620 STA $01 ;HIGH BYTE FIRST›0630 LDA SNAP.TABLE+2›0640 STA P.BUFFER+6›0650 .LOCAL ›0660 CLC ›0670 ADC #TB2-T.BUFFER›0680 STA $00›0690 BCC CALC.B0›0700 INC $01›0710 CALC.B0›0720 LDA $00›0730 STA MY.TB2›0740 LDA $01›0750 STA MY.TB2+1›0760 CLC ›0770 LDA $00›0780 ADC #TB3-TB2›0790 STA $00›0800 BCC CALC.B1›0810 INC $01›0820 CALC.B1 LDA $00›0830 STA MY.TB3›0840 LDA $01›0850 STA MY.TB3+1›0860 @›0870 COPY.P.BUFFER›0880 LDA P.BUFFER,Y›0890 STA ($00),Y›0900 INY ›0910 CPY #P.BUFFER.LENGTH+1›0920 BNE COPY.P.BUFFER›0930 ;›0940 LDA SNAP.TABLE+4›0950 STA $00›0960 LDA SNAP.TABLE+5›0970 STA $01›0980 LDY #0›0990 COPY.T.BUFFER›1000 LDA T.BUFFER,Y›1010 STA ($00),Y›1020 INY ›1030 CPY #T.BUFFER.LENGTH+1›1040 BNE COPY.T.BUFFER›1050 ;›1060 LDY #80›1070 LDX #0›1080 COPY.TEXT›1090 LDA TEXT,X›1100 CMP #$FF›1110 BEQ EXIT›1120 STA (88),Y ; SAVMSC›1130 INX ›1140 INY ›1150 BNE COPY.TEXT›1160 EXIT›1170 LDA CH›1180 CMP #255›1190 BEQ EXIT›1200 LDA #255›1210 STA CH›1220 LDY #0›1230 LDA SNAP.TABLE›1240 STA $00›1250 LDA SNAP.TABLE+1›1260 STA $01›1270 LDA #1›1280 STA ($00),Y›1290 JMP ($0A) ; RTS›1300 TEXT›1310 .SBYTE "** Ðòåóó áîù ëåù ôï óôáòô äåíï® **",$FF›1320 SNAP.TABLE *= *+6›1330 P.BUFFER›1340 .BYTE "S4"›1350 .BYTE "W",0,30›1360 .BYTE "A"›1370 MY.T.BUFFER›1380 .WORD T.BUFFER›1390 .BYTE "W",0,120›1400 .BYTE "S3"›1410 .BYTE "W",0,30›1420 .BYTE "A"›1430 MY.TB2›1440 .WORD TB2›1450 .BYTE "W",0,120›1460 .BYTE "A"›1470 MY.TB3›1480 .WORD TB3›1490 .BYTE "W",0,30›1500 .BYTE "S1"›1510 .BYTE "E"›1520 P.BUFFER.LENGTH = *-P.BUFFER›1530 T.BUFFER›1540 .BYTE ";WELCOME TO THE SNAPSHOT HD",EOL,";PROFESSIONAL PROGRAMMING UTILITY.",EOL›1550 .BYTE ";LET'S SNAP OVER TO SNAPSHOT #3.",EOL,$FF›1560 TB2›1570 .BYTE ";HERE WE ARE IN SNAPSHOT #3.",EOL,$FF›1580 TB3›1590 .BYTE ";ENOUGH OF THIS DEMO,LET'S GO BACK!",EOL,$FF›1600 ;›1610 T.BUFFER.LENGTH = *-T.BUFFER›1620 HERE›1630 .INCLUDE #D:>SNAPSHOT>MACROS.M65›1640 MAJOR.ERROR›1650 JSR PRINTSI›1660 .BYTE "}",EOL,EOL›1670 .BYTE "ýÅÒÒÏÒ­ The Snapshot HD Professional",EOL›1680 .BYTE "Programming Utility MUST be loaded in",EOL›1690 .BYTE "first!",EOL,$FF›1700 JMP ($0A)›1710 *= $02E2›1720 .WORD G.START›