; **** Password Print **** base equ 5800h suspend equ 0109h ; Block Voluntarily io equ 0130h ; Screenhandler print equ 0187h ; (HL) -> Printer mark equ 0190h ; Mark Escape Point pcheck equ 01a8h ; Z=Access Code & Password at (HL) correct ; nul equ 00h esc equ 1bh time equ 7fh s equ 80h ; ; Z80 OP Codes-- djnz equ 00010h ldir equ 0b0edh ; ; Inter-Task Communication-- label equ 01c2h ; -> spool Diskette Label ctl equ 01d0h ; System Control Block tstate equ ctl+18 ; B1: Buffer Area in use ; org base bwait call suspend !lxi h,tstate !dw 04ecbh ; BIT 1,(HL) jnz bwait !dw 0cecbh ; SET 1,(HL) ; block calls lhld label !lxi d,53 !dad d !lxi d,hd0a !lxi b,75 !dw ldir lxi h,hd0 !call print !lxi h,hd1 !call print call mark !jc done !lxi h,pt1 !call io lxi h,pt2 !call io !call bin !shld val !shld max ; get Low lxi h,pt3 !call io !call bin !shld max ; get High xchg !lhld val !ora a !dw 052edh ; SBC HL,DE ; Low - High jnc $+7 !xchg !shld max loop call line !lhld val !lxi d,10 !dad d !shld val xchg !lhld max !ora a !dw 052edh ; SBC HL,DE jnc loop done lxi h,tstate !dw 08ecbh ; RES 1,(HL) ; enable calls ret ; line lhld val !lxi d,ln1+3 !call bd5 mvi a,'0' !sta ln1+7 !lxi h,ln1+10 !shld ptr lp0 lxi h,ln1+3 !call pcheck lhld ptr !xchg !lxi b,5 !dw ldir xchg !inx h !inx h !shld ptr lda ln1+7 !inr a !sta ln1+7 !cpi '9'+1 !jnz lp0 mvi a,'0' !sta ln1+7 !lxi h,ln1 !jmp print ; ; HL -> (DE) 5xASCII-- bd5 lxi b,10000 !call digit !lxi b,1000 !call digit bd3 lxi b,100 !call digit !lxi b,10 !call digit mvi a,'0' !ora l !stax d !inx d !ret digit xra a di1 inr a !dw 042edh ; SBC HL,BC jnc di1 !dad b !adi '0'-1 !stax d !inx d !ret ; bin lxi h,0 !ora a !rz !mov b,a ; input -> HL binary bn1 ldax d !inx d !call x10 !dw djnz+(bn1-$-2)*256 ret ; Convert A to binary, multiply HL by 10 and add A-- x10 push d !dad h !mov d,h !mov e,l !dad h !dad h !dad d ani 0fh !mvi d,0 !mov e,a !dad d !pop d !ret ; pt1 db 4,0,0e0h,'Password Table Print',s db 9,34,'[ESC] cancel',nul pt2 db esc,5,8,20,'from Access Code ',nul pt3 db esc,5,8,43,'upto ',nul hd1 db s+2,' 0 1 2 3 4 5 ' db ' 6 7 8 9',nul ln1 db s+1,' 12345 00000 11111 22222 33333 44444 55555' db ' 66666 77777 88888 99999',nul hd0 db s+2,'Password Table: ',time,' ' hd0a ds 80 val ds 2 ; Current Access Code max ds 2 ; High Access Code ptr ds 2 end base