From: Christopher Phillips (christopher_at_jaruth.com)
Date: 2004-07-27 20:36:24
Hi all. The following 5 lines of basic merrily destroys a disk directory as I'd expect. 1 OPEN 1,8,15,"I0" 2 OPEN 2,8,2,"#" 3 PRINT#1,"BP:2 0" 4 PRINT#2,"HI THERE" 5 PRINT#1,"U2:2 0 18 1" The attached asm, I would expect to behave the same way. Instead, HI THERE is printed to the console, and the drive complains of a syntax error. Any ideas? I've used the command channel from asm before, but never the data channel. #define poke(addr,val) .(:lda #val:sta addr:.) #define doke(addr,val) .(:lda #<val:sta addr:lda #>val:sta addr+1:.) ;KERNAL setlfs = $ffba setnam = $ffbd open = $ffc0 close = $ffc3 chkin = $ffc6 chkout = $ffc9 clrchn = $ffcc chrin = $ffcf chrout = $ffd2 chrouts = $e716 ;chrout to screen clall = $ffe7 unlsn = $ffae *= $0801-2 .word *+2 ; load address .byt $0b,$08,$0a,$00,$9e,$32,$30,$36,$31,0,0,0 main: jsr opendisk ; OPEN 1,8,15,"i0" jsr opendata ; OPEN 2,8,2,"#" jsr setbp ; PRINT#1,"BP:2 0: jsr printhi ; PRINT#2,"HI THERE" jsr writeblock ; PRINT#1,"U2:2 0 18 1" rts jsr clrchn jmp closedisk ;-------------------------------------------------; ; open 1,8,15,"I0" ; ;-------------------------------------------------; opendisk: lda #1 ; logical file number ldx #8 ; drive ldy #15 ; cmd channel jsr setlfs lda #2 ; strlen - should be 2 or 0 ldx #<i0str ldy #>i0str jsr setnam jmp open i0str: .byt "I0" ;-------------------------------------------------; ; open 2,8,2,"#" ; ;-------------------------------------------------; opendata: lda #1 ; logical file number ldx #8 ; drive ldy #15 ; cmd channel jsr setlfs lda #2 ; strlen - should be 2 or 0 ldx #<hashstr ldy #>hashstr jsr setnam jmp open hashstr: .byt "#" ;-------------------------------------------------; ; print#1,"bp:2 0: ;-------------------------------------------------; setbp .( poke(channel,1) lda #<cmds ldx #>cmds ldy #cmde-cmds jsr sendcmd rts cmds .byt "BP:2 0",13 cmde .) ;-------------------------------------------------; ; print#2,"hi there" ;-------------------------------------------------; printhi .( poke(channel,2) lda #<cmds ldx #>cmds ldy #cmde-cmds jsr sendcmd rts cmds .byt "HI THERE" cmde .) ;-------------------------------------------------; ; print#1,"U2:2 0 18 1" ;-------------------------------------------------; writeblock .( poke(channel,1) lda #<cmds ldx #>cmds ldy #cmde-cmds jsr sendcmd rts cmds .byt "U2:2 0 18 1" cmde .) channel .byt 1 ;-------------------------------------------------; ; send cmd to 'channel' ,ax is str, y is len ; ;-------------------------------------------------; sendcmd .( sta loop+1 stx loop+2 sty loop-1 ldx channel jsr chkout ldx #0 ldy #0 loop lda $ffff,x jsr chrout inx dey bne loop jmp unlsn .) ;-------------------------------------------------; ; close channels 1 and 2 ; ;-------------------------------------------------; closedisk: lda #2 jsr close lda #1 jmp close Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.