10 pmbase = 54279 ;$d407 20 ramtop = 106 ;$6A 30 sdmctl = 559 40 gractl = 53277 50 hposp0 = 53248 60 p0col = 704 70 vposp0 = $cb 72 xposp0 = $cd 74 yposp0 = $ce 76 pm = $cf 78 codebase = $d0 80 stick = $d300 90 strig = $d010 100 ; ***************************** 110 ; CIO EQUATES 120 ; ****************************** 130 ICHID = $0340 140 ICDNO = $0341 150 ICCOM = $0342 160 ICSTA = $0343 170 ICBAL = $0344 180 ICBAH = $0345 190 ICPTL = $0346 200 ICPTH = $0347 210 ICBLL = $0348 220 ICBLH = $0349 230 ICAX1 = $034A 240 ICAX2 = $034B 245 SETVBV= $E45C 250 CIOV = $E456 255 exit = $E45F 300 *=$600 301 pha 302 txa 303 pha 304 tya 305 pha 308 ldy #88 312 sty yposp0 315 ; Lower ramtop 320 LDA ramtop 330 SBC #8 360 STA pm 370 sbc #1 374 sta codebase+1 376 sta ramtop 400 ; refresh screen memory 406 LDX #$60 ; THE SCREEN AGAIN 407 LDA #3 ; OPEN COMMAND 408 STA ICCOM,X ; IN COMMAND BYTE 409 LDA #NAME&255 ; NAME IS "S:" 410 STA ICBAL,X ; LOW BYTE 411 LDA #NAME/256 ; HIGH BYTE 412 STA ICBAH,X 413 LDA #0 ; GET GRAPHICS N 414 STA ICAX2,X ; GRAPHICS MODE 415 AND #$F0 ; GET HIGH 4 BITS 416 EOR #$10 ; FLIP HIGH BIT 417 ORA #$C ; READ OR WRITE 418 STA ICAX1,X ; N+16, N+32 ETC. 419 JSR CIOV ; SETUP GRAPHICS N 1000 ; mouse code loader 1300 LdX #$20 ;use ioCB2 1310 LdA #12 ; to close ioCB 1320 STA ICCOM ,X ;command byte 1330 JSR CIOV ;do the close 1340 ;**************************** 1350 LdX #$20 ;use IOCB2 again 1360 LdA #3 ;open command 1370 STA ICCOM ,X ;command byte 1380 LdA #4. ;open for read 1390 STA ICAX1 ,X into ICAX1 1400 LDA #0 ; 0 into ICAX2 is 1410 STA ICAX2 ,X ;just for insurance 1420 LDA #FILENAME&255 ;low byte of file 1430 STA ICBAL ,X ; name address 1440 LDA #FILENAME/256 ;high byte - file 1450 STA ICBAH ,X 1460 JSR CIOV 1470 ;****************************** 1480 LDX #$20 1490 LDA codebase ; low byte 1500 STA ICBAL,X 1510 LDA codebase+1 ; high byte 1520 STA ICBAH ,X 1530 LDA #$FF 1540 STA ICBLL ,X 1550 STA ICBLH,X 1560 LDA #5 1570 STA ICCOM,X 1580 JSR CIOV 1600 LDX #$20 1610 LDA #12 1620 STA ICCOM,X 1630 JSR CIOV 2000 ;Set up PMG 2425 LDA #62 ; single line res 2430 STA 559 ; 2440 LDA #3 ; Switch on PMGs 2450 STA gractl ; 53277 2460 lda PM 2470 STA pmbase ; 54279 2500 ; Clear PMG memory 2510 ldx #8 2512 lda pm 2514 sta vposp0+1 2520 clear 2530 lda #0 2535 ldy #$ff 2540 clear1 2550 iny 2560 sta (vposp0),y 2570 clc 2580 cpy #$ff 2590 bne clear1 2600 inc vposp0+1 2605 clc 2610 dex 2620 bne clear 2625 ; Load PMG image 2630 lda pm ; point pmbase to P0 memory 2635 sta pmbase 2640 clc 2650 adc #4 2660 sta vposp0 +1 2670 LDA #100 2680 STA xposp0 2685 sta hposp0 2710 LDY yposp0 2720 LDX #0 2730 CLC 2740 LOOP 2750 LDA PMG,X 2760 STA (vposp0),Y 2770 INY 2780 INX 2790 CPX #7 2800 BNE LOOP 3000 ; initialise vblank 3010 lda codebase ; low byte 3012 clc 3013 adc #6 ; skip file header bytes 3014 sta codebase 3016 ldy codebase 3020 ldx codebase+1 ; high byte 3030 lda #06 ; deferred vector 3040 jsr setvbv 3041 pla 3042 tay 3043 pla 3044 tax 3045 pla 3500 rts 7000 PMG 7010 .BYTE 16,24,28,30,31,20,2,2 7020 NAME .BYTE "S:",$9B 7030 FILENAME 7040 .BYTE "D:M.bin",$9B asm,#p: