;:poke56,62:clr ;:sys36864 ;.opt oo *= $c000 vic =$d000 cint =65409 strout =$ab1e ptr =2040 tmp =2 irqvec =$314 timer =$dc05 norm =64 fast =2 slow =50 clrlin =59903 flight =155 get =65508 irqfrq =9 system =7 ; 64 / irqfrq outirq =$ea7e colpos =56263 joy =56320 joyrep =10 stacks1 =$ca00 stacks2 =$cb00 stacks3 =$cc00 stacki =$cd00 key =198 reset =$fffc axout =$bdcd zgp =1201 scn =181 jmp start grbit .byt 1,2,4,8,$10,$20,$40,$80 grbit2 .byt 1,3,7,15,31,63,127,255 mask .byt 13 .byte "\x93\x1cO\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7P" .byt 13 .byte "\xb4\x08\x9a die tuerme von hanoi - intel. v 1.2 \x1c\xaa" .byt 13 .byte "L\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xba" brk turm1 .byte "\x13\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x97 \x12 \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d" .byte " \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x9d\x9d\x9d\x9d\x9d\x9d \x91\x92\xa4\xa4\x1d\xa4\xa4\x9d\x9d\x9d\x9d\x9d\x12\x11 1 " .byte " \x91\x92\xa4\xa4\x1d\xa4\xa4\x9d\x9d\x9d\x9d\x9d\x12\x11 2 \x91\x92\xa4\xa4\x1d\xa4\xa4\x9d\x9d\x9d\x9d\x9d\x12\x11 3 " brk turm2 .byte " \x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x91 \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x9d\x9d\x9d\x9d\x9d\x9d" .byte "\x9d\x9d\x9d\x9d\x9d\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d \x11\x9d " .byt 13 .byte "\x12 \x9d\x9d\x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x96\x92N\x12\x97\x9d\x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91\x9d \x91" .byte "\x9d \x92\xa9" brk copr .byte "\x13\x11\x11\x11\x11\x1e(c)opyright n. heusler, nh-280388-arr" .byt 13 .byte "ein\x81 nss\x1e programm alle rechte vorbeh." .byt 13 .byte "\x11\x9ewieviele etagen ? (\x051\x9e-\x058\x9e)" brk balken .byte "\x13\x11\x11\x11\x9a\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4" .byt 13 .byte "\x12 zug : " .byt 13 .byte "\x12(a) automatik nss88" brk goto .byte "\x13\x11\x11\x11\x11\x12\x9a" brk texte .byte "\x09\x08\x12 \x1a\x15\x07 ?" .byte " " .byte "\x01\x15" .byt 20,15,13,1,20 .byte "\x09\x0b" .byte "\x07\x05\x13\x03\x08\x01\x06\x06" .byt 20 vont .byte "\x16\x0f\x0e\xa0" nach .byte "\x0e\x01\x03\x08" zuop .byt 13 .byte "\x12zuege ueber optimum: " brk autotxt .byte "\x13\x11\x11\x11\x11\x12\x9a\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d " .byt 13 .byte "\x12rechenebene: " brk nomal .byte "\x13\x11\x11\x11\x11\x12\x9a\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1dnochmal ?" brk tu .byt %00000000,%01111110,%00000000 .byt %00000000,%11111111,%00000000 .byt %00000001,%11111111,%10000000 .byt %00000011,%11111111,%11000000 .byt %00000111,%11111111,%11100000 .byt %00001111,%11111111,%11110000 .byt %00011111,%11111111,%11111000 .byt %00111111,%11111111,%11111100 code .byt 78,78,77 coltab .byt 0,11,12,15,1,15,12,11 mul11 .byt 0,11,22 zehtab .word 10000,1000,100,10,1 task brk c brk d brk merk brk job brk a brk b brk step brk anz1 brk anz2 brk anz3 brk num brk tim brk colptr brk cnt1 brk cnt2 brk koord brk sel brk cnt3 brk joyflg brk zugflg brk zug .word 0 stackptr brk s1 brk s2 brk s3 brk pos1 brk i brk auto brk ebeflg brk yk .byt 234,226,218,210,202,194,186,178 xk .byt 68,156,244 newirq jsr blink dec cnt1 bne noc1 lda tim sta cnt1 jsr taskc jsr speed jsr deck jsr jobc jsr hebel jsr zugnr jsr ebene noc1 dec cnt2 bne offirq lda #system sta cnt2 lda joyflg beq qoldirq jsr stick lda #12 jsr set oldirq jmp 0 offirq jmp outirq qoldirq lda #11 ldx #39 qo sta 56256,x dex bpl qo bmi oldirq zugnr lda zugflg beq nozug lda zug pha lda zug+1 pha lda #<1218 ldy #>1218 sta scn sty scn+1 ldx #0 com2 ldy #"0"+128 com1 lda zug+1 cmp zehtab+1,x bcc com3 beq com4 com5 lda zug sbc zehtab,x sta zug lda zug+1 sbc zehtab+1,x sta zug+1 iny bne com1 com4 lda zug cmp zehtab,x bcs com5 com3 pha tya ldy #0 sta (scn),y inc scn pla inx inx cpx #10 bcc com2 pla sta zug+1 pla sta zug nozug rts ebene lda ebeflg beq nozug lda stackptr clc adc #177 sta 1237 rts taskc lda task beq notask cmp #$80 bne no80 lda c asl tay lda d cmp vic+1,y bne nod lda #0 sta task rts nod php lda vic+1,y adc #0 plp sbc #0 sta vic+1,y notask rts no80 lda c asl tay lda d cmp vic,y bne nodd lda #0 sta task rts nodd php lda vic,y adc #0 plp sbc #0 sta vic,y rts speed lda task beq okay lda #fast .byt $2c okay lda #slow sta tim rts deck ldy #7 ldx #15 lda #0 sta merk dk lda vic,x cmp #flight bne no155 lda merk ora grbit,y sta merk no155 dex dex dey bpl dk lda merk sta vic+27 rts jobc lda task bne notask lda job beq notask cmp #$80 bne no128 lda step cmp #2 bcc step1 inc anz1 joboff lda #0 sta step sta job rts step1 inc step tax bne weiter lda xk sta d lda a tax sta c asl tay lda #0 sta vic,y lda grbit,x sta vic+27 lda #flight sta vic+1,y lda #$90 sta task rts weiter ldx anz1 landing lda yk,x sta d lda #$80 sta task rts no128 lda step bne active ldx a lda xk,x sta merk ldy #0 loop1 tya asl tax lda merk cmp vic,x beq fund iny cpy num bcc loop1 bcs joboff fund inc step lda #flight sta d sty c ldx a dec anz1,x lda #128 settsk sta task rts active inc step cmp #2 bcs act2 ldx b lda xk,x sta d lda #$90 bne settsk act2 beq act3 ldx b inc anz1,x jmp joboff act3 ldx b lda anz1,x tax bpl landing hebel lda job cmp #$80 bne qnotask ldx step lda code,x sta 1785 rts qnotask jmp notask blink ldx colptr dec colptr bpl oktab ldx #7 stx colptr oktab lda coltab,x ldx num bli sta vic+39,x dex bpl bli rts stickok lda joy and #4 bne no4 lda sel beq no4 lda #11 jsr set dec sel no4 lda joy and #8 bne no8 lda sel cmp #2 bcs no8 lda #11 jsr set inc sel no8 rts set ldx sel ldy mul11,x sta colpos,y sta colpos+1,y sta colpos+2,y rts stick lda joy and #12 cmp #12 beq nopress dec cnt3 bne no8 lda #joyrep sta cnt3 bne stickok nopress lda #1 sta cnt3 rts rollin lda num sta a rlin dec a lda #128 sta job jsr waitj lda a bne rlin rts waitj lda job bne waitj rts woi lda i asl tax lda vic,x ldx #2 woii cmp xk,x beq alsoda dex bpl woii alsoda rts weroben lda xk,x sta koord ldy #0 loop1a tya asl tax lda koord cmp vic,x beq fund1 iny cpy num bcc loop1a ldy #-1 fund1 rts makezug inc zug bne nocy inc zug+1 nocy lda s1 sta a lda s3 sta b lda #$90 sta job jmp waitj whichn3 lda num asl tax ldy num lda xk+2 wn3 dex dex dey cmp vic,x beq wn3 lda vic,x cmp xk+1 beq tu1 lda #0 .byt $2c tu1 lda #1 sta s1 eor #1 sta s2 sty i lda #2 sta s3 rts getturm lda #1 sta joyflg waitfire jsr get cmp #"a" beq autoon lda joy and #16 bne waitfire lsr joyflg lda sel rts autoon inc auto lsr joyflg lda #-1 rts textout sta add+1 asl asl asl add adc #0 pha lda #goto jsr strout pla tax ldy #0 puttxt lda texte,x ora #128 sta 1184,y inx iny cpy #9 bcc puttxt rts getpair lda #0 jsr textout get2 lda #160 sta zgp sta zgp+1 sta zgp+2 jsr waitll ldx #3 t1o lda vont,x ora #128 sta 1195,x dex bpl t1o jsr getturm bmi autoon2 sta s1 clc adc #177 sta zgp lda #173 sta zgp+1 jsr waitll ldx #3 t2o lda nach,x ora #128 sta 1195,x dex bpl t2o jsr getturm bmi autoon2 cmp s1 beq get2 sta s3 clc adc #177 sta zgp+2 lda #160 ldx #3 clrvn sta 1195,x dex bpl clrvn lda #1 jsr textout clc rts autoon2 sec rts waitll jsr tti lda joy and #16 beq waitll tti ldy #0 ldx #40 time dey bne time dex bne time rts prueffert ldx num dex ldy #0 lda xk+2 pru cmp vic,y bne fall iny iny dex bpl pru rts fall lda #0 rts start jsr cint lda #0 sta anz1 sta anz2 sta anz3 sta step sta job sta task sta sel sta joyflg sta zugflg sta zug sta zug+1 sta auto sta ebeflg sta colptr sta vic+32 sta vic+33 lda #mask jsr strout lda #copr jsr strout lda #turm1 jsr strout lda #turm2 jsr strout lda #0 tay clrspr sta 15872,y sta 16128,y iny bne clrspr dey sty vic+29 ldy #7 ldx #255 stx tmp setspr lda tmp sta ptr,y dec tmp dey bpl setspr lda #62 sta tmp+1 iny sty tmp ldy #0 lda #7 sta tmp+3 spr1 sty tmp+2 tya asl adc tmp+2 tax ldy #0 spr2 lda tu,x sta (tmp),y iny inx cpy #3 bcc spr2 lda tmp clc adc #3 sta tmp bcc spr3 inc tmp+1 spr3 ldy tmp+2 dec tmp+3 bne spr1 lda #7 sta tmp+3 lda tmp adc #43 sta tmp bcc spr4 inc tmp+1 spr4 iny cpy #8 bcc spr1 setirq sei lda irqvec+1 cmp #>newirq beq sat sta oldirq+2 lda irqvec sta oldirq+1 lda #newirq sta irqvec+1 sat lda #1 sta cnt1 sta cnt2 sta cnt3 lda #irqfrq sta timer cli getnum jsr get cmp #"1" bcc getnum cmp #"9" bcs getnum sbc #"0"-1 sta num ldx #7 jsr clrlin ldx num lda grbit2-1,x sta vic+21 jsr rollin ldx #5 jsr clrlin lda #balken jsr strout inc zugflg zuglp jsr prueffert bmi knack false jsr getpair bcs automatik ldx s1 jsr weroben sty pos1 ldx s3 jsr weroben cpy pos1 bcc false beq false jsr makezug jmp zuglp knack lsr ebeflg lda #3 jsr textout lda #zuop jsr strout ldx num lda zug sec sbc grbit2-1,x tax lda zug+1 sbc #0 jsr axout lda #nomal jsr strout lda #0 sta key getjn jsr get cmp #"j" bne noja jmp start noja cmp #"n" bne getjn jmp (reset) automatik lda #2 jsr textout inc ebeflg lda #autotxt jsr strout jsr whichn3 lda #0 sta stackptr jsr move jmp zuglp move lda i bne notone lda s1 cmp s3 bne anders rts anders jmp makezug notone lda s1 cmp s3 beq same ldx s3 jsr weroben cpy i bcc error ldx s1 jsr weroben cpy i bne error right jsr makezug same dec i jsr woi stx s1 lda #3 sec sbc s3 sbc s1 sta s2 jmp move error inc stackptr ldx stackptr lda i sta stacki,x lda s1 sta stacks1,x lda s2 sta stacks2,x lda s3 sta stacks3,x dec i lda s2 sta s3 jsr woi stx s1 lda #3 sec sbc s3 sbc s1 sta s2 jsr move ldx stackptr dec stackptr lda stacki,x sta i lda stacks1,x sta s1 lda stacks2,x sta s2 lda stacks3,x sta s3 jmp right