Home » CEEFAX disks » telesoftware4.adl » 04-01-88/LOCK

04-01-88/LOCK

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware4.adl
Filename: 04-01-88/LOCK
Read OK:
File size: 0374 bytes
Load address: FFFF1900
Exec address: FFFF8023
File contents
   10REM: LOCK
   20DIM save 40
   30address=&70
   40eventv=&220
   50osargs=&FFDA
   60osbyte=&FFF4
   70oscli=&FFF7
   80FOR pass = 0 TO 2 STEP 2
   90P%=&C00
  100[OPT pass
  110LDA #0 
  120TAX 
  130TAY 
  140JSR osargs
  150CMP #3 
  160BCC tape
  170BRK
  180BRK
  190OPT FNequs("Type *TAPE and try again")
  200BRK
  210.tape
  220LDA #13
  230LDX #4
  240LDY #0
  250JSR osbyte \ Disable vert sync event
  260LDX #lock MOD 256
  270LDY #lock DIV 256
  280SEI
  290STX eventv
  300STY eventv+1
  310CLI
  320LDA #14
  330LDX #4
  340JSR osbyte \ Enable vert sync event
  350RTS
  360.lock 
  370PHP
  380CMP #4
  390BNE notfour
  400PHA 
  410LDA &3CA 
  420ORA #1 \ AND #&FE to unlock
  430STA &3CA 
  440PLA 
  450.notfour
  460PLP
  470RTS 
  480]
  490NEXT
  500INPUT'"Save filename = "filename$
  510IF filename$="" END
  520$save="SAVE "+filename$+" FFFF0C00+100"
  530X%=save MOD 256
  540Y%=save DIV 256
  550*OPT1,2
  560CALL oscli
  570*OPT1,0
  580END
  590DEFFNequs(string$)
  600$P%=string$
  610P%=P%+LEN(string$)
  620=pass

�: LOCK

� save 40
address=&70
(eventv=&220
2osargs=&FFDA
<osbyte=&FFF4
Foscli=&FFF7
P� pass = 0 � 2 � 2
ZP%=&C00
d
[OPT pass
nLDA #0 
xTAX 
�TAY 
�JSR osargs
�CMP #3 
�BCC tape
�BRK
�BRK
�)OPT �equs("Type *TAPE and try again")
�BRK
�	.tape
�LDA #13
�
LDX #4
�
LDY #0
�(JSR osbyte \ Disable vert sync event
LDX #lock � 256
LDY #lock � 256
SEI
"STX eventv
,STY eventv+1
6CLI
@LDA #14
J
LDX #4
T'JSR osbyte \ Enable vert sync event
^RTS
h
.lock 
rPHP
|
CMP #4
�BNE notfour
�PHA 
�
LDA &3CA 
��A #1 \ � #&FE to unlock
�
STA &3CA 
�PLA 
�.notfour
�PLP
�RTS 
�]
��
�!�'"Save filename = "filename$
�� filename$="" �
+$save="SAVE "+filename$+" FFFF0C00+100"
X%=save � 256
Y%=save � 256
&*OPT1,2
0� oscli
:*OPT1,0
D�
Nݤequs(string$)
X$P%=string$
bP%=P%+�(string$)
l	=pass
�
00000000  0d 00 0a 0b f4 3a 20 4c  4f 43 4b 0d 00 14 0d de  |.....: LOCK.....|
00000010  20 73 61 76 65 20 34 30  0d 00 1e 0f 61 64 64 72  | save 40....addr|
00000020  65 73 73 3d 26 37 30 0d  00 28 0f 65 76 65 6e 74  |ess=&70..(.event|
00000030  76 3d 26 32 32 30 0d 00  32 10 6f 73 61 72 67 73  |v=&220..2.osargs|
00000040  3d 26 46 46 44 41 0d 00  3c 10 6f 73 62 79 74 65  |=&FFDA..<.osbyte|
00000050  3d 26 46 46 46 34 0d 00  46 0f 6f 73 63 6c 69 3d  |=&FFF4..F.oscli=|
00000060  26 46 46 46 37 0d 00 50  16 e3 20 70 61 73 73 20  |&FFF7..P.. pass |
00000070  3d 20 30 20 b8 20 32 20  88 20 32 0d 00 5a 0b 50  |= 0 . 2 . 2..Z.P|
00000080  25 3d 26 43 30 30 0d 00  64 0d 5b 4f 50 54 20 70  |%=&C00..d.[OPT p|
00000090  61 73 73 0d 00 6e 0b 4c  44 41 20 23 30 20 0d 00  |ass..n.LDA #0 ..|
000000a0  78 08 54 41 58 20 0d 00  82 08 54 41 59 20 0d 00  |x.TAX ....TAY ..|
000000b0  8c 0e 4a 53 52 20 6f 73  61 72 67 73 0d 00 96 0b  |..JSR osargs....|
000000c0  43 4d 50 20 23 33 20 0d  00 a0 0c 42 43 43 20 74  |CMP #3 ....BCC t|
000000d0  61 70 65 0d 00 aa 07 42  52 4b 0d 00 b4 07 42 52  |ape....BRK....BR|
000000e0  4b 0d 00 be 29 4f 50 54  20 a4 65 71 75 73 28 22  |K...)OPT .equs("|
000000f0  54 79 70 65 20 2a 54 41  50 45 20 61 6e 64 20 74  |Type *TAPE and t|
00000100  72 79 20 61 67 61 69 6e  22 29 0d 00 c8 07 42 52  |ry again")....BR|
00000110  4b 0d 00 d2 09 2e 74 61  70 65 0d 00 dc 0b 4c 44  |K.....tape....LD|
00000120  41 20 23 31 33 0d 00 e6  0a 4c 44 58 20 23 34 0d  |A #13....LDX #4.|
00000130  00 f0 0a 4c 44 59 20 23  30 0d 00 fa 28 4a 53 52  |...LDY #0...(JSR|
00000140  20 6f 73 62 79 74 65 20  5c 20 44 69 73 61 62 6c  | osbyte \ Disabl|
00000150  65 20 76 65 72 74 20 73  79 6e 63 20 65 76 65 6e  |e vert sync even|
00000160  74 0d 01 04 13 4c 44 58  20 23 6c 6f 63 6b 20 83  |t....LDX #lock .|
00000170  20 32 35 36 0d 01 0e 13  4c 44 59 20 23 6c 6f 63  | 256....LDY #loc|
00000180  6b 20 81 20 32 35 36 0d  01 18 07 53 45 49 0d 01  |k . 256....SEI..|
00000190  22 0e 53 54 58 20 65 76  65 6e 74 76 0d 01 2c 10  |".STX eventv..,.|
000001a0  53 54 59 20 65 76 65 6e  74 76 2b 31 0d 01 36 07  |STY eventv+1..6.|
000001b0  43 4c 49 0d 01 40 0b 4c  44 41 20 23 31 34 0d 01  |CLI..@.LDA #14..|
000001c0  4a 0a 4c 44 58 20 23 34  0d 01 54 27 4a 53 52 20  |J.LDX #4..T'JSR |
000001d0  6f 73 62 79 74 65 20 5c  20 45 6e 61 62 6c 65 20  |osbyte \ Enable |
000001e0  76 65 72 74 20 73 79 6e  63 20 65 76 65 6e 74 0d  |vert sync event.|
000001f0  01 5e 07 52 54 53 0d 01  68 0a 2e 6c 6f 63 6b 20  |.^.RTS..h..lock |
00000200  0d 01 72 07 50 48 50 0d  01 7c 0a 43 4d 50 20 23  |..r.PHP..|.CMP #|
00000210  34 0d 01 86 0f 42 4e 45  20 6e 6f 74 66 6f 75 72  |4....BNE notfour|
00000220  0d 01 90 08 50 48 41 20  0d 01 9a 0d 4c 44 41 20  |....PHA ....LDA |
00000230  26 33 43 41 20 0d 01 a4  1c 84 41 20 23 31 20 5c  |&3CA .....A #1 \|
00000240  20 80 20 23 26 46 45 20  74 6f 20 75 6e 6c 6f 63  | . #&FE to unloc|
00000250  6b 0d 01 ae 0d 53 54 41  20 26 33 43 41 20 0d 01  |k....STA &3CA ..|
00000260  b8 08 50 4c 41 20 0d 01  c2 0c 2e 6e 6f 74 66 6f  |..PLA .....notfo|
00000270  75 72 0d 01 cc 07 50 4c  50 0d 01 d6 08 52 54 53  |ur....PLP....RTS|
00000280  20 0d 01 e0 05 5d 0d 01  ea 05 ed 0d 01 f4 21 e8  | ....]........!.|
00000290  27 22 53 61 76 65 20 66  69 6c 65 6e 61 6d 65 20  |'"Save filename |
000002a0  3d 20 22 66 69 6c 65 6e  61 6d 65 24 0d 01 fe 14  |= "filename$....|
000002b0  e7 20 66 69 6c 65 6e 61  6d 65 24 3d 22 22 20 e0  |. filename$="" .|
000002c0  0d 02 08 2b 24 73 61 76  65 3d 22 53 41 56 45 20  |...+$save="SAVE |
000002d0  22 2b 66 69 6c 65 6e 61  6d 65 24 2b 22 20 46 46  |"+filename$+" FF|
000002e0  46 46 30 43 30 30 2b 31  30 30 22 0d 02 12 11 58  |FF0C00+100"....X|
000002f0  25 3d 73 61 76 65 20 83  20 32 35 36 0d 02 1c 11  |%=save . 256....|
00000300  59 25 3d 73 61 76 65 20  81 20 32 35 36 0d 02 26  |Y%=save . 256..&|
00000310  0b 2a 4f 50 54 31 2c 32  0d 02 30 0b d6 20 6f 73  |.*OPT1,2..0.. os|
00000320  63 6c 69 0d 02 3a 0b 2a  4f 50 54 31 2c 30 0d 02  |cli..:.*OPT1,0..|
00000330  44 05 e0 0d 02 4e 13 dd  a4 65 71 75 73 28 73 74  |D....N...equs(st|
00000340  72 69 6e 67 24 29 0d 02  58 0f 24 50 25 3d 73 74  |ring$)..X.$P%=st|
00000350  72 69 6e 67 24 0d 02 62  14 50 25 3d 50 25 2b a9  |ring$..b.P%=P%+.|
00000360  28 73 74 72 69 6e 67 24  29 0d 02 6c 09 3d 70 61  |(string$)..l.=pa|
00000370  73 73 0d ff                                       |ss..|
00000374
04-01-88/LOCK.m0
04-01-88/LOCK.m1
04-01-88/LOCK.m2
04-01-88/LOCK.m4
04-01-88/LOCK.m5