NEW AUTO 3,1 .LIST OFF *-------------------------------------- DLG.Open >STYA ZPPTR2 lda (ZPPTR2) tay lda #0 >SYSCALL getmem bcs .99 >STYA ZPPTR1 txa >STA.G hDLG ldy #0 .1 lda (ZPPTR2),y sta (ZPPTR1),y iny tya cmp (ZPPTR2) bne .1 jsr DLG.SetOrigin sty TmpByte jsr SCRN.GotoXY bcs .9 ldy #S.DLG.Title jsr DLG.DrawInvBar .99 bcs .9 jsr SCRN.LineBufInitNorm jsr DLG.VBarToLineBuf ldy #S.DLG.W lda (ZPPTR1),y dec tax lda #C.SPACE .3 jsr SCRN.ToLineBuf dex bne .3 jsr DLG.VBarToLineBuf ldy #S.DLG.H lda (ZPPTR1),y dec dec tax .4 phx inc TmpByte ldy #S.DLG.X lda (ZPPTR1),y tax ldy TmpByte jsr SCRN.GotoXY bcs .9 jsr SCRN.LineBufOut bcs .9 plx dex bne .4 inc TmpByte ldy #S.DLG.X lda (ZPPTR1),y tax ldy TmpByte jsr SCRN.GotoXY bcs .9 ldy #S.DLG.Status jsr DLG.DrawInvBar bcs .9 ldy #S.DLG.Ctrls .5 lda (ZPPTR1),y beq .8 phy tya jsr DLG.CTRL.Draw ply bcs .9 iny bra .5 .8 clc .9 rts *-------------------------------------- DLG.Run >SYSCALL getchar bcs .9 cmp #3 beq .8 cmp #C.CR beq .8 cmp #C.TAB bne DLG.Run jsr DLG.NextFocus bcc DLG.Run rts .8 clc .9 DLG.Run.RTS rts *-------------------------------------- DLG.NextFocus ldy #S.DLG.Focus lda (ZPPTR1),y get actual focused Ctrl pha save it... tax .1 inx next one .2 txa tay lda (ZPPTR1),y Get Ctrl bne .3 end of list, get first ldx #S.DLG.Ctrls bra .2 .3 tay lda (ZPPTR1),y Get Ctrl Type beq .1 LBL txa ldy #S.DLG.Focus sta (ZPPTR1),y pla get old focused phx save new focused jsr DLG.CTRL.Draw pla bcs DLG.Run.RTS jmp DLG.CTRL.Draw *-------------------------------------- DLG.Close ldy #S.DLG.H lda (ZPPTR1),y sta TmpCount ldy #S.DLG.Y lda (ZPPTR1),y sta TmpByte .1 >LDA.G ScreenY clc ldy #S.DLG.Y adc (ZPPTR1),y sta TmpIndex >LDA.G ScreenY+1 adc #0 sta TmpIndex+1 lda TmpIndex ldx TmpIndex+1 jsr BUF.GetLineAX bcs .8 lda TmpByte jsr SCRN.UpdateLineAtALenY inc TmpIndex bne .2 inc TmpIndex+1 .2 inc TmpByte dec TmpCount bne .1 .8 clc rts *-------------------------------------- DLG.CTRL.Draw sta TmpByte A=CtrlID tay lda (ZPPTR1),y Ctrl Definition tay lda (ZPPTR1),y Ctrl Type tax jmp (J.DLG.CTRL.Draw,x) *-------------------------------------- DLG.CTRL.Draw.LBL jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoXY bcs .9 ldy TmpByte CtrlID lda (ZPPTR1),y tay iny iny iny .1 lda (ZPPTR1),y beq .8 jsr SCRN.ToLineBuf iny bra .1 .8 jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.TB jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoXY bcs .9 ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny iny lda (ZPPTR1),y tay lda (pData),y >SYSCALL getmemptr >STYA ZPPTR2 ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .10 sec .10 lda #C.SPACE bcc .11 lda #'[' .11 jsr SCRN.ToLineBuf ldy #0 .1 lda (ZPPTR2),y beq .2 jsr SCRN.ToLineBuf iny bra .1 .2 tya tax ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny .3 txa eor (ZPPTR1),y MAXCHAR beq .8 lda #C.SPACE jsr SCRN.ToLineBuf inx bra .3 .8 lda #C.SPACE bcc .81 lda #']' .81 jsr SCRN.ToLineBuf jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.OL jsr SCRN.LineBufInitNorm jsr DLG.CTRL.GotoXY bcs .9 ldy TmpByte lda (ZPPTR1),y tay iny iny iny iny lda (ZPPTR1),y value sta TmpCount iny ldx #0 .1 lda #"(" jsr SCRN.ToLineBuf lda #"o" cpx TmpCount beq .2 lda #C.SPACE .2 jsr SCRN.ToLineBuf lda #")" jsr SCRN.ToLineBuf lda #C.SPACE jsr SCRN.ToLineBuf .3 lda (ZPPTR1),y beq .4 jsr SCRN.ToLineBuf iny bra .3 .4 lda #C.SPACE jsr SCRN.ToLineBuf inx iny lda (ZPPTR1),y bne .1 .8 jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Draw.BUT jsr SCRN.LineBufInitInv jsr DLG.CTRL.GotoXY bcs .9 ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .10 sec .10 ldy TmpByte CtrlID lda (ZPPTR1),y tay iny iny iny iny lda #C.SPACE bcc .11 lda #'[' .11 jsr SCRN.ToLineBuf .1 lda (ZPPTR1),y beq .8 jsr SCRN.ToLineBuf iny bra .1 .8 lda #C.SPACE bcc .81 lda #']' .81 jsr SCRN.ToLineBuf jmp SCRN.LineBufOut .9 rts *-------------------------------------- DLG.CTRL.Focus sta TmpByte A=CtrlID tay lda (ZPPTR1),y Ctrl Definition tay lda (ZPPTR1),y Ctrl Type tax jmp (J.DLG.CTRL.Focus,x) *-------------------------------------- DLG.CTRL.Focus.LBL DLG.CTRL.Focus.TB DLG.CTRL.Focus.OL DLG.CTRL.Focus.BUT clc rts *-------------------------------------- DLG.CTRL.GotoXY ldy TmpByte CtrlID lda (ZPPTR1),y tay iny skip Ctrl Type lda (ZPPTR1),y clc phy ldy #S.DLG.X adc (ZPPTR1),y tax ply iny lda (ZPPTR1),y clc ldy #S.DLG.Y adc (ZPPTR1),y tay jmp SCRN.GotoXY *-------------------------------------- DLG.SetOrigin ldy #S.DLG.X lda (ZPPTR1),y bne .1 >LDA.G ScreenW ldy #S.DLG.W sec sbc (ZPPTR1),y lsr ldy #S.DLG.X sta (ZPPTR1),y .1 tax ldy #S.DLG.Y lda (ZPPTR1),y bne .2 >LDA.G ViewPortHm1 ldy #S.DLG.H sec sbc (ZPPTR1),y lsr ldy #S.DLG.Y sta (ZPPTR1),y .2 tay rts *-------------------------------------- DLG.DrawInvBar phy jsr SCRN.LineBufInitInv ldy #S.DLG.W lda (ZPPTR1),y tax ply lda (ZPPTR1),y tay .1 lda (ZPPTR1),y beq .11 jsr SCRN.ToLineBuf dex iny bra .1 .11 lda #C.SPACE .2 jsr SCRN.ToLineBuf dex bne .2 ldy #0 .3 lda SEQ.NORM,y beq .4 jsr SCRN.ToLineBuf iny bra .3 .4 jsr DLG.VBarToLineBuf jmp SCRN.LineBufOut *-------------------------------------- DLG.VBarToLineBuf lda #C.SO jsr SCRN.ToLineBuf lda #'x' jsr SCRN.ToLineBuf lda #C.SI jmp SCRN.ToLineBuf *-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.DLG LOAD USR/SRC/BIN/EDIT.S ASM