1: / tape boot program to load and transfer 2: / the next item on the tape. 3: 4: / entry is made by jsr pc,*$0 5: / so return can be rts pc 6: 7: core = 24. 8: halt=0 9: .. = [core*2048.]-512. 10: start: 11: mov $..,sp 12: mov sp,r1 13: cmp pc,r1 14: bhis 2f 15: clr r0 16: cmp (r0),$407 17: bne 1f 18: mov $20,r0 19: 1: 20: mov (r0)+,(r1)+ 21: cmp r1,$core*2048. 22: blo 1b 23: jmp (sp) 24: 25: 2: 26: mov $1f,*$4 27: mov $340,*$6 28: tst *$htcs1 29: mov $htrew,rew 30: mov $htread,tread 31: br 2f 32: 1: 33: mov $tmread,tread 34: mov $tmrew,rew 35: 2: 36: jsr pc,*rew 37: mov $2,tapa 38: mov $-256.,wc 39: jsr pc,*tread 40: 41: mov *$2,r0 42: add *$4,r0 43: sub $512.,r0 44: asr r0 45: neg r0 46: bge 1f 47: 48: mov r0,wc 49: mov $3,tapa 50: mov $512.,ba 51: jsr pc,*tread 52: 1: 53: jsr pc,*rew 54: clr r0 55: mov $20,r1 56: mov sp,r4 57: clc 58: ror r4 59: 1: 60: mov (r1)+,(r0)+ 61: sob r4,1b 62: jsr pc,*$0 63: br . 64: 65: htcs1 = 172440 66: htba = 172444 67: htfc = 172446 68: htcs2 = 172450 69: htds = 172452 70: httc = 172472 71: 72: P800 = 1300 73: P1600 = 2300 74: PIP = 20000 75: RESET = 40 76: MOL = 10000 77: ERR = 40000 78: REV = 33 79: READ = 71 80: REW = 7 81: 82: htread: 83: 1: 84: mov ba,mtma 85: cmp mtapa,tapa 86: beq 1f 87: bhi 2f 88: jsr pc,hrrec 89: br 1b 90: 2: 91: jsr pc,htrew 92: br 1b 93: 1: 94: mov wc,r1 95: 1: 96: jsr pc,hrrec 97: add $256.,r1 98: bmi 1b 99: rts pc 100: 101: hrrec: 102: mov $htds,r0 103: tstb (r0) 104: bpl hrrec 105: bit $PIP,(r0) 106: bne hrrec 107: bit $MOL,(r0) 108: beq hrrec 109: mov $htfc,r0 110: mov $-512.,(r0) 111: mov mtma,-(r0) 112: mov $-256.,-(r0) 113: mov $READ,-(r0) 114: 1: 115: tstb (r0) 116: bpl 1b 117: bit $ERR,(r0) 118: bpl 1f 119: mov $RESET,*$htcs2 120: mov $-1,*$htfc 121: mov $REV,(r0) 122: br hrrec 123: 1: 124: add $512.,mtma 125: inc mtapa 126: rts pc 127: 128: htrew: 129: mov $RESET,*$htcs2 130: mov $P800,*$httc 131: mov $REW,*$htcs1 132: clr mtapa 133: rts pc 134: 135: 136: mts = 172520 137: mtc = 172522 138: mtbrc = 172524 139: mtcma = 172526 140: 141: tmread: 142: 1: 143: mov ba,mtma 144: cmp mtapa,tapa 145: beq 1f 146: bhi 2f 147: jsr pc,tmrrec 148: br 1b 149: 2: 150: jsr pc,tmrew 151: br 1b 152: 1: 153: mov wc,r1 154: 1: 155: jsr pc,tmrrec 156: add $256.,r1 157: bmi 1b 158: rts pc 159: 160: tmrrec: 161: mov $mts,r0 162: bit $2,(r0)+ / rewind status 163: bne tmrrec 164: tstb (r0)+ / cu ready 165: bpl tmrrec 166: inc r0 167: mov $-512.,(r0)+ / byte count 168: mov mtma,(r0) / bus address 169: mov $mtc,r0 170: mov $60003,(r0) / read 800bpi 171: 1: 172: tstb (r0) 173: bpl 1b 174: tst (r0)+ 175: bpl 1f 176: mov $-1,(r0) 177: mov $60013,-(r0) / backspace 178: br tmrrec 179: 1: 180: add $512.,mtma 181: inc mtapa 182: rts pc 183: 184: tmrew: 185: mov $60017,*$mtc 186: clr mtapa 187: rts pc 188: 189: mtapa: 0 190: mtma: 0 191: tapa: 0 192: wc: 0 193: ba: 0 194: rew: 0 195: tread: 0