.nolist #include "ti83plus.inc" .list .org $9D93 .db t2ByteTok, tAsmCmp ld hl, iftxt bcall(_PutS) ld hl, ProgName call GetString bcall(_NewLine) ld a, c or a ret z again: ld hl, ProgVar bcall(_Mov9ToOP1) bcall(_ChkFindSym) jr nc, ifok ld hl, errnotexist bcall(_PutS) ret ifok: ld a, b or a jr z, ifok2 ld (isarc), a bcall(_Arc_Unarc) jr again ifok2: ; replace ex de, hl ld a, (hl) ld c, a inc hl ld a, (hl) ld b, a ld de, AppBackupScreen replaceloop: inc hl dec bc ld a, (hl) cp tLT jr z, testbalise cp tEnter jr nz, replacetok push de dec de ld a, (de) pop de cp $FB jr nz, replaceenter ld a, (isalreadydone) or a jr z, notalreadydone xor a ld (isalreadydone), a jr replaceenter notalreadydone: xor a inc a ld (isalreadydone), a jr endreplace isalreadydone: .db 0 replaceenter xor a ld (de), a inc de jr endreplace testbalise: inc hl inc hl ld a, (hl) cp tGT jr z, isbaliseok dec hl dec hl ld a, (hl) jr replacetok isbaliseok: dec hl dec bc ld a, (hl) cp tC jr z, balisecok cp tI jr z, baliseiok dec hl inc bc ld a, (hl) jr replacetok balisecok: ld a, (isc) or a jr z, cfirst xor a ld (de), a inc de ld a, $FB ld (de), a inc de xor a ld (isc), a jr baliseok cfirst: ld a, $FB ld (de), a inc de xor a inc a ld (isc), a jr baliseok baliseiok: ld a, $FC ld (de), a inc de baliseok: inc hl dec bc jr endreplace isc: .db 0 isarc: .db 0 replacetok: ld (OP1), a cp t2ByteTok jr z, replace2tok cp tVarStrng jr z, replace2tok cp tVarMat jr c, replace1tok cp tVarSys + 1 jr nc, replace1tok replace2tok: inc hl dec bc ld a, (hl) ld (OP1+1), a replace1tok: push hl push bc push de ld hl, OP1 bcall(_Get_Tok_Strng) ld hl, OP3 ld c, a xor a ld b, a pop de ldir pop bc pop hl endreplace: ld a, b add a, c or a jp nz, replaceloop next: ex de, hl xor a ld de, AppBackupScreen sbc hl, de ld b, h ld c, l push bc ; of ld a, (isarc) or a jr z, ofok ld hl, ProgVar bcall(_Mov9ToOP1) bcall(_ChkFindSym) bcall(_Arc_Unarc) ofok: ld hl, oftxt bcall(_PutS) ld hl, ProgName call GetString bcall(_NewLine) ld a, c or a ret z ld hl, ProgVar bcall(_Mov9ToOP1) bcall(_ChkFindSym) jr c, IsOkay push af push bc push de push hl ld hl, errexist bcall(_PutS) bcall(_NewLine) ld hl, errexist2 bcall(_PutS) bcall(_NewLine) eegk: bcall(_GetKey) cp kEnter jr z, erase cp kClear jr z, quit jr eegk quit: pop hl pop de pop bc pop af pop bc bcall(_NewLine) ret erase: pop hl pop de pop bc pop af bcall(_DelVarArc) IsOkay: pop hl push hl ld de, ProgFooterEnd - ProgStart add hl, de bcall(_CreateProtProg) inc de inc de ld hl, ProgStart ld bc, ProgHeaderEnd - ProgStart ldir ld hl, AppBackupScreen pop bc ldir ld hl, ProgFooterStart ld bc, ProgFooterEnd - ProgFooterStart ldir ret iftxt: .db "if=", 0 oftxt: .db "of=", 0 errnotexist: .db "Prgm non trouvé", 0 errexist: .db "Prgm existant.", 0 errexist2: .db "Remplacer ?", 0 ProgVar: .db ProgObj ProgName: .db 0,0,0,0,0,0,0,0 ProgStart: .db t2ByteTok, tAsmCmp ProgHeaderStart: .db $18, $04, $44, $4F, $43, $C5, $EF, $20, $4A, $AF .db $32, $D3, $84, $EF, $C5, $41, $21, $F0, $9D, $11 .db $78, $84, $01, $06, $00, $ED, $B0, $EF, $F1, $42 .db $38, $2B, $78, $B7, $28, $07, $EF, $D8, $4F, $3E .db $01, $18, $DF, $21, $07, $00, $19, $11, $EC, $86 .db $01, $5A, $02, $ED, $B0, $11, $72, $98, $01, $00 .db $03, $ED, $B0, $CD, $EC, $86, $3A, $D3, $84, $B7 .db $C8, $EF, $D8, $4F, $C9, $21, $00, $1D, $22, $D7 .db $86, $21, $F1, $9D, $EF, $61, $45, $EF, $72, $49 .db $C9, $06, "TIDOC n'est pas install" .db $96, $00 ProgHeaderEnd: ProgFooterStart: .db $00, $00, $FF ProgFooterEnd: ; in hl=buffer ; out bc=size GetString: set CurAble, (iy + CurFlags) set CurOn, (iy + CurFlags) push hl push hl ld bc, 0 gsKeyLoop: push bc bcall(_GetKey) pop bc cp kQuit jr z, gsCancel cp kExtendEcho2 jr z, gsKeyLoop cp kDel jr z, gsDel cp kEnter jr z, gsEnd ld b, a ld a, c cp 8 ; limite jr z, gsKeyLoop ld a, b sub k0 jr c, gsKeyLoop cp kCapZ - k0 + 1 jr nc, gsKeyLoop ld hl, KeyMapCapNum ld d, 0 ld e, a add hl, de ld a, (hl) or a jr z, gsKeyLoop pop hl ld (hl), a inc hl ld (hl), 0 push hl inc bc bcall(_PutC) jr gsKeyLoop gsDel: pop hl dec hl ld (hl), 0 push hl ld a, c or a jr z, gsKeyLoop dec bc ld a, ' ' bcall(_PutMap) ld a, (CurCol) dec a ld (CurCol), a jp p, gsDelOk ld a, 15 ld (CurCol), a ld a, (CurRow) dec a ld (CurRow), a gsDelOk: ld a, ' ' bcall(_PutMap) jp gsKeyLoop gsCancel: ld bc, 0 gsEnd: pop hl pop hl res CurAble, (iy + CurFlags) res CurOn, (iy + CurFlags) ld a, ' ' bcall(_PutMap) ret KeyMapCapNum: .db "0123456789", 0, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .end end