10 ;›20 ;›30 .OPT NO LIST›40 ;›50 ;SAVE#D:RELOC>DEMO4.M65›60 ;›70 ;..›80 ;LIST#D:RELOC>DEMO4.LST›90 ;›0100 ;›0110 ;›0120 ;ASM,,#D:RELOC>DEMO4.COM›0130 ;›0140 ;This demo will switch to snap #4, attenpt to run D3:>UTT>UNARC on›0150 ;a file named D1:>DEMO.ARC, unarc it to D1:> , wait 10 seconds, and then snap back›0160 ;to snapshot #1.›0170 ;›0180 JOHN = $06FE›0190 ;›0200 *= $3000›0210 .INCLUDE #D:SNAPSHOT>SYSLIB.M65›0220 G.START›0230 LDA #$60›0240 STA G.START›0250 LDA JOHN+1›0260 STA $01›0270 LDA JOHN›0280 SEC ›0290 SBC #$09 ;Point to 1st byte in snapshot's vector table. The first byte is a flag.›0300 ;And we copy it.›0310 STA $00›0320 BCS COPY.SNAP.TABLE›0330 DEC $01›0340 COPY.SNAP.TABLE›0350 LDA $00›0360 LDX $01›0370 STA SNAP.TABLE›0380 STX SNAP.TABLE+1›0390 C.S.T.B1›0400 LDY #1›0410 LDA ($00),Y›0420 STA SNAP.TABLE+2›0430 INY ›0440 LDA ($00),Y›0450 STA SNAP.TABLE+3›0460 C.S.T.B2›0470 INY ›0480 LDA ($00),Y›0490 STA SNAP.TABLE+4›0500 INY ›0510 LDA ($00),Y›0520 STA SNAP.TABLE+5›0530 ;›0540 LDA SNAP.TABLE+2›0550 STA $00›0560 LDA SNAP.TABLE+3›0570 STA $01›0580 BNE COPY.P.BUFFER›0590 JMP MAJOR.ERROR›0600 ;›0610 ;Now to copy the correct addresses,›0620 ;and place them into our snapshot program buffer before copying it›0630 ;to snapshot's internal program buffer.›0640 ;›0650 ;Copy the internal address of the program & text buffer.›0660 ;›0670 COPY.P.BUFFER›0680 LDA SNAP.TABLE+4›0690 STA P.BUFFER+6›0700 LDA SNAP.TABLE+5›0710 STA P.BUFFER+7›0720 LDY #0›0730 C.P.B.B0›0740 LDA P.BUFFER,Y›0750 STA ($00),Y›0760 INY ›0770 CPY #P.BUFFER.LENGTH+1›0780 BNE C.P.B.B0›0790 ;›0800 LDA SNAP.TABLE+4›0810 STA $00›0820 LDA SNAP.TABLE+5›0830 STA $01›0840 LDY #0›0850 COPY.T.BUFFER›0860 LDA T.BUFFER,Y›0870 STA ($00),Y›0880 INY ›0890 CPY #T.BUFFER.LENGTH+1›0900 BNE COPY.T.BUFFER›0910 ;›0920 LDY #80›0930 LDX #0›0940 COPY.TEXT›0950 LDA TEXT,X›0960 CMP #$FF›0970 BEQ EXIT›0980 STA (88),Y ; SAVMSC›0990 INX ›1000 INY ›1010 BNE COPY.TEXT›1020 EXIT›1030 LDA CH›1040 CMP #255›1050 BEQ EXIT›1060 LDA #255›1070 STA CH›1080 LDY #0›1090 ;›1100 ;Now to set Snapshot's internal flag named PROGRAM to any non-zero value. This starts executing›1110 ;your snapshot program.›1120 ;›1130 LDA SNAP.TABLE›1140 STA $00›1150 LDA SNAP.TABLE+1›1160 STA $01›1170 LDA #1›1180 STA ($00),Y›1190 JMP ($0A) ;Goto DOS.›1200 TEXT›1210 .SBYTE "** Ðòåóó áîù ëåù ôï óôáòô äåíï® **",$FF›1220 SNAP.TABLE *= *+6›1230 ;›1240 ;These two buffers are an example of how to program Snapshot HD to execute a batch file.›1250 ;›1260 P.BUFFER›1270 .BYTE "S4" ;Snap to #4›1280 .BYTE "W",0,30 ;Wait 1/2 sec›1290 .BYTE "C" ;Send $ to CP›1300 MY.T.BUFFER›1310 .WORD T.BUFFER›1320 .BYTE "W",2,90 ;Wait 10 SEC›1330 .BYTE "S1"›1340 .BYTE "E"›1350 P.BUFFER.LENGTH = *-P.BUFFER›1360 T.BUFFER›1370 .BYTE "D3:>UTT>UNARC D1:DEMOARC.ARC D1:>",$9B,-1›1380 ;›1390 T.BUFFER.LENGTH = *-T.BUFFER›1400 HERE›1410 .INCLUDE #D:>SNAPSHOT>MACROS.M65›1420 MAJOR.ERROR›1430 JSR PRINTSI›1440 .BYTE "}",EOL,EOL›1450 .BYTE "ýÅÒÒÏÒ­ The Snapshot HD Professional",EOL›1460 .BYTE "Programming Utility MUST be loaded in",EOL›1470 .BYTE "first!",EOL,$FF›1480 JMP ($0A)›1490 *= $02E2›1500 .WORD G.START›